Скачать счет на GitHub выхода в р


Я пытаюсь получить количество загрузок публичного РЕПО, используя GitHub API и R v3.1.2. Используя публичные образцы РЕПО от Google я имею следующее:

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 возвращает пустой список. Это потому, что в этом публичном РЕПО нет релизов? Цель состоит в том, чтобы определить, сколько раз это РЕПО было загружено публикой-или любым другим публичным РЕПО, если на то пошло. Возможно ли это вообще?

2 5

2 ответа:

Старые графы загрузки Githubбыли устаревшими и, похоже, больше не работают. Вы можете получить количество загрузок из релизов, но для этого потребуется немного манипуляций:

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-сервисов, которое вы используете в качестве примера, не имеет ни релизов, ни файлов!

API, упомянутый в "Get a single release ", является:

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

Как было отмечено, вам нужно применить его против релизов РЕПО.
В качестве примера приведем python gist (by Филипп Хансен - Hanse00) который извлекает download_count.
(не в R, но чтобы показать, как используется url /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)

Вот еще более короткий сценарий по Брэд Чэпмен chapmanb, использование 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

(у вас есть много еще примеры )