Github: Чи можу я побачити кількість завантажень для репо?


139

Чи є в Github спосіб я побачити кількість завантажень для репо?


Кількість клонів доступна авторизованим користувачам, скребкуючи ім'я користувача / пароль Github, як і кількість завантажень файлів активів у релізах . Здається, неможливо отримати підрахунки клонів з публічних репостів або завантажити статистику у файли, що не мають активів (тобто репо tar.gzта zipфайли).
Аллен Люс

1
Для всіх, хто читає відповіді, всі сценарії, наведені нижче, що дають випуск download_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 р.)

Я не впевнений, що ви можете бачити цю інформацію (якщо вона взагалі записана), оскільки я не бачу її в API репозиторію GitHub :

$ 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

Ви можете бачити лише завантаження чи ні.


1
Це включає в себе завантаження ZIP або просто клонування?
MarzSocks

1
@MarzSocks, якщо ви говорите про download_countполе API випуску, яке повинно включати кількість завантажень випусків (які не завжди поштові, а не клони)
VonC

@MarzSocks, якщо ви говорите про "кількість клонів", це не повинно включати завантаження поштових індексів. Лише git cloneекземпляри. Зверніться до служби підтримки GitHub для підтвердження.
VonC

@danielsp поки що офіційно документально підтверджено: help.github.com/articles/viewing-traffic-to-a-repository . Але так, я вже не бачу цього: github.com/docker/docker/graphs/contributors
VonC

Автогенеровані файли архіву джерела, мабуть, не є активами .. ( див. Цей коментар )
olejorgenb

81

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


5
Я постійно отримую повідомлення "Немає випусків для цього проекту" або "Проект не існує". Що я неправильно роблю?
Алекс

Я отримую те саме повідомлення. Це не може бути правильним.
cryptic0

3
Так. Я також. Здається, ця програма перестала працювати давно.
Даан ван ден Берг

1
Ця програма не є коректною, оскільки вона містить лише 30 останніх випусків, наданих GitHub у відповіді API, як детально описано тут: developer.github.com/v3/guides/traversing-with-pagination Потрібно пройти перегляд сторінок із посилання "Наступне", вказане в заголовку, для підрахунку правильної підсумкової кількості. Прикладом репо є сламдата / квазар, де цей метод дає суто неправильну суму.
Цирі

Додаток вважає лише репости з випусками
SM Pat Pat

12

GitHub втратив підтримку для завантаження і тепер підтримує "Випуски" - https://github.com/blog/1547-release-your-software . Щоб створити випуск, використовуйте інтерфейс GitHub або створіть тег із примітками (http: // git-scm.com/book/ch2-6.html) та додайте до нього нотатки до випуску в GitHub. Потім ви можете завантажувати бінарні файли або "активи" до кожного випуску.

Щойно у вас є деякі версії, API GitHub підтримує отримання інформації про них та їхні активи.

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

Шукайте запис "download_count". Більше інформації на сайті http://developer.github.com/v3/repos/releases/ . Ця частина API все ще знаходиться в періоді попереднього перегляду ATM, тому може змінитися.

Оновлення листопада 2013 року:

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

Щоб продовжувати додавати заголовок "Прийняти", це не зашкодить.


Чи не помиляюсь, що 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

Дякую! Можливо, у мого Репо немає такого поля, навіть якщо деякі теги встановлені як "релізи" - це не враховує завантаження зашифрованих / міток з рейтингом (або поле опущено, якщо count=0)? Або відображається поле лише для запитів клонування? Дивіться це, без номераdownload_count : api.github.com/repos/demisjohn/pytrimsetup/releases . Сторінка github для цього знаходиться тут: github.com/demisjohn/pyTRIMSetup/releases
Деміс

Кількість завантажень доступна лише для активів випуску, а не для архівів вихідного коду для тегу. Якщо ви подивитеся на вказані вище URL-адреси завантажувальної машини, у них є bootstrap-XYZ-dist.zipактив, до якого download_countвідноситься поле. Якщо ви хочете побачити, скільки людей завантажує випуск, вам потрібно завантажити поштовий реліз. Наскільки я знаю, немає способу побачити, скільки людей клонували / завантажили архів через API. Перегляд графіків (з stackoverflow.com/a/4339085/2634854 вище) може дати вам те, що вам потрібно.
andyberry88

Дякуємо за уточнення. Графіки справді корисні.
Деміс

12

Кількість відвідувачів має бути доступною на інформаційній панелі> Трафік (або статистика або дані):

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


