Este script de Python te permite obtener el número total de descargas de todos los assets de los lanzamientos de un repositorio de GitHub.
- Obtiene el conteo de descargas por lanzamiento y por asset.
- Muestra el total de descargas de todos los lanzamientos.
- Manejo básico de errores para problemas de conexión o respuestas inesperadas de la API.
- Python 3.x
- La librería
requests
Puedes instalar este paquete directamente desde PyPI o desde el código fuente.
pip install github-release-counter- Clona este repositorio:
git clone https://github.com/marcomolinaleija/github-release-counter.git cd github-release-counter - Instala el paquete en modo editable (para desarrollo) o normal:
pip install .
Después de la instalación, puedes ejecutar el comando github-release-counter (o su alias grc) directamente en tu terminal.
<propietario/repositorio>(obligatorio): La ruta del repositorio de GitHub en formatopropietario/repositorio.--tokeno-t(opcional): Tu Token de Acceso Personal (PAT) de GitHub para aumentar el límite de la API.--tags-only(opcional): Muestra solo los nombres de los tags de los lanzamientos.--assets-only(opcional): Muestra solo los assets de cada lanzamiento y su contador de descargas.
Para obtener las estadísticas completas de un repositorio:
grc marcomolinaleija/github-release-counterPara obtener solo los tags:
grc marcomolinaleija/github-release-counter --tags-onlyPara obtener solo la información de los assets:
grc marcomolinaleija/github-release-counter --assets-onlyPara usar un token de GitHub:
grc marcomolinaleija/github-release-counter --token TU_GITHUB_TOKEN- Ve a GitHub Settings.
- Haz clic en "Generate new token" (o "Generate new token (classic)").
- Dale un nombre descriptivo (ej. "Release Counter Token").
- Selecciona los permisos necesarios. Para este script, no se necesitan permisos específicos, ya que solo lee información pública. Puedes dejarlo sin seleccionar ningún scope.
- Haz clic en "Generate token" y copia el token generado. ¡Guárdalo en un lugar seguro, ya que solo se muestra una vez!
Con la nueva estructura modular, puedes importar la clase GitHubAPI para integrar fácilmente la obtención de datos de lanzamientos en tus propios scripts.
from github_release_counter.github_api import GitHubAPI, RepoFormatError, GitHubAPIError
import os
# Repositorio de ejemplo
REPO = "marcomolinaleija/github-release-counter"
TOKEN = os.getenv("GITHUB_TOKEN") # Opcional, para aumentar el límite de la API
try:
# 1. Crear una instancia de la API
print(f"Creando instancia para {REPO}...")
api = GitHubAPI(repo_path=REPO, github_token=TOKEN)
# 2. Obtener los datos de los lanzamientos
print("Obteniendo lanzamientos...")
releases = api.get_releases()
if releases:
print(f"\nSe encontraron {len(releases)} lanzamientos para {api.owner}/{api.repo}.")
total_downloads = 0
for release in releases:
total_downloads += release['total_release_downloads']
print(f"- Tag: {release['tag_name']}, Descargas del lanzamiento: {release['total_release_downloads']}")
print(f"\nDescargas totales de todos los lanzamientos: {total_downloads}")
else:
print(f"No se encontraron lanzamientos para {REPO}.")
except (RepoFormatError, GitHubAPIError) as e:
print(f"Ocurrió un error: {e}")
except Exception as e:
print(f"Ocurrió un error inesperado: {e}")¡Las contribuciones son bienvenidas! Si encuentras un error o tienes una sugerencia de mejora, por favor abre un "issue" o envía un "pull request".
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.