Скачать счет на 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 ответа:
Старые графы загрузки 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))))
Есть несколько предостережений:
- РЕПО должно иметь релизы.
- релизы должны иметь файлы
- нет 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