2013-07-05 133 views
3

我在我們的項目中收集GitHub問題統計數據:問題總數,特定標籤問題數量,給定狀態問題數量(開放/關閉)。現在,我有一個Python腳本來解析項目網頁,併爲我想要的信息添加所需的標籤/狀態,例如,以編程方式收集GitHub項目發佈統計信息?

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

是否有人描述如何使用GitHub API(或禁止,知道其他方式,最好在Python中)來收集這些統計信息而不依賴於底層HTML?

+0

這個網站可能是有用的,它有類似的東西http://website.clearpoint.co.nz/gitstats/index.html – user1255162

回答

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的更多問題。

乾杯!

+0

謝謝@ sigmavirus24(並抱歉,延遲接受你的迴應)。這似乎對我有用。 – braymp

+0

不用擔心@braymp樂意幫忙 –

0

雖然這並不能完全滿足您的要求(以下簡稱「最好的Python」部分),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解析庫);無需對公共回購進行身份驗證。

相關問題