En Github, ¿hay alguna manera de ver la cantidad de descargas para un repositorio?
En Github, ¿hay alguna manera de ver la cantidad de descargas para un repositorio?
Respuestas:
Actualización 2019:
La respuesta de Ustin apunta a:
/repos/:owner/:repo/traffic/clones
, para obtener el número total de clones y desglose por día o semana, pero: solo durante los últimos 14 días./repos/:owner/:repo/releases/:release_id
para obtener el número de descargas de sus activos (archivos adjuntos a la versión), campo download_count
mencionado a continuación, pero, como se comentó , solo para las 30 versiones más recientes.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_count
campo.
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:
www.netguru.co/gititback
), pero incluso eso no incluye el número de clones.githubstats0
, mencionado a continuación por Aveek Saha .
www.somsubhra.com/github-release-stats , mencionados a continuación .
Por ejemplo, aquí está el número de la última versión de git para Windows
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 "
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_count
campo .
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.
download_count
campo 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)
git clone
instancias. Consulte con el soporte de GitHub para confirmar.
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/
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.
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'.
downloads
campo en los activos (al menos con esta técnica)?
download_count
es 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 .
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
bootstrap-XYZ-dist.zip
activo con el que se download_count
relaciona 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.
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.
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.
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
{ "message": "Not Found", "documentation_url": "https://developer.github.com/v3" }
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.
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.
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 .summary
solo .
para ver los bonitos impresos.
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.
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
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:
Respuesta desde 2019:
Hice una aplicación web que muestra las estadísticas de lanzamiento de GitHub en un formato limpio: https://hanadigital.github.io/grev/
Para aquellos que necesitan la solución en Python, escribí un script simple.
ghstats.py [user] [repo] [tag] [options]
Aquí hay una solución de Python que usa el pip install PyGithub
paquete
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))
tar.gz
yzip
archivos).