Github: Могу ли я увидеть количество загрузок для репо?

140

В Github есть ли способ узнать количество загрузок для репо?

dhulihan
источник
Количество клонов доступно для авторизованных пользователей путем сбора имени пользователя и пароля Github, а также количества загрузок файлов ресурсов в выпусках . Кажется невозможным получить количество клонов из общедоступных репозиториев или загрузить статистику по файлам, не относящимся к активам (т. Е. Репо tar.gzи zipфайлы).
Аллен Люс
1
Для всех, кто читает ответы, все приведенные ниже сценарии, предоставляющие выпуск release_count, неверны, так как они не учитывают систему разбивки на страницы GitHub и дают только общее количество за последние 30 выпусков,
Qiri

Ответы:

116

Обновление 2019:

Устин «S ответ указывает на:

  • API /repos/:owner/:repo/traffic/clones, чтобы получить общее количество клонов и разбивки за день или неделю, но: только за последние 14 дней.
  • API /repos/:owner/:repo/releases/:release_idдля получения количества загрузок ваших ресурсов (файлов, прикрепленных к релизу), поле download_countуказано ниже, но, как прокомментировано , только для последних 30 выпусков.

Обновление 2017

Вы по-прежнему можете использовать API GitHub для получения количества загрузок для ваших выпусков (что не совсем то , что было запрошено).
См. « Получить один выпуск », download_countполе.

Больше нет экрана трафика с указанием количества клонов репо.
Вместо этого вы должны полагаться на сторонние сервисы, такие как:

Git 2.14.2 релиз


Обновление август 2014

GitHub также предлагает количество клонов для репо в своем Графике трафика:
см. « Графики клонов »

http://i.stack.imgur.com/uycEZ.png


Обновление октябрь 2013

Как упомянуто ниже по andyberry88 , и как я подробно в июле прошлого года , GitHub в настоящее время предлагает релизы (см его API ), который имеет download_countполе .

Мишель Милидони , в своем ответе (с голосованием) , использует это поле в своем скрипте на python .
( очень маленький экстракт )

c.setopt(c.URL, 'https://api.github.com/repos/' + full_name + '/releases')
for p in myobj:
    if "assets" in p:
        for asset in p['assets']:
            print (asset['name'] + ": " + str(asset['download_count']) +
                   " downloads")

Оригинальный ответ (декабрь 2010 г.)

Я не уверен, что вы можете видеть эту информацию (если она вообще записана), потому что я не вижу ее в GitHub Repository API :

$ curl http://github.com/api/v2/yaml/repos/show/schacon/grit
---
repository:
  :name: grit
  :owner: schacon
  :source: mojombo/grit # The original repo at top of the pyramid
  :parent: defunkt/grit # This repo's direct parent
  :description: Grit is a Ruby library for extracting information from a
  git repository in an object oriented manner - this fork tries to
  intergrate as much pure-ruby functionality as possible
  :forks: 4
  :watchers: 67
  :private: false
  :url: http://github.com/schacon/grit
  :fork: true
  :homepage: http://grit.rubyforge.org/
  :has_wiki: true
  :has_issues: false
  :has_downloads: true

Вы можете только видеть, есть ли у него загрузки или нет.

VonC
источник
1
Это включает в себя загрузку ZIP или только клоны?
MarzSocks
1
@MarzSocks, если вы говорите о download_countполе API релиза, которое должно включать количество загрузок релиза (которые не всегда являются zip-файлами и не являются клонами)
VonC
@MarzSocks, если вы говорите о «количестве клонов», это не должно включать в себя загрузки zip. Только git cloneэкземпляры. Проверьте с поддержкой GitHub для подтверждения.
VonC
@danielsp, он официально зарегистрирован: help.github.com/articles/viewing-traffic-to-a-repository . Но да, я тоже больше этого не вижу: github.com/docker/docker/graphs/contributors
VonC
Автоматически созданные
81

Я написал небольшое веб-приложение на javascript для отображения количества загрузок всех ресурсов в доступных выпусках любого проекта на Github. Вы можете попробовать приложение здесь: http://somsubhra.github.io/github-release-stats/

Somsubhra
источник
5
Я продолжаю получать сообщения «Для этого проекта нет релизов» или «Проект не существует». Что я не прав?
Алекс
Я получаю то же сообщение. Это не может быть правдой.
cryptic0
3
Ага. Я тоже. Кажется, это приложение перестало работать давным-давно.
Даан ван ден Берг
1
Это приложение неверно, поскольку оно включает только 30 последних выпусков, предоставленных GitHub в ответе API, как подробно описано здесь: developer.github.com/v3/guides/traversing-with-pagination Необходимо перебирать страницы из ссылка «Следующая», указанная в заголовке, чтобы рассчитать правильную сумму. Примером репо является slamdata / quasar, где этот метод дает чрезвычайно неверный итог.
Цири
Приложение считает только репо с выпусками
SM Pat
12

