Github: Kann ich die Anzahl der Downloads für ein Repo sehen?


139

Gibt es in Github eine Möglichkeit, die Anzahl der Downloads für ein Repo anzuzeigen?


Die Anzahl der Klone steht autorisierten Benutzern durch Scraping mit einem Github-Benutzernamen / -Kennwort zur Verfügung, ebenso wie die Anzahl der Downloads von Asset-Dateien in Releases . Es scheint nicht möglich zu sein, Klonzahlen von öffentlichen Repos abzurufen oder Statistiken für Nicht-Asset-Dateien (dh Repo tar.gzund zipDateien) herunterzuladen .
Allen Luce

1
Für jeden, der die Antworten liest, sind alle unten angegebenen Skripte, die die Version download_count bereitstellen, falsch, da sie das Paginierungssystem von GitHub nicht berücksichtigen und nur die Summe für die letzten 30 Versionen
angeben

Antworten:


116

Update 2019:

Ustin ‚s Antwort Punkte auf:


Update 2017

Sie können weiterhin die GitHub-API verwenden , um die Download-Anzahl für Ihre Releases abzurufen (was nicht genau der Fall ist ).
Siehe Feld " Einzelne Release abrufen " download_count.

Es gibt keinen Verkehrsbildschirm mehr, auf dem die Anzahl der Repo-Klone angegeben ist.
Stattdessen müssen Sie sich auf Dienste von Drittanbietern verlassen, wie z.

Git 2.14.2 Release


Update August 2014

GitHub schlägt auch die Anzahl der Klone für das Repo in seinem Verkehrsdiagramm vor:
Siehe " Klondiagramme ".

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


Update Oktober 2013

Wie unten von andyberry88 erwähnt und wie ich im letzten Juli ausführlich beschrieben habe , schlägt GitHub jetzt Releases vor (siehe API ), die ein download_countFeld haben .

Michele Milidoni verwendet in seiner (optimierten) Antwort dieses Feld in seiner Python-Schrift .
( sehr kleiner Auszug )

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")

Ursprüngliche Antwort (Dezember 2010)

Ich bin nicht sicher, ob Sie diese Informationen sehen können (wenn sie überhaupt aufgezeichnet wurden), da ich sie in der GitHub Repository-API nicht sehe :

$ 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

Sie können nur sehen, ob Downloads vorhanden sind oder nicht.


1
Umfasst dies ZIP-Downloads oder nur Klone?
MarzSocks

1
@MarzSocks Wenn Sie über das download_countFeld der Release-API sprechen , sollte dies die Anzahl der Release-Downloads enthalten (die nicht immer zip und keine Klone sind)
VonC

@MarzSocks Wenn Sie von "Anzahl der Klone" sprechen, sollten die Zip-Downloads nicht enthalten sein. Nur die git cloneInstanzen. Wenden Sie sich zur Bestätigung an den GitHub-Support.
VonC

@danielsp noch ist es offiziell dokumentiert: help.github.com/articles/viewing-traffic-to-a-repository . Aber ja, ich sehe es auch nicht mehr: github.com/docker/docker/graphs/contributors
VonC


81

Ich habe eine kleine Webanwendung in Javascript geschrieben, um die Anzahl der Downloads aller Assets in den verfügbaren Versionen eines Projekts auf Github anzuzeigen. Sie können die Anwendung hier ausprobieren: http://somsubhra.github.io/github-release-stats/


5
Ich erhalte immer wieder die Meldung "Es gibt keine Veröffentlichungen für dieses Projekt" oder "Das Projekt existiert nicht". Was bin ich falsch?
Alex

Ich bekomme die gleiche Nachricht. Das kann nicht richtig sein.
cryptic0

3
Ja. Ich auch. Diese App scheint vor langer Zeit nicht mehr zu funktionieren.
Daan van den Bergh

1
Diese Anwendung ist nicht korrekt, da sie nur die 30 neuesten Versionen von GitHub in einer API-Antwort enthält, wie hier beschrieben: developer.github.com/v3/guides/traversing-with-pagination Es ist erforderlich, die Seiten von zu durchlaufen der "nächste" Link in der Kopfzeile, um die korrekte Summe zu berechnen. Ein Beispiel für ein Repo ist slamdata / quasar, wobei diese Methode eine völlig falsche Summe ergibt.
Qiri

Die Anwendung zählt nur Repos mit Releases
SM Pat

