跳转到主要内容

将GitHub数据保存到SQLite数据库

项目描述

github-to-sqlite

PyPI Changelog Tests License

将GitHub数据保存到SQLite数据库。

演示

https://github-to-sqlite.dogsheep.net/托管了一个由运行此工具创建的数据库的Datasette演示,包括Dogsheep GitHub组织中的所有仓库,以及datasettesqlite-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 表,其中包含指向 reposusers 的外键以及一个 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 工作流程配置,并将其解析到 workflowsjobssteps 表格中。

$ 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 以获取详细输出。

示例:dependents 表格

获取表情符号

您可以使用 emojis 命令获取 GitHub 支持的所有表情符号列表。

$ github-to-sqlite emojis github.db

这将创建一个名为 emojis 的表格,其中包含主键 nameurl 列。

如果您添加了 --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 (30.8 kB 查看哈希值)

上传时间 源代码

构建分布

github_to_sqlite-2.9-py3-none-any.whl (19.7 kB 查看哈希值)

上传时间 Python 3

由以下支持