GitHub отказался от поддержки загрузки и теперь поддерживает «Релизы» - https://github.com/blog/1547-release-your-software . Чтобы создать выпуск, используйте пользовательский интерфейс GitHub или создайте аннотированный тег (http: // git-scm.com/book/ch2-6.html) и добавьте примечания к выпуску в GitHub. Затем вы можете загружать двоичные файлы или «активы» в каждую версию.

Когда у вас есть несколько выпусков, GitHub API поддерживает получение информации о них и их активах.

curl -i \
https://api.github.com/repos/:owner/:repo/releases \
-H "Accept: application/vnd.github.manifold-preview+json"

Ищите запись «download_count». Theres больше информации в http://developer.github.com/v3/repos/releases/ . Эта часть API все еще находится в периоде предварительного просмотра ATM, поэтому она может измениться.

Обновление ноябрь 2013:

API релизов GitHub теперь вышел из периода предварительного просмотра, поэтому заголовок «Принять» больше не нужен - http://developer.github.com/changes/2013-11-04-releases-api-is-official/

Впрочем, продолжать добавлять заголовок «Принять» не повредит.

andyberry88
источник
Неправильно ли я думать, что github в настоящее время больше не отображает downloadsполе в активах (по крайней мере, с использованием этой техники)?
Демис
Этот метод все еще работает для меня. download_countэто поле, которое указывает количество загрузок - например, в api.github.com/repos/twbs/bootstrap/releases . Стоит отметить, что в этом списке будут отображаться только «релизы», тэги, которые отображаются на странице релизов репо, не отображаются в списке API, см. Developer.github.com/v3/repos/releases . Например, github.com/jquery/jquery/releases перечисляет несколько тегов в разделе выпусков, но для api.github.com/repos/jquery/jquery/releases возвращается пустой список .
andyberry88
Спасибо! В моих репо, похоже, нет такого поля, даже если некоторые теги установлены как «релизы» - это не учитывает загрузку сжатых / tarballed выпусков (или поле опускается, если count=0)? Или показывает только поле для запросов клонов? Смотрите это без download_count: api.github.com/repos/demisjohn/pytrimsetup/releases . Страница github для этого находится здесь: github.com/demisjohn/pyTRIMSetup/releases
Демис
Количество загрузок доступно только для ресурсов выпуска, но не для архивов исходного кода для тега. Если вы посмотрите на приведенные выше URL-адреса начальной загрузки, у них есть bootstrap-XYZ-dist.zipактив, к которому относится download_countполе. Если вы хотите узнать, сколько людей скачивают релиз, вам нужно загрузить ZIP-релиз релиза. Насколько я знаю, нет способа узнать, сколько людей клонировали / загрузили архив через API. Представление графиков (из stackoverflow.com/a/4339085/2634854 выше) может дать вам то, что вы ищете, хотя.
andyberry88
Спасибо за разъяснение. Графики действительно полезны.
Демис
12

Счет ПОСЕТИТЕЛЯ должен быть доступен под вашей информационной панелью> Трафик (или статистика или аналитика):

введите описание изображения здесь

T.Todua
источник
7

Раньше в Github было два способа загрузки кода: клонирование или загрузка в виде zip-репозитория .git или загрузка файла (например, двоичного файла) для последующей загрузки.

При загрузке репозитория (клонирование или загрузка в формате zip) Github не считает количество загрузок из-за технических ограничений. Клонирование репозитория является операцией только для чтения. Там нет аутентификации требуется. Эта операция может быть выполнена с помощью многих протоколов, включая HTTPS, того же протокола, который веб-страница использует для отображения репо в браузере. Это очень сложно сосчитать.

Смотрите: http://git-scm.com/book/en/Git-on-the-Server-The-Protocols

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

Смотрите: https://github.com/blog/1302-goodbye-uploads

Рарилсон Фрейтас
источник
7

Как уже упоминалось, GitHub API возвращает количество загрузок выпусков двоичных файлов. Я разработал небольшой скрипт для простого подсчета загрузок в командной строке.

Мишель Милидони
источник
Где-нибудь я могу увидеть пример этого в использовании? Можно ли добавить его к значку Github? Если нет, то можно ли было бы использовать Google Analytics для подсчета количества загрузок на значок Github?
eonist
6