12

GitHub hat die Download-Unterstützung abgelehnt und unterstützt jetzt "Releases" - https://github.com/blog/1547-release-your-software . Um eine Version zu erstellen, verwenden Sie entweder die GitHub-Benutzeroberfläche oder erstellen Sie ein kommentiertes Tag (http: // git-scm.com/book/ch2-6.html) und fügen Sie Versionshinweise in GitHub hinzu. Sie können dann Binärdateien oder "Assets" zu jeder Version hochladen.

Sobald Sie einige Releases haben, unterstützt die GitHub-API das Abrufen von Informationen über diese und ihre Assets.

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

Suchen Sie nach dem Eintrag 'download_count'. Weitere Informationen finden Sie unter http://developer.github.com/v3/repos/releases/ . Dieser Teil der API befindet sich noch im Vorschauzeitraum des Geldautomaten, sodass er sich möglicherweise ändern kann.

Update November 2013:

Die Release-API von GitHub ist jetzt außerhalb des Vorschauzeitraums, sodass der Header "Akzeptieren" nicht mehr benötigt wird - http://developer.github.com/changes/2013-11-04-releases-api-is-official/

Es schadet jedoch nicht, den Header "Akzeptieren" weiterhin hinzuzufügen.


Bin ich falsch zu glauben, dass Github derzeit kein downloadsFeld mehr in den Assets anzeigt (zumindest mit dieser Technik)?
Demis

Diese Methode scheint immer noch für mich zu funktionieren. download_countist das Feld, das die Anzahl der Downloads angibt - beispielsweise unter api.github.com/repos/twbs/bootstrap/releases . Es ist erwähnenswert, dass in dieser Liste nur "Releases" angezeigt werden. Tags, die auf der Release-Seite eines Repos angezeigt werden, werden nicht in der API-Liste angezeigt (siehe developer.github.com/v3/repos/releases) . Zum Beispiel listet github.com/jquery/jquery/releases mehrere Tags im Abschnitt "Releases" auf, aber eine leere Liste wird für api.github.com/repos/jquery/jquery/releases zurückgegeben .
andyberry88

Vielen Dank! Meine Repos scheinen kein solches Feld zu haben, selbst wenn einige Tags als "Releases" festgelegt sind - dies zählt nicht die Downloads der gezippten / tarballed Releases (oder wird das Feld weggelassen, wenn count=0)? Oder zeigt nur das Feld für Klonanforderungen an? Siehe hierzu: no download_count: api.github.com/repos/demisjohn/pytrimsetup/releases . Die Github-Seite dafür ist hier: github.com/demisjohn/pyTRIMSetup/releases
Demis

Die Anzahl der Downloads ist nur für Release-Assets verfügbar, nicht für die Quellcodearchive für das Tag. Wenn Sie sich die oben angegebenen Bootstrap-URLs ansehen, haben sie ein bootstrap-XYZ-dist.zipAsset, auf das sich das download_countFeld bezieht. Wenn Sie sehen möchten, wie viele Personen eine Version herunterladen, müssen Sie eine Release-Zip hochladen. Soweit ich weiß, kann man nicht sehen, wie viele Personen ein Archiv über die API geklont / heruntergeladen haben. Die Diagrammansicht (von stackoverflow.com/a/4339085/2634854 oben) gibt Ihnen möglicherweise das, wonach Sie suchen .
andyberry88

Danke fürs klarstellen. Die Grafiken sind in der Tat hilfreich.
Demis

12

Die Anzahl der BESUCHER sollte unter Ihrem Dashboard> Verkehr (oder Statistiken oder Erkenntnisse) verfügbar sein:

Geben Sie hier die Bildbeschreibung ein


7

Früher gab es in Github zwei Methoden zum Herunterladen von Code: Klonen oder Herunterladen eines .git-Repos als Zip oder Hochladen einer Datei (z. B. einer Binärdatei) zum späteren Herunterladen.

Beim Herunterladen eines Repos (Klonen oder Herunterladen als Zip) zählt Github die Anzahl der Downloads aus technischen Gründen nicht. Das Klonen eines Repositorys ist schreibgeschützt. Es ist keine Authentifizierung erforderlich. Dieser Vorgang kann über viele Protokolle ausgeführt werden, einschließlich HTTPS, dasselbe Protokoll, mit dem die Webseite das Repo im Browser anzeigt. Es ist sehr schwer zu zählen.