7

Раніше в Github було два способи завантаження коду: клонувати або завантажити як zip a .git repo, або завантажити файл (наприклад, двійковий) для подальшого завантаження.

Під час завантаження репо (клонування або завантаження у форматі 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, щоб якось отримати кількість завантажень до значка Github?
еоніст

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 - це ваша відповідь.

РЕДАКТУВАННЯ: Великі літери мають значення у вашому імені користувача та назви проекту


як же мої активи не містять вмісту, показують лише "[]"
Griffan

Ви все правильно ввели? Переконайтеся, що у вас є випуски та перевіряється правильність проекту.
LeChosenOne

Я дізнаюся, що вони відслідковують лише бінарні файли у випуску, а не вихідний код тарболу чи zip, який смокче
Griffan

Так. Випуск - це двійковий код, який слід роздати іншим, а не вихідний код для розробників.
LeChosenOne

5
Це все ще працює? Я отримую:{ "message": "Not Found", "documentation_url": "https://developer.github.com/v3" }
eonist

5

API Github більше не надає необхідної інформації. Подивіться на сторінку випусків , згадану у відповіді Стана Тов’янського . Як ми обговорювали в коментарях до цієї відповіді, 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

Це дає вам загальну кількість завантажень та розподіл загальної кількості завантажень за тег випуску.


Зауважте, що це працює лише для бінарних файлів у випуску, а не для самого вихідного коду, а це означає, що якщо ви не завантажите будь-які інші файли для завантаження, вони не будуть зараховані. Ймовірно, використовується API Github з відповіді 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 та Мішеле Мілідоні я створив цю закладку якій відображаються статистичні дані щодо завантажень випущених бінарних файлів github.

Примітка. Через проблеми із браузерами, пов’язаними з реалізацією політики безпеки вмісту, закладки можуть тимчасово порушувати деякі директиви CSP і в основному можуть не працювати належним чином під час роботи на github, коли CSP увімкнено.

Незважаючи на те, що це дуже обережно, ви можете відключити CSP у Firefox як тимчасове вирішення. Відкрийте про: config та встановіть security.csp.enable на false.


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-сертифікат https://api.github.com/repos/stant/mdcsvimporter2015/releases


Наскільки я бачу, github зараховує лише перший із трьох файлів, які ви пропонуєте для завантаження, наприклад mdcsvimporter-beta-18.zip. Ви коли-небудь знаходили спосіб отримати рахунок для завантаження таких речей, як v19.zip?
Ян Ерхардт

У мене є лише 3 випуски для md2015, а v19 - перший, який показує. v19 прийшов після цієї публікації, тому тут не показано. Ви перейшли на URL :-)? "download_count": 31, "created_at": "2015-03-26T04: 22: 13Z", "updated_at": "2015-03-26T04: 22: 13Z", "browser_download_url":
Stan Towianski

Але наскільки я бачу, Github не рахує завантажень github.com/stant/mdcsvimporter2015/archive/v19.zip та github.com/stant/mdcsvimporter2015/archive/v18-alpha.tar.gz
Ян Ерхардт

Привіт. Я навіть не впевнений, де ви придумали ці URL-адреси для завантаження, але це питання github. Він, здається, підраховує лише файли, які я випускаю (3), і навіть не вихідні поштові файли, які він створює (ще 2 за мій реліз). Я написав програму java для себе, що біжу, щоб здійснити цей дзвінок, повернути json назад та розібратися та показати лише кількість завантажень.
Стен Тов’янський

Дуже погано. Мабуть, Github не надає потрібної нам інформації (вже?). З 3 * 3 файлів, які ви маєте на веб- сайті github.com/stant/mdcsvimporter2015/, він звітує лише про doenload_count файлу випуску сам, а не про файли * .tar.gz та * .zip. Я дам окрему відповідь, оскільки це впливає на всі інші рішення.
Ян Ерхардт

1

Як уже було сказано, ви можете отримати інформацію про свої випуски через API .

Для тих, хто використовує WordPress, я розробив цей плагін: GitHub Release Downloads . Це дозволяє отримати кількість завантажень, посилання та додаткову інформацію для випусків сховищ GitHub.

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

Приклад: Приклад


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:


Використання:

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


Підтримка:

  • Підтримує і Python 2, і Python 3 поза рамкою.
  • Можна використовувати як окремий модуль, так і модуль Python.

0

Ось рішення пітона за допомогою 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))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.