Очень поздно, но вот ответ, который вы хотите:

https://api.github.com/repos/ [git username] / [git project] /releases

Затем найдите в данных идентификатор проекта, который вы ищете. Это должно быть около вершины, рядом с URL. Затем перейдите к

https://api.github.com/repos/ [git username] / [git project] /releases/ [id] / assets

Поле с именем download_count является вашим ответом.

РЕДАКТИРОВАТЬ: заглавные буквы имеют значение в вашем имени пользователя и имени проекта

LeChosenOne
источник
почему мои активы не имеют контента, только показывают "[]"
Griffan
Вы все правильно напечатали? Убедитесь, что у вас есть выпуски и вы проверяете правильный проект.
LeChosenOne
Я обнаружил, что они следят только за бинарными файлами в выпуске, а не за исходным кодом tarball или zip, что отстой
Griffan
Ага. Релиз - это бинарный файл, который раздается другим, а не исходный код для разработчиков.
LeChosenOne
5
Это все еще работает? Я получаю:{ "message": "Not Found", "documentation_url": "https://developer.github.com/v3" }
eonist
5

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

Я проверил решения, предоставленные в некоторых других ответах на эти вопросы. Ответ Вонка представляет существенную часть решения Микеле Милидони . Я установил его скрипт gdc со следующим результатом

# ./gdc stant
mdcsvimporter.mxt: 37 downloads
mdcsvimporter.mxt: 80 downloads
How-to-use-mdcsvimporter-beta-16.zip: 12 downloads

Как вы можете ясно видеть, gdc не сообщает количество загрузок файлов tar.gz и zip.

Если вы хотите проверить, не устанавливая что-либо, попробуйте веб-страницу, где Somsubhra установила решение, упомянутое в его ответе . Заполните 'stant' в качестве имени пользователя Github и mdcsvimporter2015 в качестве имени репозитория, и вы увидите такие вещи, как:

Download Info:
mdcsvimporter.mxt(0.20MB) - Downloaded 37 times.
Last updated on 2015-03-26

Увы, еще раз только отчет без скачивания tar.gz и zip файлов. Я тщательно изучил информацию, которую возвращает API Github, но она нигде не предоставляется. Количество загрузок, которое API возвращает, далеко не завершено в настоящее время.

Ян Эрхардт
источник
5

Чтобы проверить, сколько раз был загружен файл / пакет релиза, вы можете перейти на https://githubstats0.firebaseapp.com

Это дает вам общее количество загрузок и разбивку общих загрузок на тег выпуска.

Авеек Саха
источник
Обратите внимание, что это работает только для двоичных файлов в выпуске, но не для самого исходного кода, что означает, что если вы не загрузите другие файлы для загрузки, это не будет учитываться. Вероятно, он использует Github API из ответа LeChosenOne.
JoniVR
3

В итоге я написал скрипт-скребок, чтобы узнать количество клонов:

#!/bin/sh
#
# This script requires:
#   apt-get install html-xml-utils
#   apt-get install jq
#
USERNAME=dougluce
PASSWORD="PASSWORD GOES HERE, BE CAREFUL!"
REPO="dougluce/node-autovivify"

TOKEN=`curl https://github.com/login -s -c /tmp/cookies.txt | \
     hxnormalize | \
     hxselect 'input[name=authenticity_token]' 2>/dev/null | \
     perl -lne 'print $1 if /value=\"(\S+)\"/'`

curl -X POST https://github.com/session \
     -s -b /tmp/cookies.txt -c /tmp/cookies2.txt \
     --data-urlencode commit="Sign in" \
     --data-urlencode authenticity_token="$TOKEN" \
     --data-urlencode login="$USERNAME" \
     --data-urlencode password="$PASSWORD" > /dev/null

curl "https://github.com/$REPO/graphs/clone-activity-data" \
     -s -b /tmp/cookies2.txt \
     -H "x-requested-with: XMLHttpRequest" | jq '.summary'

Это позволит получить данные из той же конечной точки, которую использует граф клонов Github, и выплеснуть итоговые данные из нее. Данные также включают ежедневные подсчеты, замените их .summaryпросто на то, .чтобы увидеть те, которые были напечатаны.

Аллен Люс
источник
2

На основе ответов VonC и Michele Milidoni я создал этот букмарклет, который отображает статистику загрузок выпущенных двоичных файлов, размещенных на github.

Примечание. Из-за проблем с браузерами, связанных с реализацией политики безопасности контента, букмарклеты могут временно нарушать некоторые директивы CSP и в основном могут работать неправильно при работе на github, когда CSP включен.