Siehe: http://git-scm.com/book/en/Git-on-the-Server-The-Protocols

Vor kurzem hat Github die Download-Funktionalität abgelehnt. Dies lag daran, dass sie verstehen, dass Github sich auf das Erstellen von Software und nicht auf das Verteilen von Binärdateien konzentriert.

Siehe: https://github.com/blog/1302-goodbye-uploads


7

Wie bereits erwähnt, gibt die GitHub-API die Anzahl der Downloads von Binärdateiveröffentlichungen zurück. Ich habe ein kleines Skript entwickelt, um die Anzahl der Downloads über die Befehlszeile zu ermitteln.


Wo kann ich ein Beispiel dafür sehen? Kann es einem Github-Abzeichen hinzugefügt werden? Wenn nicht, wäre es möglich, Google Analytics zu verwenden, um die Anzahl der Downloads für das Github-Abzeichen zu ermitteln?
Eonist

6

Sehr spät, aber hier ist die Antwort, die Sie wollen:

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

Suchen Sie als Nächstes die ID des gesuchten Projekts in den Daten. Es sollte sich oben neben den URLs befinden. Navigieren Sie dann zu

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

Das Feld download_count ist Ihre Antwort.

BEARBEITEN: Großbuchstaben spielen in Ihrem Benutzernamen und Projektnamen eine Rolle


Wie kommt es, dass mein Vermögen keinen Inhalt hat und nur "[]" zeigt
Griffan

Hast du alles richtig eingegeben? Stellen Sie sicher, dass Sie Releases haben und das richtige Projekt überprüfen.
LeChosenOne

Ich finde heraus, dass sie nur Binärdateien in der Veröffentlichung verfolgen, nicht Quellcode Tarball oder Zip, was
scheiße ist

Jep. Eine Version ist eine Binärdatei, die an andere weitergegeben werden soll, kein Quellcode für Entwickler.
LeChosenOne

5
Funktioniert das noch { "message": "Not Found", "documentation_url": "https://developer.github.com/v3" }
Ich bekomme

5

Die Github-API liefert nicht mehr die erforderlichen Informationen. Schauen Sie sich die Release- Seite an , die in Stan Towianskis Antwort erwähnt wird . Wie wir in den Kommentaren zu dieser Antwort besprochen haben, meldet die Github-API nur die Downloads von 1 der drei Dateien, die er pro Version anbietet.

Ich habe die Lösungen überprüft und einige andere Antworten auf diese Fragen gegeben. Voncs Antwort ist der wesentliche Teil der Lösung von Michele Milidoni . Ich habe sein GDC-Skript mit dem folgenden Ergebnis installiert

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

Wie Sie deutlich sehen können, meldet gdc nicht die Downloadanzahl der Dateien tar.gz und zip.

Wenn Sie überprüfen möchten, ohne etwas zu installieren, versuchen Sie es mit der Webseite, auf der Somsubhra die in seiner Antwort erwähnte Lösung installiert hat . Geben Sie 'stant' als Github-Benutzernamen und 'mdcsvimporter2015' als Repository-Namen ein und Sie werden Dinge sehen wie:

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

Leider noch einmal nur ein Bericht ohne die Downloads der Dateien tar.gz und zip. Ich habe die Informationen, die die Github-API zurückgibt, sorgfältig geprüft, sie werden jedoch nirgendwo bereitgestellt. Die von der API zurückgegebene download_count ist heutzutage bei weitem nicht vollständig.


5

Unter https://githubstats0.firebaseapp.com können Sie überprüfen, wie oft eine Release-Datei / ein Release-Paket heruntergeladen wurde

Sie erhalten eine Gesamtzahl der Downloads und eine Aufschlüsselung der Gesamtzahl der Downloads pro Release-Tag.


Beachten Sie, dass dies nur für Binärdateien in der Version funktioniert, nicht für den Quellcode selbst. Wenn Sie also keine anderen herunterzuladenden Dateien hochladen, zählt dies nicht. Es wird wahrscheinlich die Github-API aus der Antwort von LeChosenOne verwendet.
JoniVR

3

Am Ende habe ich ein Scraper-Skript geschrieben, um die Anzahl meiner Klone zu ermitteln:

#!/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'

