Github: posso vedere il numero di download per un repository?


139

In Github, c'è un modo per vedere il numero di download per un repository?


I conteggi dei cloni sono disponibili per gli utenti autorizzati eseguendo lo scraping con un nome utente / password Github così come i conteggi dei download di file di risorse nelle versioni . Non sembra possibile ottenere conteggi di cloni da repository pubblici o scaricare statistiche su file non asset (ad esempio repository tar.gze zipfile).
Allen Luce

1
Per chiunque legga le risposte, tutti gli script indicati di seguito che forniscono la versione download_count sono errati, in quanto non tengono conto del sistema di paginazione di GitHub e forniscono solo il totale delle 30 versioni più recenti,
Qiri

Risposte:


116

Aggiornamento 2019:

La risposta di Ustin punta a:


Aggiornamento 2017

Puoi ancora utilizzare l' API GitHub per ottenere il conteggio dei download per le tue versioni (che non è esattamente quello che ti è stato chiesto)
Vedi " Ottieni una singola versione ", il download_countcampo.

Non esiste più una schermata del traffico che menziona il numero di cloni repo.
Invece, devi fare affidamento su servizi di terze parti come:

Rilascio di Git 2.14.2


Aggiornamento agosto 2014

GitHub propone anche il numero di cloni per repository nel proprio grafico del traffico:
vedere " Grafici di cloni "

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


Aggiornamento ottobre 2013

Come menzionato di seguito da andyberry88 , e come ho dettagliato lo scorso luglio , GitHub ora propone rilasci (vedi la sua API ), che ha un download_countcampo .

Michele Milidoni , nella sua risposta (migliorata) , usa quel campo nel suo script Python .
( estratto molto piccolo )

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

Risposta originale (dicembre 2010)

Non sono sicuro che tu possa vedere quelle informazioni (se sono registrate), perché non le vedo nell'API del repository 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

Puoi vedere solo se ha download o meno.


1
Questo include download ZIP o solo cloni?
MarzSocks,

1
@MarzSocks se stai parlando del download_countcampo dell'API di rilascio, che dovrebbe includere il numero di download di rilascio (che non sono sempre zip e non sono cloni)
VonC

@MarzSocks se stai parlando di "numero di cloni", questo non dovrebbe includere i download zip. Solo le git cloneistanze. Verificare con il supporto GitHub per la conferma.
VonC,

@danielsp è ancora documentato ufficialmente: help.github.com/articles/viewing-traffic-to-a-repository . Ma sì, non lo vedo nemmeno più: github.com/docker/docker/graphs/contributors
VonC

I file di archivio di origine generati automaticamente non sono risorse. ( Vedi questo commento )
olejorgenb

81

Ho scritto una piccola applicazione web in javascript per mostrare il conteggio del numero di download di tutte le risorse nelle versioni disponibili di qualsiasi progetto su Github. Puoi provare l'applicazione qui: http://somsubhra.github.io/github-release-stats/


5
Continuo a ricevere messaggi "Non ci sono rilasci per questo progetto" o "Il progetto non esiste". Cosa ho sbagliato di sbagliato?
Alex,

Ricevo lo stesso messaggio. Non può essere giusto.
criptico0

3
Sì. Anch'io. Sembra che questa app abbia smesso di funzionare molto tempo fa.
Daan van den Bergh,

1
Questa applicazione non è corretta, poiché include solo le 30 versioni più recenti fornite da GitHub in una risposta API, come dettagliato qui: developer.github.com/v3/guides/traversing-with-pagination È necessario scorrere le pagine da il link "successivo" indicato nell'intestazione per indicare il totale corretto. Un repository di esempio è slamdata / quasar, in cui questo metodo fornisce un totale ampiamente errato.
Qiri,

L'applicazione conta solo repository con versioni
SM Pat

12

GitHub ha deprecato il supporto per il download e ora supporta "Release" - https://github.com/blog/1547-release-your-software . Per creare una versione, utilizzare l'interfaccia utente di GitHub o creare un tag annotato (http: // git-scm.com/book/ch2-6.html) e aggiungere note di rilascio in GitHub. È quindi possibile caricare file binari o "risorse" per ogni versione.

Dopo aver rilasciato alcune versioni, l'API GitHub supporta l'acquisizione di informazioni su di esse e sui relativi asset.

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

Cerca la voce "download_count". Ulteriori informazioni su http://developer.github.com/v3/repos/releases/ . Questa parte dell'API è ancora nel bancomat del periodo di anteprima, quindi potrebbe cambiare.

Aggiornamento novembre 2013:

L'API delle versioni di GitHub non è più disponibile nel periodo di anteprima, quindi l'intestazione "Accetta" non è più necessaria - http://developer.github.com/changes/2013-11-04-releases-api-is-official/

