将GitHub数据保存到SQLite数据库
项目描述
github-to-sqlite
将GitHub数据保存到SQLite数据库。
- 演示
- 如何安装
- 认证
- 获取仓库的问题
- 获取仓库的拉取请求
- 获取仓库的问题评论
- 获取仓库的提交
- 获取仓库的发布
- 获取仓库的标签
- 获取仓库的贡献者
- 获取用户或组织所属的仓库
- 获取特定仓库
- 获取被用户星标的仓库
- 获取为特定仓库星标过的用户
- 获取GitHub Actions工作流程
- 抓取仓库的依赖项
- 获取表情符号
- 进行认证API调用
演示
https://github-to-sqlite.dogsheep.net/托管了一个由运行此工具创建的数据库的Datasette演示,包括Dogsheep GitHub组织中的所有仓库,以及datasette和sqlite-utils仓库。
如何安装
$ pip install github-to-sqlite
认证
创建GitHub个人访问令牌:https://github.com/settings/tokens
运行此命令并粘贴您的新令牌
$ github-to-sqlite auth
这将创建一个名为auth.json
的文件,位于您的当前目录中,包含所需值。要将文件保存到不同的路径或文件名,请使用--auth=myauth.json
选项。
作为使用auth.json
文件的替代方案,您可以将访问令牌添加到名为GITHUB_TOKEN
的环境变量中。
获取仓库的问题
issues
命令检索指定仓库的所有问题。
$ github-to-sqlite issues github.db simonw/datasette
如果存在 auth.json
文件,则会使用该文件中的令牌。对于公共仓库,它可以在不进行身份验证的情况下工作,但您应该知道 GitHub 对未经验证的请求有严格的基于 IP 的速率限制。
您可以使用 -a
来指定 auth.json
的不同位置。
$ github-to-sqlite issues github.db simonw/datasette -a /path/to/auth.json
您可以使用 --issue
选项一次或多次来加载特定的 issue。
$ github-to-sqlite issues github.db simonw/datasette --issue=1
示例:[issue 表](https://github-to-sqlite.dogsheep.net/github/issues)。
获取仓库的拉取请求
虽然拉取请求是一种 issue 类型,但通过单独提取它们,您可以获得有关拉取请求的更多信息。例如,拉取请求是否已合并以及何时合并。
遵循 issue API,pull-requests
命令检索属于指定仓库的所有拉取请求。
$ github-to-sqlite pull-requests github.db simonw/datasette
您可以使用 --pull-request
选项一次或多次来加载特定的拉取请求。
$ github-to-sqlite pull-requests github.db simonw/datasette --pull-request=81
请注意,pull_requests
表上的 merged_by
列将仅对于使用 --pull-request
选项加载的拉取请求进行填充 - GitHub API 不会为批量加载的拉取请求返回此字段。
您可以使用 --state
选项仅加载处于特定状态的拉取请求。
$ github-to-sqlite pull-requests --state=open github.db simonw/datasette
您可以使用 --org
选项加载整个组织(或多个组织)的拉取请求。
$ github-to-sqlite pull-requests --state=open --org=psf --org=python github.db
您可以使用搜索查询来查找拉取请求。请注意,最多只能加载 1000 个(这是 GitHub API 的限制),并且某些数据可能缺失(基础和头部 SHA)。当使用搜索时,其他过滤器将被忽略;将所有标准放入搜索本身。
$ github-to-sqlite pull-requests --search='org:python defaultdict state:closed created:<2023-09-01' github.db
示例:[pull_requests 表](https://github-to-sqlite.dogsheep.net/github/pull_requests)。
获取仓库的问题评论
issue-comments
命令检索仓库中所有 issue 的所有评论。
建议您首先运行 issues
,以便每个导入的评论都可以有一个外键指向其 issue。
$ github-to-sqlite issues github.db simonw/datasette
$ github-to-sqlite issue-comments github.db simonw/datasette
您可以使用 --issue
选项仅加载仓库中特定 issue 的评论,例如。
$ github-to-sqlite issue-comments github.db simonw/datasette --issue=1
示例:[issue_comments 表](https://github-to-sqlite.dogsheep.net/github/issue_comments)。
获取仓库的提交
commits
命令检索一个或多个仓库的所有提交的详细信息。它目前获取 SHA、提交消息和作者及提交者详细信息;它不会检索完整的提交正文。
$ github-to-sqlite commits github.db simonw/datasette simonw/sqlite-utils
该命令接受一个或多个仓库。
默认情况下,它将在看到之前已检索的提交时停止。您可以使用 --all
强制它检索所有提交(包括之前已插入的提交)。
示例:[commits 表](https://github-to-sqlite.dogsheep.net/github/commits)。
获取仓库的发布
releases
命令检索一个或多个仓库的发行版。
$ github-to-sqlite releases github.db simonw/datasette simonw/sqlite-utils
该命令接受一个或多个仓库。
示例:[releases 表](https://github-to-sqlite.dogsheep.net/github/releases)。
获取仓库的标签
tags
命令检索一个或多个仓库的所有标签。
$ github-to-sqlite tags github.db simonw/datasette simonw/sqlite-utils
示例:[tags 表](https://github-to-sqlite.dogsheep.net/github/tags)。
获取仓库的贡献者
contributors
命令检索一个或多个仓库的所有贡献者的详细信息。
$ github-to-sqlite contributors github.db simonw/datasette simonw/sqlite-utils
该命令接受一个或多个仓库。它填充一个 contributors
表,其中包含指向 repos
和 users
的外键以及一个 contributions
表,列出每个贡献者对该仓库的提交数量。
示例:[contributors 表](https://github-to-sqlite.dogsheep.net/github/contributors)。
获取用户或组织所属的仓库
repos
命令获取属于用户或组织的仓库。
如果没有其他参数,此命令将检索当前经验证的用户拥有的、协作的或可以通过其组织之一访问的所有仓库。
$ github-to-sqlite repos github.db
要获取属于特定用户或组织的仓库,请提供其用户名作为参数。
$ github-to-sqlite repos github.db dogsheep # organization
$ github-to-sqlite repos github.db simonw # user
您可以将多个用户名传递给一次检索多个用户或组织。
$ github-to-sqlite repos github.db simonw dogsheep
添加 --readme
选项以将仓库的 README 保存到名为 readme
的列中。添加 --readme-html
以将 README 的 HTML 渲染版本保存到名为 readme_html
的列中。
示例:repos 表格
获取特定仓库
您可以使用 -r
选项与 repos
命令一次或多次使用,以获取特定的仓库。
$ github-to-sqlite repos github.db -r simonw/datasette -r dogsheep/github-to-sqlite
获取被用户星标的仓库
starred
命令用于获取用户标记的仓库。
$ github-to-sqlite starred github.db simonw
如果您使用 auth.json
文件,可以省略用户名以获取认证用户的标记仓库。
示例:stars 表格
获取为特定仓库星标过的用户
stargazers
命令用于获取已标记指定仓库的用户。
$ github-to-sqlite stargazers github.db simonw/datasette dogsheep/github-to-sqlite
您可以使用 owner/repo
语法指定一个或多个仓库。
使用此命令获取的用户将被插入到 users
表格中。许多多对多记录将添加到 stars
表格中,以显示他们标记了哪些仓库。
获取GitHub Actions工作流程
workflows
命令从每个仓库的 .github/workflows
目录中获取 YAML 工作流程配置,并将其解析到 workflows
、jobs
和 steps
表格中。
$ github-to-sqlite workflows github.db simonw/datasette dogsheep/github-to-sqlite
您可以使用 owner/repo
语法指定一个或多个仓库。
示例:workflows 表格、jobs 表格、steps 表格
抓取仓库的依赖项
GitHub 依赖关系图可以显示依赖于特定仓库的其他 GitHub 项目,例如 simonw/datasette/network/dependents。
这些数据尚未通过 GitHub API 提供。scrape-dependents
命令抓取这些页面,并使用 GitHub API 加载依赖仓库的完整版本。
$ github-to-sqlite scrape-dependents github.db simonw/datasette
该命令接受一个或多个仓库。
添加 -v
以获取详细输出。
获取表情符号
您可以使用 emojis
命令获取 GitHub 支持的所有表情符号列表。
$ github-to-sqlite emojis github.db
这将创建一个名为 emojis
的表格,其中包含主键 name
和 url
列。
如果您添加了 --fetch
选项,则该命令还将获取图片的二进制内容并将它们放置在 image
列中。
$ github-to-sqlite emojis emojis.db -f
[########----------------------------] 397/1799 22% 00:03:43
然后您可以使用 datasette-render-images 插件来可视化地浏览它们。
示例:emojis 表格
进行认证API调用
github-to-sqlite get
命令为对 API 进行认证调用提供了一个便捷的快捷方式。一旦您创建了您的 auth.json
文件(或设置了 GITHUB_TOKEN
环境变量),您就可以像这样使用它:
$ github-to-sqlite get https://api.github.com/gists
这将向您提供的 URL 发出认证调用,并将结果 JSON 格式化打印到控制台。
您可以省略 https://api.github.com/
前缀,例如
$ github-to-sqlite get /gists
许多 GitHub API 使用 HTTP Link 标头进行分页。您可以遵循此分页并使用 --paginate
输出所有结果项的列表。
$ github-to-sqlite get /users/simonw/repos --paginate
您可以使用 --nl
突出显示每个项目的换行分隔 JSON。这可以用于将项目流式传输到其他工具。
$ github-to-sqlite get /users/simonw/repos --nl
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪一个,请了解有关 安装包 的更多信息。
源代码分发
构建分布
github-to-sqlite-2.9.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8dea4b34769ffe425fbac7f776790c1b8b5d976468c64bcd657068b9019bc56a |
|
MD5 | 86d05d6a477a90ab57b91859c7db4e05 |
|
BLAKE2b-256 | 7c03f6ab8debaf822e8536d2dbdc04d975fcb5c46a4464ade8da6576b7410c54 |
github_to_sqlite-2.9-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 834d5258d6c52a267ad37f83bf48a1014210b49081c65c933b3fb4bf1d53b16f |
|
MD5 | 3fb38ae153bc74c32259eb865e31f135 |
|
BLAKE2b-256 | b3875e564721a22ccd32843a381bcd8a35ff272b028a7ef4d5736339986b4f48 |