Dadurch werden die Daten von demselben Endpunkt abgerufen, den Githubs Klondiagramm verwendet, und die Summen daraus ausgespuckt. Die Daten enthalten auch Tageszählungen, die .summarydurch nur ersetzt werden ., um diese hübsch gedruckt zu sehen.


2

Basierend auf den Antworten von VonC und Michele Milidoni habe ich dieses Lesezeichen erstellt, das Download-Statistiken der von Github gehosteten freigegebenen Binärdateien anzeigt.

Hinweis: Aufgrund von Problemen mit Browsern im Zusammenhang mit der Implementierung von Inhaltssicherheitsrichtlinien können Lesezeichen vorübergehend gegen einige CSP-Anweisungen verstoßen und funktionieren möglicherweise nicht ordnungsgemäß, wenn sie auf Github ausgeführt werden, während CSP aktiviert ist.

Obwohl davon dringend abgeraten wird, können Sie CSP in Firefox als vorübergehende Problemumgehung deaktivieren. Öffnen Sie about: config und setzen Sie security.csp.enable auf false.


2

Um dies klarer zu machen:
Für dieses Github-Projekt: stant / mdcsvimporter2015
https://github.com/stant/mdcsvimporter2015
mit Releases unter
https://github.com/stant/mdcsvimporter2015/releases

Gehen Sie zu http oder https: (Hinweis hinzugefügt "api." und "/ repos")
https://api.github.com/repos/stant/mdcsvimporter2015/releases

Sie erhalten diese JSON-Ausgabe und können nach "download_count" suchen:

    "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"

oder in der Befehlszeile:
wget --no-check-certificate https://api.github.com/repos/stant/mdcsvimporter2015/releases


Soweit ich sehen kann, zählt Github nur die erste der drei Dateien, die Sie zum Herunterladen anbieten, wie z. B. mdcsvimporter-beta-18.zip. Haben Sie jemals einen Weg gefunden, um eine Download-Anzahl von Dingen wie v19.zip zu erhalten?
Jan Ehrhardt

Ich habe nur 3 Releases für md2015 und v19 ist das erste, das zeigt. v19 kam nach diesem Beitrag, daher wird er hier nicht angezeigt. Bist du zur URL gegangen :-)? "download_count": 31, "created_at": "2015-03-26T04: 22: 13Z", "updated_at": "2015-03-26T04: 22: 13Z", "browser_download_url":
Stan Towianski


Hallo. Ich bin mir nicht mal sicher, wo Sie diese Download-URLs gefunden haben, aber das ist eine Frage für Github. Es scheint nur die Dateien zu zählen, die ich veröffentliche (3), und nicht einmal die Quell-Zip-Dateien, die es erstellt (weitere 2 pro meiner Veröffentlichung). Ich habe eine Java-App für mich selbst geschrieben, die ich ausführe, um diesen Anruf zu tätigen, den JSON zurückzubekommen, zu analysieren und nur die Anzahl der Downloads anzuzeigen.
Stan Towianski

Schade. Anscheinend liefert Github nicht die Informationen, die wir brauchen (mehr?). Von den 3 * 3-Dateien, die Sie unter github.com/stant/mdcsvimporter2015/releases haben, wird nur der doenload_count der Release-Datei selbst gemeldet, nicht der * .tar.gz- und der * .zip-Datei. Ich werde eine separate Antwort geben, da sie alle anderen Lösungen betrifft.
Jan Ehrhardt

1

Wie bereits erwähnt, können Sie Informationen zu Ihren Releases über die API abrufen .

Für diejenigen, die WordPress verwenden, habe ich dieses Plugin entwickelt: GitHub Release Downloads . Hier können Sie die Anzahl der Downloads, Links und weitere Informationen für Versionen von GitHub-Repositorys abrufen.

Um die ursprüngliche Frage zu beantworten, gibt der Shortcode [grd_count user="User" repo="MyRepo"]die Anzahl der Downloads für ein Repository zurück. Diese Zahl entspricht der Summe aller Download-Zählwerte aller Releases für ein GitHub-Repository.

Beispiel: Beispiel




0

Für diejenigen, die die Lösung in Python benötigen, habe ich ein einfaches Skript geschrieben.


Python-Skript:


Verwendung:

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


Unterstützung:

  • Unterstützt sofort Python 2 und Python 3 .
  • Kann sowohl als eigenständiges als auch als Python-Modul verwendet werden.

0

Hier ist eine Python-Lösung, die das pip install PyGithubPaket verwendet

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))
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.