Github: Puis-je voir le nombre de téléchargements pour un dépôt?

139

Dans Github, y a-t-il un moyen de voir le nombre de téléchargements pour un dépôt?

Dhulihan
la source
Le nombre de clones est disponible pour les utilisateurs autorisés en grattant avec un nom d'utilisateur / mot de passe Github, tout comme le nombre de téléchargements de fichiers d'actifs dans les versions . Il ne semble pas possible d'obtenir le nombre de clones à partir des dépôts publics ou de télécharger des statistiques sur des fichiers non actifs (c'est-à-dire des dépôts tar.gzet des zipfichiers).
Allen Luce
1
Pour quiconque lit les réponses, tous les scripts donnés ci-dessous fournissant la version download_count sont faux, car ils ne prennent pas en compte le système de pagination de GitHub, et ne donnent le total que pour les 30 dernières versions,
Qiri

Réponses:

116

Mise à jour 2019:

La réponse d' Ustin indique:


Mise à jour 2017

Vous pouvez toujours utiliser l' API GitHub pour obtenir le nombre de téléchargements de vos versions (ce qui n'est pas exactement ce qui a été demandé)
Voir « Obtenir une seule version », le download_countchamp.

Il n'y a plus d'écran de trafic mentionnant le nombre de clones de repo.
Au lieu de cela, vous devez vous fier à des services tiers tels que:

Version de Git 2.14.2


Mise à jour août 2014

GitHub propose également le nombre de clones pour le repo dans son Traffic Graph:
Voir " Clone Graphs "

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


Mise à jour octobre 2013

Comme mentionné ci - dessous par andyberry88 , et comme je l' ai détaillé en juillet dernier , GitHub propose désormais des versions (voir son API ), qui a un download_countchamp .

Michele Milidoni , dans sa réponse (votée pour) , utilise ce champ dans son script python .
( très petit extrait )

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

Réponse originale (décembre 2010)

Je ne suis pas sûr que vous puissiez voir ces informations (si elles sont enregistrées du tout), car je ne les vois pas dans l' API du référentiel 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

Vous pouvez seulement voir s'il a des téléchargements ou non.

VonC
la source
1
Cela inclut-il les téléchargements ZIP ou simplement les clones?
MarzSocks
1
@MarzSocks si vous parlez du download_countchamp de l'API de version, cela devrait inclure le nombre de téléchargements de versions (qui ne sont pas toujours zip et ne sont pas des clones)
VonC
@MarzSocks si vous parlez de "nombre de clones", cela ne devrait pas inclure les téléchargements zip. Seulement les git cloneinstances. Vérifiez auprès de l'assistance GitHub pour confirmation.
VonC
@danielsp encore, il est toujours officiellement documenté: help.github.com/articles/viewing-traffic-to-a-repository . Mais oui, je ne le vois plus non plus: github.com/docker/docker/graphs/contributors
VonC
Les fichiers d'archive source générés automatiquement ne sont apparemment pas des actifs. ( Voir ce commentaire )
olejorgenb
81

J'ai écrit une petite application Web en javascript pour afficher le nombre de téléchargements de tous les actifs dans les versions disponibles de tout projet sur Github. Vous pouvez essayer l'application ici: http://somsubhra.github.io/github-release-stats/

Somsubhra
la source
5
Je continue à recevoir des messages "Il n'y a pas de versions pour ce projet" ou "Le projet n'existe pas". Qu'est-ce que je me trompe?
Alex
Je reçois le même message. Cela ne peut pas être vrai.
cryptic0
3
Oui. Moi aussi. Il semble que cette application a cessé de fonctionner il y a longtemps.
Daan van den Bergh le
1
Cette application n'est pas correcte, car elle n'inclut que les 30 versions les plus récentes fournies par GitHub dans une réponse d'API, comme détaillé ici: developer.github.com/v3/guides/traversing-with-pagination Il est nécessaire de parcourir les pages de le lien "suivant" donné dans l'en-tête pour calculer le total correct. Un exemple de dépôt est slamdata / quasar, où cette méthode donne un total totalement incorrect.
Qiri
L'application ne compte que les dépôts avec des versions
SM Pat
12

