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.