Tuttavia, non farà alcun male continuare ad aggiungere l'intestazione "Accetta".


Sbaglio nel pensare che github attualmente non mostri più un downloadscampo nelle risorse (almeno usando questa tecnica)?
Demis,

Questo metodo sembra funzionare ancora per me. download_countè il campo che indica il numero di download, ad esempio in api.github.com/repos/twbs/bootstrap/releases . Vale la pena notare che solo le "versioni" verranno visualizzate in questo elenco, i tag che compaiono nella pagina delle versioni di un repository non vengono visualizzati nell'elenco delle API, vedere developer.github.com/v3/repos/releases . Ad esempio github.com/jquery/jquery/releases elenca diversi tag nella sezione release ma viene restituito un elenco vuoto per api.github.com/repos/jquery/jquery/releases .
andyberry88,

Grazie! I miei Repo non sembrano avere un tale campo, anche con alcuni tag impostati come "rilasci" - questo non conta i download dei rilasci compressi / tarballed (o il campo è omesso se count=0)? O mostra solo il campo per le richieste Clone? Vedi questo, senza download_count: api.github.com/repos/demisjohn/pytrimsetup/releases . La pagina di github è qui: github.com/demisjohn/pyTRIMSetup/releases
Demis

I conteggi dei download sono disponibili solo per gli asset di rilascio, non per gli archivi del codice sorgente per il tag. Se guardi gli URL bootstrap che ho fornito sopra, hanno un bootstrap-XYZ-dist.zipasset a cui si download_countriferisce il campo. Se vuoi vedere quante persone stanno scaricando una versione, devi caricare una zip di rilascio. Per quanto ne so, non c'è modo di vedere quante persone hanno clonato / scaricato un archivio tramite l'API. La visualizzazione dei grafici (da stackoverflow.com/a/4339085/2634854 sopra) può darti quello che stai cercando.
Andyberry88,

Grazie per il chiarimento. I grafici sono davvero utili.
Demis

12

Il conteggio dei VISITATORI dovrebbe essere disponibile nella dashboard> Traffico (o statistiche o approfondimenti):

inserisci qui la descrizione dell'immagine


7

In precedenza, in Github esistevano due metodi per scaricare il codice: clonare o scaricare come zip a .git repo o caricare un file (ad esempio un file binario) per il download successivo.

Quando si scarica un repository (clone o download come zip), Github non conta il numero di download per limitazioni tecniche. Clonare un repository è un'operazione di sola lettura. Non è richiesta l'autenticazione. Questa operazione può essere eseguita tramite molti protocolli, incluso HTTPS, lo stesso protocollo utilizzato dalla pagina Web per mostrare il repository nel browser. È molto difficile contarlo.

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

Di recente, Github ha deprecato la funzionalità di download. Questo perché capiscono che Github è focalizzato nella creazione di software e non nella distribuzione di file binari.

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


7

Come accennato, l'API GitHub restituisce il conteggio dei download delle versioni dei file binari. Ho sviluppato un piccolo script per ottenere facilmente il conteggio dei download dalla riga di comando.


Ovunque posso vedere un esempio di questo in uso? Può essere aggiunto a un badge Github? In caso contrario, sarebbe possibile utilizzare Google Analytics per ottenere il conteggio dei download sul badge Github in qualche modo?
eonista

6

Molto tardi, ma ecco la risposta che vuoi:

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

Successivamente, trova l'id del progetto che stai cercando nei dati. Dovrebbe essere vicino alla cima, vicino agli URL. Quindi, vai a

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

Il campo denominato download_count è la tua risposta.

EDIT: i capitali contano nel tuo nome utente e nel nome del progetto


come mai i miei beni non hanno contenuti, mostrando solo "[]"
Griffan

Hai digitato tutto correttamente? Assicurati di avere le versioni e di verificare il progetto corretto.
LeChosenOne


Sì. Una versione è un file binario da distribuire ad altri, non un codice sorgente per gli sviluppatori.
LeChosenOne

5
Funziona ancora? { "message": "Not Found", "documentation_url": "https://developer.github.com/v3" }
Sto

5

L'API Github non fornisce più le informazioni necessarie. Dai un'occhiata alla pagina dei comunicati , menzionata nella risposta di Stan Towianski . Come discusso nei commenti a tale risposta, l'API di Github riporta solo i download di 1 dei tre file offerti per ogni versione.

Ho verificato le soluzioni, fornite in alcune altre risposte a queste domande. La risposta di Vonc presenta la parte essenziale della soluzione di Michele Milidoni . Ho installato il suo script gdc con il seguente risultato

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

Come puoi vedere chiaramente, gdc non riporta il conteggio dei download dei file tar.gz e zip.