GitHub a abandonné la prise en charge du téléchargement et prend désormais en charge les `` versions '' - https://github.com/blog/1547-release-your-software . Pour créer une version, utilisez l'interface utilisateur de GitHub ou créez une balise annotée (http: // git-scm.com/book/ch2-6.html) et ajoutez-y des notes de publication dans GitHub. Vous pouvez ensuite télécharger des binaires, ou «actifs», dans chaque version.

Une fois que vous disposez de certaines versions, l'API GitHub prend en charge l'obtention d'informations à leur sujet et sur leurs actifs.

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

Recherchez l'entrée "download_count". Il y a plus d'informations sur http://developer.github.com/v3/repos/releases/ . Cette partie de l'API est toujours dans la période de prévisualisation ATM, elle peut donc changer.

Mise à jour de novembre 2013:

L'API des versions de GitHub est maintenant hors de la période de prévisualisation, donc l'en-tête 'Accept' n'est plus nécessaire - http://developer.github.com/changes/2013-11-04-releases-api-is-official/

Cependant, cela ne fera aucun mal de continuer à ajouter l'en-tête «Accept».

andyberry88
la source
Ai-je tort de penser que github n'affiche plus actuellement de downloadschamp dans les assets (du moins en utilisant cette technique)?
Demis
Cette méthode semble toujours fonctionner pour moi. download_countest le champ qui indique le nombre de téléchargements - par exemple dans api.github.com/repos/twbs/bootstrap/releases . Il est à noter que seules les «versions» apparaîtront dans cette liste, les balises qui apparaissent dans la page des versions d'un dépôt n'apparaissent pas dans la liste des API, voir developer.github.com/v3/repos/releases . Par exemple, github.com/jquery/jquery/releases répertorie plusieurs balises sous la section releases mais une liste vide est renvoyée pour api.github.com/repos/jquery/jquery/releases .
andyberry88
Merci! Mes Repo ne semblent pas avoir un tel champ, même avec certaines balises définies comme "releases" - cela ne compte pas les téléchargements des versions compressées / tarballées (ou le champ est omis si count=0)? Ou affiche uniquement le champ pour les demandes de clonage? Voir ceci, sans download_count: api.github.com/repos/demisjohn/pytrimsetup/releases . La page github pour cela est ici: github.com/demisjohn/pyTRIMSetup/releases
Demis
Le nombre de téléchargements n'est disponible que pour les ressources de version, pas pour les archives de code source de la balise. Si vous regardez les URL de bootstrap que j'ai fournies ci-dessus, elles ont un bootstrap-XYZ-dist.zipatout auquel le download_countchamp se rapporte. Si vous voulez voir combien de personnes téléchargent une version, vous devez télécharger un zip de version. Autant que je sache, il n'y a aucun moyen de voir combien de personnes ont cloné / téléchargé une archive via l'API. La vue graphique (de stackoverflow.com/a/4339085/2634854 ci-dessus) peut vous donner ce que vous recherchez.
andyberry88
Merci de clarifier. Les graphiques sont en effet utiles.
Demis
12

Le nombre de VISITEURS doit être disponible sous votre tableau de bord> Trafic (ou statistiques ou insights):

entrez la description de l'image ici

T.Todua
la source
7

Auparavant, il existait deux méthodes de téléchargement de code dans Github: cloner ou télécharger en zip un dépôt .git, ou télécharger un fichier (par exemple, un binaire) pour un téléchargement ultérieur.

Lors du téléchargement d'un dépôt (cloner ou télécharger sous forme de zip), Github ne compte pas le nombre de téléchargements pour les limitations techniques. Cloner un référentiel est une opération en lecture seule. Aucune authentification n'est requise. Cette opération peut être effectuée via de nombreux protocoles, y compris HTTPS, le même protocole que la page Web utilise pour afficher le dépôt dans le navigateur. Il est très difficile de le compter.

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

Récemment, Github a abandonné la fonctionnalité de téléchargement. C'est parce qu'ils comprennent que Github se concentre sur la création de logiciels et non sur la distribution de binaires.

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

