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

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

21 ответ

Решение

Обновление 2017

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

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


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

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

https://stackru.com/images/44842970760bcf8fcbb49e8fcd9255a627e83f51.png


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

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

Michele Milidoni, в своем ответе (с голосованием), использует это поле в своем скрипте на 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

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

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

По состоянию на октябрь 2014 года доступно количество ПОСЕТИТЕЛЕЙ:

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

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:

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

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

Я сделал веб-приложение, которое показывает статистику выпуска GitHub в чистом формате:https://hanadigital.github.io/grev/

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

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

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 является вашим ответом.

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

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

Раньше в 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

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, но она нигде не представлена. Download_count, который API возвращает, далек от завершения.

11 лет спустя ...
Вот небольшой фрагмент python3 для получения количества загрузок последних 100 ресурсов выпуска :

      import requests

owner = "twbs"
repo = "bootstrap"
h = {"Accept": "application/vnd.github.v3+json"}
u = f"https://api.github.com/repos/{owner}/{repo}/releases?per_page=100"
r = requests.get(u, headers=h).json()
r.reverse() # older tags first
for rel in r:
  if rel['assets']:
    tag = rel['tag_name']
    dls = rel['assets'][0]['download_count']
    pub = rel['published_at']
    print(f"Pub: {pub} | Tag: {tag} | Dls: {dls} ")

      Pub: 2013-07-18T00:03:17Z | Tag: v1.2.0 | Dls: 1193 
Pub: 2013-08-19T21:20:59Z | Tag: v3.0.0 | Dls: 387786 
Pub: 2013-10-30T17:07:16Z | Tag: v3.0.1 | Dls: 102278 
Pub: 2013-11-06T21:58:55Z | Tag: v3.0.2 | Dls: 381136 
...
Pub: 2020-12-07T16:24:37Z | Tag: v5.0.0-beta1 | Dls: 93943 

Демо

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

#!/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 просто . чтобы увидеть эти красивые печатные.

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


Python Script:


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

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


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

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

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

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

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

Чтобы попытаться сделать это более понятным:
для этого проекта 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 для повторного использования базы кода рабочего процесса.

https://github.com/andry81/github-accum-статистика

С дополнительными функциями:

  1. Может считать клоны трафика и/или просмотры.
  2. Можно использовать составное действие GitHub для повторного использования базы кода рабочего процесса: https://docs.github.com/en/actions/creating-actions/creating-a-composite-action .

Пример файла рабочего процесса GitHub:

.github/рабочие процессы/accum-gh-clone-stats.yml


Предыдущая реализация (помечена как устаревшая):

Эта реализация основана на GitHub Actions + сбор статистики в отдельный репозиторий: https://github.com/andry81/github-clone-count-badge

на основе: https://github.com/MShawon/github-clone-count-badge

С некоторыми преимуществами:

  1. Репозиторий для отслеживания и репозиторий для хранения статистики трафика отличаются, и вы можете напрямую указать статистику как список коммитов: https://github.com/{{REPO_OWNER}}/{{REPO}}--gh-stats/commits/master/traffic/clones
  2. В рабочем процессе используется bash-скрипт accum-traffic-clones.sh для накопления клонов трафика .
  3. Скрипт накапливает статистику как в один файл, так и в набор файлов, сгруппированных по годам и распределенных по дням: traffic/clones/by_year/YYYY/YYYY-MM-DD.json

Пример файла рабочего процесса GitHub:

.github/рабочие процессы/myrepo-gh-clone-stats.yml

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

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

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

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

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

  1. Для количества клонов вы можете использовать https://developer.github.com/v3/repos/traffic/ (но имейте в виду, что он возвращает количество только за последние 14 дней)
  2. Чтобы получить количество загрузок ваших ресурсов (файлов, прикрепленных к выпуску), вы можете использовать https://developer.github.com/v3/repos/releases/ (именно свойство "download_count" для элементы списка активов в ответ)

Есть хорошее расширение для Chrome, которое делает именно то, что вам нужно:GitHub Release Downloads .

Да, в GitHub Cloud в разделе «Информация» добавлена ​​опция трафика, где мы можем найти клон репозитория и загрузить информацию. Вот ссылка на официальный документ> https://docs.github.com/en/repositories/viewing-activity-and-data-for-your-repository/viewing-traffic-to-a-repository.

Вот решение 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))
Другие вопросы по тегам