Github: ¿Puedo ver la cantidad de descargas para un repositorio?


139

En Github, ¿hay alguna manera de ver la cantidad de descargas para un repositorio?


Los recuentos de clones están disponibles para usuarios autorizados al raspar con un nombre de usuario / contraseña de Github, al igual que los recuentos de descargas de archivos de activos dentro de las versiones . No parece posible obtener recuentos de clones de repositorios públicos o descargar estadísticas en archivos que no son activos (es decir, repositorios tar.gzy ziparchivos).
Allen Luce

1
Para cualquiera que lea las respuestas, todos los scripts que figuran a continuación que proporcionan la versión download_count son incorrectos, ya que no tienen en cuenta el sistema de paginación de GitHub, y solo dan el total de las 30 versiones más recientes,
Qiri

Respuestas:


116

Actualización 2019:

La respuesta de Ustin apunta a:


Actualización 2017

Todavía puede usar la API de GitHub para obtener el recuento de descargas para sus versiones (que no es exactamente lo que se le pidió).
Consulte " Obtener una versión única ", el download_countcampo.

Ya no hay una pantalla de tráfico que mencione la cantidad de clones de repositorio.
En cambio, debe confiar en servicios de terceros como:

Lanzamiento de Git 2.14.2


Actualización de agosto de 2014

GitHub también propone el número de clones para repos en su Gráfico de tráfico:
consulte " Gráficos de clonación "

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


Actualización octubre 2013

Como se menciona a continuación por andyberry88 , y como detallé en julio pasado , GitHub ahora propone lanzamientos (consulte su API ), que tiene un download_countcampo .

Michele Milidoni , en su respuesta (votada) , usa ese campo en su script de Python .
( extracto muy pequeño )

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

Respuesta original (diciembre de 2010)

No estoy seguro de que pueda ver esa información (si está registrada), porque no la veo en la API del repositorio de 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

Solo puedes ver si tiene descargas o no.


1
¿Esto incluye descargas ZIP o solo clones?
MarzSocks

1
@MarzSocks si está hablando del download_countcampo de la API de lanzamiento, eso debería incluir el número de descargas de lanzamiento (que no siempre son zip y no son clones)
VonC

@MarzSocks si está hablando de "número de clones", eso no debería incluir las descargas zip. Solo las git cloneinstancias. Consulte con el soporte de GitHub para confirmar.
VonC

@danielsp todavía, todavía está oficialmente documentado: help.github.com/articles/viewing-traffic-to-a-repository . Pero sí, tampoco lo veo más: github.com/docker/docker/graphs/contributors
VonC

Los archivos de origen autogenerados aparentemente no son activos ... ( ver este comentario )
olejorgenb

81

He escrito una pequeña aplicación web en JavaScript para mostrar el recuento de la cantidad de descargas de todos los activos en las versiones disponibles de cualquier proyecto en Github. Puede probar la aplicación aquí: http://somsubhra.github.io/github-release-stats/


55
Sigo recibiendo mensajes de 'No hay lanzamientos para este proyecto' o 'El proyecto no existe'. ¿En qué estoy equivocado?
Alex

Estoy recibiendo el mismo mensaje. Eso no puede estar bien.
cryptic0

3
Sí. Yo también. Parece que esta aplicación dejó de funcionar hace mucho tiempo.
Daan van den Bergh el

1
Esta aplicación no es correcta, ya que solo incluye las 30 versiones más recientes proporcionadas por GitHub en una respuesta API, como se detalla aquí: developer.github.com/v3/guides/traversing-with-pagination Es necesario recorrer las páginas desde el enlace "siguiente" que figura en el encabezado para calcular el total correcto. Un ejemplo de repositorio es slamdata / quasar, donde este método da un total totalmente incorrecto.
Qiri

Recuentos de aplicación sólo pases con comunicados
SM Pat

12

GitHub ha dejado de ser compatible con la descarga y ahora admite 'Versiones': https://github.com/blog/1547-release-your-software . Para crear una versión, use la interfaz de usuario de GitHub o cree una etiqueta anotada (http: // git-scm.com/book/ch2-6.html) y agregue notas de versión en GitHub. A continuación, puede cargar archivos binarios o "activos" en cada versión.

Una vez que tenga algunas versiones, la API de GitHub admite la obtención de información sobre ellas y sus activos.

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

Busque la entrada 'download_count'. Hay más información en http://developer.github.com/v3/repos/releases/ . Esta parte de la API aún se encuentra en el período de vista previa ATM, por lo que puede cambiar.

Actualización de noviembre de 2013:

La API de lanzamientos de GitHub ahora está fuera del período de vista previa, por lo que el encabezado 'Aceptar' ya no es necesario: http://developer.github.com/changes/2013-11-04-releases-api-is-official/