Rarylson Freitas
la source
7

Comme mentionné, l'API GitHub renvoie le nombre de téléchargements de versions de fichiers binaires. J'ai développé un petit script pour obtenir facilement le nombre de téléchargements par ligne de commande.

Michele Milidoni
la source
N'importe où je peux voir un exemple de cela en cours d'utilisation? Peut-il être ajouté à un badge Github? Sinon, serait-il possible d'utiliser Google Analytics pour obtenir le nombre de téléchargements sur le badge Github?
eonist
6

Très tard, mais voici la réponse que vous souhaitez:

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

Ensuite, trouvez l'ID du projet que vous recherchez dans les données. Il devrait être près du haut, à côté des URL. Ensuite, accédez à

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

Le champ nommé download_count est votre réponse.

EDIT: Les majuscules comptent dans votre nom d'utilisateur et le nom de votre projet

LeChosenOne
la source
comment se fait-il que mes éléments
n'aient
Avez-vous tout tapé correctement? Assurez-vous que vous disposez des versions et vérifiez le bon projet.
LeChosenOne
Je découvre qu'ils ne gardent une trace que des fichiers binaires dans la version, pas du code source tarball ou zip, ce qui est nul
Griffan
Ouaip. Une version est un binaire à distribuer à d'autres, pas un code source pour les développeurs.
LeChosenOne
5
Cela fonctionne-t-il toujours? Je reçois:{ "message": "Not Found", "documentation_url": "https://developer.github.com/v3" }
eonist
5

L'API Github ne fournit plus les informations nécessaires. Jetez un œil à la page des communiqués , mentionnée dans la réponse de Stan Towianski . Comme nous en avons discuté dans les commentaires de cette réponse, l'API Github ne rapporte que les téléchargements de 1 des trois fichiers qu'il propose par version.

J'ai vérifié les solutions, fournies dans d'autres réponses à ces questions. La réponse de Vonc présente l'essentiel de la solution de Michele Milidoni . J'ai installé son script gdc avec le résultat suivant

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

Comme vous pouvez le voir clairement, gdc ne rapporte pas le nombre de téléchargements des fichiers tar.gz et zip.

Si vous voulez vérifier sans rien installer, essayez la page Web où Somsubhra a installé la solution, mentionnée dans sa réponse . Remplissez 'stant' comme nom d'utilisateur Github et 'mdcsvimporter2015' comme nom de dépôt et vous verrez des choses comme:

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

Hélas, encore une fois seulement un rapport sans les téléchargements des fichiers tar.gz et zip. J'ai soigneusement examiné les informations renvoyées par l'API de Github, mais elles ne sont fournies nulle part. Le download_count que l'API renvoie est loin d'être terminé de nos jours.

Jan Ehrhardt
la source
5

Pour vérifier le nombre de téléchargements d'un fichier / package de version, vous pouvez aller sur https://githubstats0.firebaseapp.com

Il vous donne un nombre total de téléchargements et une répartition du nombre total de téléchargements par balise de version.

Aveek Saha
la source
Notez que cela ne fonctionne que pour les fichiers binaires en version, pas pour le code source lui-même, ce qui signifie que si vous ne téléchargez pas d'autres fichiers à télécharger, cela ne comptera pas. Il utilise probablement l'API Github de la réponse de LeChosenOne.
JoniVR
3

J'ai fini par écrire un script de raclage pour trouver mon nombre de clones:

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

Cela récupérera les données du même point de terminaison que le graphique de clonage de Github utilise et en crachera les totaux. Les données incluent également les décomptes par jour, remplacez-les .summarypar juste .pour voir ces jolis imprimés.

Allen Luce
la source
2

Basé sur les réponses de VonC et de Michele Milidoni, j'ai créé ce bookmarklet qui affiche les statistiques de téléchargement des binaires publiés hébergés par github.

Remarque: en raison de problèmes avec les navigateurs liés à la mise en œuvre de la politique de sécurité du contenu, les bookmarklets peuvent temporairement violer certaines directives CSP et peuvent ne pas fonctionner correctement lors de l'exécution sur github alors que CSP est activé.