Se si desidera verificare senza installare nulla, provare la pagina Web in cui Somsubhra ha installato la soluzione, menzionata nella sua risposta . Inserisci 'stant' come nome utente Github e 'mdcsvimporter2015' come nome del repository e vedrai cose come:

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

Purtroppo, ancora una volta solo un rapporto senza i download dei file tar.gz e zip. Ho esaminato attentamente le informazioni restituite dall'API di Github, ma non sono fornite da nessuna parte. Il download_count restituito dall'API è tutt'altro che completo al giorno d'oggi.


5

Per verificare il numero di volte in cui è stato scaricato un file / pacchetto di rilascio, è possibile visitare il sito Web https://githubstats0.firebaseapp.com

Ti dà un conteggio totale dei download e una suddivisione dei download totali per tag di rilascio.


Nota che questo funziona solo per i file binari in rilascio, non per il codice sorgente stesso, il che significa che se non carichi altri file da scaricare non contano. Probabilmente sta usando l'API Github dalla risposta di LeChosenOne.
JoniVR,

3

Ho finito per scrivere una sceneggiatura raschietto per trovare il mio conteggio dei cloni:

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

Questo prenderà i dati dallo stesso endpoint utilizzato dal grafico clone di Github e ne sputerà i totali. I dati includono anche i conteggi giornalieri, sostituisci .summarycon solo .per vedere quelli abbastanza stampati.


2

Basato sulle risposte di VonC e Michele Milidoni, ho creato questo bookmarklet che mostra le statistiche di download dei file binari rilasciati ospitati da github.

Nota: a causa di problemi con i browser relativi all'implementazione delle Norme sulla sicurezza dei contenuti, i bookmarklet possono violare temporaneamente alcune direttive CSP e fondamentalmente potrebbero non funzionare correttamente durante l'esecuzione su Github mentre CSP è abilitato.

Sebbene sia altamente scoraggiato, è possibile disabilitare CSP in Firefox come soluzione temporanea. Apri about: config e imposta security.csp.enable su false.


2

Per provare a renderlo più chiaro:
per questo progetto github: stant / mdcsvimporter2015
https://github.com/stant/mdcsvimporter2015
con versioni su
https://github.com/stant/mdcsvimporter2015/releases

vai su http o https: (nota aggiunta "api." e "/ repos")
https://api.github.com/repos/stant/mdcsvimporter2015/releases

otterrai questo output json e puoi cercare "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"

o dalla riga di comando:
wget --no-check-certificate https://api.github.com/repos/stant/mdcsvimporter2015/releases


Per quanto posso vedere, github conta solo il primo dei tre file che offri per il download, come mdcsvimporter-beta-18.zip. Hai mai trovato un modo per ottenere un download_count di cose come v19.zip?
Jan Ehrhardt,

Ho solo 3 versioni per md2015 e v19 è la prima che mostra. v19 è arrivato dopo questo post, quindi non è mostrato qui. Sei andato all'URL :-)? "download_count": 31, "Created_at": "26-03-2015T04: 22: 13Z", "updated_at": "26-03-2015T04: 22: 13Z", "browser_download_url":
Stan Towianski,


Ciao. Non sono nemmeno sicuro di dove ti sia venuto in mente l'URL di download, ma questa è una domanda per Github. Sembra contare solo i file che rilascio (3) e nemmeno i file zip di origine che crea (altri 2 per mio rilascio). Ho scritto un'app java per me che corro per fare questa chiamata, recuperare il json, analizzare e mostrare solo il conteggio dei download.
Stan Towianski,

Peccato. Apparentemente Github non sta fornendo (di più?) Le informazioni di cui abbiamo bisogno. Dei file 3 * 3 presenti su github.com/stant/mdcsvimporter2015/releases riporta solo il doenload_count del file di rilascio, non dei file * .tar.gz e * .zip. Farò una risposta separata poiché influisce su tutte le altre soluzioni.
Jan Ehrhardt,

1

Come già detto, puoi ottenere informazioni sulle tue uscite tramite l'API .

Per quelli che usano WordPress, ho sviluppato questo plugin: Download delle versioni di GitHub . Consente di ottenere il conteggio dei download, i collegamenti e ulteriori informazioni per le versioni dei repository GitHub.

Per rispondere alla domanda originale, lo shortcode [grd_count user="User" repo="MyRepo"]restituirà il numero di download per un repository. Questo numero corrisponde alla somma di tutti i valori di conteggio dei download di tutte le versioni per un repository GitHub.

Esempio: Esempio




0

Per coloro che hanno bisogno della soluzione in Python, ho scritto un semplice script.


Script Python:


Uso:

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


Supporto:

  • Supporta sia Python 2 che Python 3 pronti all'uso.
  • Può essere usato sia come modulo autonomo che come modulo Python.

0

Ecco una soluzione Python che utilizza il pip install PyGithubpacchetto

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))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.