2016-02-25 40 views
5

我想要使用GitHub API和R v3.1.2獲得公開回購的download count。使用從谷歌公共samples repo我有以下幾點:下載R的GitHub發佈計數

library(jsonlite) 
library(httr) 

url <- "https://api.github.com/repos/googlesamples/google-services/downloads" 
response <- GET(url) 
json <- content(response, "text") 
json <- fromJSON(json) 

print(json) 

然而,我注意到,JSON返回一個空列表。是否因爲此公開回購沒有發佈?我們的目標是確定公衆已經下載了多少次這種回購 - 或者是針對這個問題的任何其他公共回購。這甚至有可能嗎?

+1

@MichaelChirico我編輯了我的問題。 – Hahnemann

+0

這個問題可以以某種方式增加投票嗎? – Hahnemann

+0

你可以開始賞金獲得更多關注 – MichaelChirico

回答

4

舊的Github下載計數have been deprecated並且似乎不再有效。您可以從發行獲得的下載次數,但它確實需要操縱一點點:

library(jsonlite) 
library(httr) 

url <- "https://api.github.com/repos/allenluce/mmap-object/releases" 
response <- GET(url) 
json <- content(response, "text") 
json <- fromJSON(json) 
print(Reduce("+", lapply(json$assets, function(x) sum(x$download_count)))) 

有一些注意事項:

  1. 回購必須釋放。
  2. 該發佈必須包含文件
  3. 沒有API可以獲取克隆您的回購的人數。

Github允許您計算已下載的已發佈文件的數量,但就是這樣。您用作示例的google-services回購既沒有發佈也沒有文件!

+0

@doug_luce這很好!我在終端中克隆了https://github.com/allenluce/mmap-object回購,然後我通過Chrome下載了回購zip,但計數仍然相同(49)。數字何時改變? – Hahnemann

+0

它確實改變了,現在我看到50次下載。他們必須在批處理的基礎上做到這一點,我記得在更新計數時以他們以前的版本來閱讀關於性能問題的一些信息。 –

+0

確認!這似乎是這種情況。我感謝大家的意見,但您的迴應正是我所尋找的。感謝您的幫助! – Hahnemann

1

在「Get a single release」中提到的API是:

GET /repos/:owner/:repo/releases/:id 

至於評論,您需要申請它反對回購的版本。
作爲一個例子,這裏是一個python gist(由Philip Hansen - Hanse00)提取download_count
(未在R,但展現/repos/:owner/:repo/releases/:id網址如何使用)

提取物:

#Iterate through every tag 
search_point = 0 
while formatted_string.find("tag_name", search_point) != -1: 
    #Find where in the string the tag and download texts are 
    find_point = formatted_string.find("tag_name", search_point) 
    download_point = formatted_string.find("download_count", find_point) 

下面是一個even shorter script通過Brad Chapmanchapmanb,使用sigmavirus24/github3.py(Python庫用於與GitHub的APIv3接口):

#!/usr/bin/env python 
"""Get download stats for releases from GitHub. 
Needs development version of github3. 
pip install github3 
pip install git+https://github.com/sigmavirus24/github3.py.git 
""" 
import github3 

repo = github3.repository("chapmanb", "bcbio.variation") 
for release in repo.iter_releases(): 
    for asset in release.iter_assets(): 
     print release.name, asset.name, asset.download_count 

(你有manymoreexamples