Sin embargo, no hará ningún daño continuar agregando el encabezado 'Aceptar'.


¿Me equivoco al pensar que github ya no muestra un downloadscampo en los activos (al menos con esta técnica)?
Demis

Este método todavía parece estar funcionando para mí. download_countes el campo que indica el número de descargas, por ejemplo en api.github.com/repos/twbs/bootstrap/releases . Vale la pena señalar que solo los 'lanzamientos' aparecerán en esta lista, las etiquetas que aparecen en la página de lanzamientos de un repositorio no aparecen en la lista de API, consulte developer.github.com/v3/repos/releases . Por ejemplo, github.com/jquery/jquery/releases enumera varias etiquetas en la sección de lanzamientos, pero se devuelve una lista vacía para api.github.com/repos/jquery/jquery/releases .
andyberry88

¡Gracias! Mis repositorios no parecen tener un campo así, incluso con algunas etiquetas configuradas como "lanzamientos" count=0. ¿O solo muestra el campo para las solicitudes de clonación? Vea esto, sin download_count: api.github.com/repos/demisjohn/pytrimsetup/releases . La página de Github para eso está aquí: github.com/demisjohn/pyTRIMSetup/releases
Demis

Los recuentos de descargas solo están disponibles para los activos de lanzamiento, no para los archivos de código fuente de la etiqueta. Si observa las URL de arranque que proporcioné anteriormente, tienen un bootstrap-XYZ-dist.zipactivo con el que se download_countrelaciona el campo. Si desea ver cuántas personas están descargando un lanzamiento, debe cargar un zip de lanzamiento. Hasta donde sé, no hay forma de ver cuántas personas han clonado / descargado un archivo a través de la API. Sin embargo, la vista de gráficos (de stackoverflow.com/a/4339085/2634854 ) puede darle lo que busca.
andyberry88

Gracias por aclararlo. Los gráficos son realmente útiles.
Demis

12

El recuento de VISITANTES debe estar disponible en su panel de control> Tráfico (o estadísticas o estadísticas):

ingrese la descripción de la imagen aquí


7

Anteriormente, había dos métodos de descarga de código en Github: clonar o descargar como zip un repositorio .git, o cargar un archivo (por ejemplo, un binario) para descargarlo más tarde.

Al descargar un repositorio (clonar o descargar como zip), Github no cuenta el número de descargas por limitaciones técnicas. Clonar un repositorio es una operación de solo lectura. No se requiere autenticación. Esta operación se puede realizar a través de muchos protocolos, incluido HTTPS, el mismo protocolo que utiliza la página web para mostrar el repositorio en el navegador. Es muy difícil contarlo.

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

Recientemente, Github desaprobó la funcionalidad de descarga. Esto se debe a que entienden que Github se centra en la creación de software, y no en distribuir binarios.

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


7

Como se mencionó, la API de GitHub devuelve el recuento de descargas de lanzamientos de archivos binarios. Desarrollé un pequeño script para obtener fácilmente el recuento de descargas por línea de comando.


¿En algún lugar puedo ver un ejemplo de esto en uso? ¿Se puede agregar a una insignia de Github? Si no, ¿sería posible usar Google Analytics para obtener el recuento de descargas de la insignia de Github de alguna manera?
eonist

6

Muy tarde, pero aquí está la respuesta que quieres:

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

A continuación, encuentre la identificación del proyecto que está buscando en los datos. Debe estar cerca de la parte superior, al lado de las URL. Luego, navegue a

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

El campo llamado download_count es su respuesta.

EDITAR: Las mayúsculas importan en su nombre de usuario y nombre de proyecto


¿Cómo es que mis activos no tienen contenido, solo muestra "[]"
Griffan

¿Escribiste todo correctamente? Asegúrese de tener lanzamientos y de verificar el proyecto correcto.
LeChosenOne

Descubrí que solo realizan un seguimiento de los archivos binarios en el lanzamiento, no el código fuente tarball o zip, que apesta
Griffan

Sip. Un lanzamiento es un binario para ser entregado a otros, no un código fuente para desarrolladores.
LeChosenOne

55
¿Esto todavía funciona? Estoy obteniendo:{ "message": "Not Found", "documentation_url": "https://developer.github.com/v3" }
eonist

5

La API de Github ya no proporciona la información necesaria. Echa un vistazo a la página de lanzamientos , mencionada en la respuesta de Stan Towianski . Como discutimos en los comentarios a esa respuesta, la API de Github solo informa las descargas de 1 de los tres archivos que ofrece por lanzamiento.

He verificado las soluciones, que se proporcionan en algunas otras respuestas a estas preguntas. La respuesta de Vonc presenta la parte esencial de la solución de Michele Milidoni . Instalé su script gdc con el siguiente resultado

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

