以编程方式收集GitHub项目问题统计数据?

时间:2013-07-05 11:39:38

标签: github github-api

我正在收集项目中的GitHub问题统计数据:问题总数,特定标签的问题数量,给定状态下的问题数量(打开/关闭)。现在,我有一个Python脚本来解析项目网页,其中包含我想要的信息所需的标签/状态,例如

http://github.com/<projectname>/issues?label=<label_of_interest>&state=<state_of_interest>
但是,解析HTML是脆弱的,因为如果GitHub API发生更改,我的代码通常会失败。

是否有人描述如何使用GitHub API(或禁止使用其他方式,最好是在Python中)来收集这些统计信息而不依赖于基础HTML?

3 个答案:

答案 0 :(得分:2)

我是否可以建议您使用我的GitHub API包装器?使用github3.py,您可以执行以下操作:

import github3

github = github3.login("braymp", "braymp's super secret password")
repo = github.repository("owner", "reponame")
open_issues = [i for i in repo.iter_issues()]
closed_issues = [i for i in repo.iter_issues(state='closed')]

refresh的调用可能是必要的,因为我没有诚实地回想起GitHub是否在迭代时发送所有问题信息(例如,将i.refresh() for i in <generator>替换为列表推导的主体上文)。

通过这些,您可以遍历这两个列表,并且您将能够在每个问题上使用labels属性来确定问题上的哪些标签。如果您决定合并这两个列表,则始终可以使用is_closed方法检查问题的状态。

我怀疑你可以自己做的实际统计数据。 :)

github3.py的文档可以在ReadTheDocs找到,您对IssueRepository个对象特别感兴趣。

您还可以通过在StackOverflow问题中为其添加标记来询问有关github3.py的更多问题。

干杯!

答案 1 :(得分:0)

我看看Octokit。它目前不支持Python,但确实为GitHub API提供了支持的Ruby接口。

https://github.com/blog/1517-introducing-octokit

答案 2 :(得分:0)

虽然这并不完全符合您的规范(&#34;最好是Python&#34;部分),Octokit是一个很棒的(和官方 - 由GitHub开发)方式与GitHub API交互。您写信给我想要获取问题数据。它就像安装,需要库和获取数据一样简单(如果项目是公共的,则无需进行身份验证)。

安装:

gem install octokit

将此添加到您的Ruby文件中以要求Octokit库:

require 'octokit'

虽然您可以从Octokit::Client::Issues获得很多内容,但您可能希望获得存储库中所有问题的分页列表:

Octokit.list_issues('octokit/octokit.rb')
  # => [Array<Sawyer::Resource>] A list of issues for a repository.

如果您真的热衷于使用Python,可能需要查看GitHub API docs for Issues。真的,它就像获取像https://api.github.com/repos/octokit/octokit.rb/issues这样的网址一样简单并获取JSON数据(尽管我不熟悉Python,我确定这些JSON解析库);无需对公共回购进行身份验证。