Хотя это крайне нежелательно, вы можете отключить CSP в Firefox как временное решение. Откройте about: config и установите для security.csp.enable значение false.

jwaliszko
источник
2

Чтобы попытаться прояснить это:
для этого проекта github: stant / mdcsvimporter2015
https://github.com/stant/mdcsvimporter2015
с выпусками на
https://github.com/stant/mdcsvimporter2015/releases.

перейдите на http или https: (обратите внимание, добавлены "api." и "/ repos")
https://api.github.com/repos/stant/mdcsvimporter2015/releases

вы получите этот вывод json и сможете выполнить поиск по запросу «download_count»:

    "download_count": 2,
    "created_at": "2015-02-24T18:20:06Z",
    "updated_at": "2015-02-24T18:20:07Z",
    "browser_download_url": "https://github.com/stant/mdcsvimporter2015/releases/download/v18/mdcsvimporter-beta-18.zip"

или в командной строке выполните:
wget --no-check-certificate https://api.github.com/repos/stant/mdcsvimporter2015/releases

Стэн Товянски
источник
Насколько я вижу, github считает только первый из трех файлов, которые вы предлагаете для скачивания, например, mdcsvimporter-beta-18.zip. Вы когда-нибудь находили способ получить количество скачиваний вроде v19.zip?
Ян Эрхардт
У меня только 3 релиза для md2015, и v19 - первый, который показывает. v19 вышла после этого поста, поэтому здесь не показывается. Вы пошли на URL :-)? «download_count»: 31, «create_at»: «2015-03-26T04: 22: 13Z», «updated_at»: «2015-03-26T04: 22: 13Z», «browser_download_url»:
Стэн Тоуянски,
Но, насколько я могу судить, Github не считает загрузки github.com/stant/mdcsvimporter2015/archive/v19.zip и github.com/stant/mdcsvimporter2015/archive/v18-alpha.tar.gz
Ян Эрхардт,
Здравствуй. Я даже не уверен, откуда вы взяли эти URL-адреса для загрузки, но это вопрос к github. Похоже, он считает только файлы, которые я выпускаю (3), и даже не исходные файлы zip, которые он создает (еще 2 на мою версию). Я написал для себя java-приложение, которое я запускаю, чтобы сделать этот вызов, вернуть json, разобрать и показать только количество загрузок.
Стэн Тоуянски
Жаль. Очевидно, Github не предоставляет необходимую нам информацию (больше?). Из 3 * 3 файлов, имеющихся у вас на github.com/stant/mdcsvimporter2015/releases, он сообщает только doenload_count самого файла релиза, а не файлов * .tar.gz и * .zip. Я сделаю отдельный ответ, так как он влияет на все остальные решения.
Ян Эрхардт
1

Как уже говорилось, вы можете получить информацию о своих релизах через API .

Для тех, кто использует WordPress, я разработал этот плагин: GitHub Release Downloads . Это позволяет вам получить количество загрузок, ссылки и дополнительную информацию для выпусков репозиториев GitHub.

Чтобы ответить на исходный вопрос, шорткод [grd_count user="User" repo="MyRepo"]вернет количество загрузок для хранилища. Это число соответствует сумме всех значений количества загрузок всех выпусков для одного репозитория GitHub.

Пример: пример

IvanRF
источник
1

Ответ с 2019 года:

  1. Для определения количества клонов вы можете использовать https://developer.github.com/v3/repos/traffic/#clones (но имейте в виду, что он возвращает счет только за последние 14 дней)
  2. Для получения количества загрузок ваших активов (файлов, прикрепленных к выпуску) вы можете использовать https://developer.github.com/v3/repos/releases/#get-a-single-release (в точности свойство "download_count" список активов в ответе)
Устин
источник
0

Для тех, кому нужно решение на Python, я написал простой скрипт.


Python Script:


Использование:

ghstats.py [user] [repo] [tag] [options]


Служба поддержки:

  • Поддерживает как Python 2, так и Python 3 из коробки.
  • Может использоваться как автономный модуль, так и как модуль Python.
kefir500
источник
0

Вот решение Python с использованием pip install PyGithubпакета

from github import Github
g = Github("youroauth key") #create token from settings page


for repo in g.get_user().get_repos():
    if repo.name == "yourreponame":
        releases = repo.get_releases()
        for i in releases:
            if i.tag_name == "yourtagname":
                for j in i.get_assets():
                    print("{} date: {} download count: {}".format(j.name, j.updated_at, j._download_count.value))
user1767754
источник