Bien que ce soit fortement déconseillé, vous pouvez désactiver CSP dans Firefox comme solution de contournement temporaire. Ouvrez about: config et définissez security.csp.enable sur false.

jwaliszko
la source
2

Pour essayer de rendre cela plus clair:
pour ce projet github: stant / mdcsvimporter2015
https://github.com/stant/mdcsvimporter2015
avec des versions sur
https://github.com/stant/mdcsvimporter2015/releases

allez sur http ou https: (note ajoutée "api." et "/ repos")
https://api.github.com/repos/stant/mdcsvimporter2015/releases

vous obtiendrez cette sortie json et vous pourrez rechercher "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"

ou en ligne de commande, faites:
wget --no-check-certificate https://api.github.com/repos/stant/mdcsvimporter2015/releases

Stan Towianski
la source
Pour autant que je sache, github ne compte que le premier des trois fichiers que vous proposez au téléchargement, comme mdcsvimporter-beta-18.zip. Avez-vous déjà trouvé un moyen d'obtenir un nombre de téléchargements de choses comme v19.zip?
Jan Ehrhardt
Je n'ai que 3 versions pour md2015, et la v19 est la première à apparaître. v19 est venu après ce post, donc il n'est pas montré ici. Êtes-vous allé à l'url :-)? "download_count": 31, "created_at": "2015-03-26T04: 22: 13Z", "updated_at": "2015-03-26T04: 22: 13Z", "browser_download_url":
Stan Towianski
Mais pour autant que je sache, Github ne compte pas les téléchargements de github.com/stant/mdcsvimporter2015/archive/v19.zip et github.com/stant/mdcsvimporter2015/archive/v18-alpha.tar.gz
Jan Ehrhardt
Salut. Je ne sais même pas d'où vous êtes venu avec ces URL de téléchargement, mais c'est une question pour github. Il ne semble compter que les fichiers que je publie (3), et même pas les fichiers zip source qu'il crée (2 autres par version). J'ai écrit une application Java pour moi-même que je lance pour passer cet appel, récupérer le json, analyser et afficher uniquement le nombre de téléchargements.
Stan Towianski
Dommage. Apparemment, Github ne fournit (plus?) Les informations dont nous avons besoin. Parmi les fichiers 3 * 3 que vous avez sur github.com/stant/mdcsvimporter2015/releases, il ne signale que le doenload_count du fichier de version lui-même, et non les fichiers * .tar.gz et * .zip. Je vais faire une réponse distincte car elle affecte toutes les autres solutions.
Jan Ehrhardt
1

Comme déjà indiqué, vous pouvez obtenir des informations sur vos versions via l'API .

Pour ceux qui utilisent WordPress, j'ai développé ce plugin: GitHub Release Downloads . Il vous permet d'obtenir le nombre de téléchargements, des liens et plus d'informations sur les versions des référentiels GitHub.

Pour répondre à la question d'origine, le shortcode [grd_count user="User" repo="MyRepo"]renverra le nombre de téléchargements pour un référentiel. Ce nombre correspond à la somme de toutes les valeurs du nombre de téléchargements de toutes les versions pour un référentiel GitHub.

Exemple: Exemple

IvanRF
la source
1

Réponse de 2019:

  1. Pour le nombre de clones, vous pouvez utiliser https://developer.github.com/v3/repos/traffic/#clones (mais sachez que cela ne renvoie le compte que pour les 14 derniers jours)
  2. Pour obtenir le nombre de téléchargements de vos ressources (fichiers joints à la version), vous pouvez utiliser https://developer.github.com/v3/repos/releases/#get-a-single-release (exactement la propriété "download_count" du éléments de la liste des actifs en réponse)
Ustin
la source
0

Pour ceux qui ont besoin de la solution en Python, j'ai écrit un script simple.


Script Python:


Usage:

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


Soutien:

  • Prend en charge à la fois Python 2 et Python 3 prêts à l'emploi.
  • Peut être utilisé à la fois comme module autonome et comme module Python.
kéfir500
la source
0

Voici une solution python utilisant le pip install PyGithubpackage

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))
user1767754
la source