Como puede ver claramente, gdc no informa el recuento de descargas de los archivos tar.gz y zip.

Si desea verificar sin instalar nada, pruebe la página web donde Somsubhra ha instalado la solución, mencionada en su respuesta . Complete 'stant' como nombre de usuario de Github y 'mdcsvimporter2015' como nombre del repositorio y verá cosas como:

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

Por desgracia, una vez más solo un informe sin las descargas de los archivos tar.gz y zip. He examinado cuidadosamente la información que devuelve la API de Github, pero no se proporciona en ninguna parte. El conteo de descargas que devuelve la API está lejos de estar completo hoy en día.


5

Para verificar la cantidad de veces que se descargó un archivo / paquete de lanzamiento, puede ir a https://githubstats0.firebaseapp.com

Le ofrece un recuento total de descargas y una división de las descargas totales por etiqueta de lanzamiento.


Tenga en cuenta que esto solo funciona para archivos binarios en versión, no para el código fuente en sí, lo que significa que si no carga ningún otro archivo para descargar, no contará. Probablemente esté usando la API de Github de la respuesta de LeChosenOne.
JoniVR

3

Terminé escribiendo un script de scraper para encontrar mi recuento 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'

Esto tomará los datos del mismo punto final que usa el gráfico de clones de Github y escupirá los totales. Los datos también incluyen recuentos por día, reemplácelos .summarysolo .para ver los bonitos impresos.


2

Basado en las respuestas de VonC y Michele Milidoni, he creado este bookmarklet que muestra estadísticas de descargas de binarios liberados alojados en github.

Nota: Debido a problemas con los navegadores relacionados con la implementación de la Política de seguridad de contenido, los marcadores pueden violar temporalmente algunas directivas de CSP y, básicamente, pueden no funcionar correctamente cuando se ejecutan en github mientras CSP está habilitado.

Aunque es altamente desaconsejado, puede deshabilitar CSP en Firefox como una solución temporal. Abre about: config y establece security.csp.enable en false.


2

Para intentar aclarar esto:
para este proyecto github: stant / mdcsvimporter2015
https://github.com/stant/mdcsvimporter2015
con lanzamientos en
https://github.com/stant/mdcsvimporter2015/releases

vaya a http o https: (se agregó la nota "api" y "/ repos")
https://api.github.com/repos/stant/mdcsvimporter2015/releases

obtendrá esta salida json y puede buscar "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 en la línea de comando:
wget --no-check-certificate https://api.github.com/repos/stant/mdcsvimporter2015/releases


Hasta donde puedo ver, github solo cuenta el primero de los tres archivos que ofrece para descargar, como mdcsvimporter-beta-18.zip. ¿Alguna vez encontraste una manera de obtener un número de descargas de cosas como v19.zip?
Jan Ehrhardt

Solo tengo 3 versiones para md2015, y v19 es la primera que se muestra. v19 vino después de esta publicación, por lo que no se muestra aquí. ¿Fuiste a la url :-)? "download_count": 31, "created_at": "2015-03-26T04: 22: 13Z", "updated_at": "2015-03-26T04: 22: 13Z", "browser_download_url":
Stan Towianski


Hola. Ni siquiera estoy seguro de dónde se te ocurrieron esas URL de descarga, pero esa es una pregunta para github. Solo parece contar los archivos que publico (3), y ni siquiera los archivos zip de origen que crea (otros 2 por mi lanzamiento). Escribí una aplicación de Java para mí que ejecuto para hacer esta llamada, recuperar el json, analizar y mostrar solo el recuento de descargas.
Stan Towianski,

Demasiado. Aparentemente, Github no proporciona la información que necesitamos (¿ya?). De los archivos 3 * 3 que tiene en github.com/stant/mdcsvimporter2015/releases , solo informa el doenload_count del archivo de lanzamiento, no de los archivos * .tar.gz y * .zip. Haré la respuesta por separado ya que afecta a todas las demás soluciones.
Jan Ehrhardt

1

Como ya se indicó, puede obtener información sobre sus lanzamientos a través de la API .

Para aquellos que usan WordPress, desarrollé este complemento: Descargas de lanzamiento de GitHub . Le permite obtener el recuento de descargas, enlaces y más información para versiones de repositorios de GitHub.

Para abordar la pregunta original, el shortcode [grd_count user="User" repo="MyRepo"]devolverá el número de descargas para un repositorio. Este número corresponde a la suma de todos los valores de conteo de descargas de todas las versiones para un repositorio de GitHub.

Ejemplo: Ejemplo





0

Aquí hay una solución de Python que usa el pip install PyGithubpaquete

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))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.