A Python tool to count GitHub release downloads.
Project description
GitHub Release Download Counter
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.
Características
- 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.
Requisitos
- Python 3.x
- La librería
requests
Instalación
Puedes instalar este paquete directamente desde PyPI o desde el código fuente.
Desde PyPI
pip install github-release-counter
Desde el código fuente
- 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 .
Uso
Después de la instalación, puedes ejecutar el comando github-release-counter (o su alias grc) directamente en tu terminal.
Argumentos
<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.
Ejemplos
Para obtener las estadísticas completas de un repositorio:
grc marcomolinaleija/github-release-counter
Para obtener solo los tags:
grc marcomolinaleija/github-release-counter --tags-only
Para obtener solo la información de los assets:
grc marcomolinaleija/github-release-counter --assets-only
Para usar un token de GitHub:
grc marcomolinaleija/github-release-counter --token TU_GITHUB_TOKEN
Obtener un Token Personal de Acceso (PAT) de GitHub
- 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!
Uso como Librería
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}")
Contribuciones
¡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".
Licencia
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file github_release_counter-2.0.0.tar.gz.
File metadata
- Download URL: github_release_counter-2.0.0.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b927a54b44250eff913d056664e8138c7d4e507cf9c0b218af4c7e2470519d40
|
|
| MD5 |
fe5dc5c2541f05468455241ee8b8371a
|
|
| BLAKE2b-256 |
50561b328240bf8245173398c3b00f11f293a17ee4b567ec4064dc19a26a1d32
|
File details
Details for the file github_release_counter-2.0.0-py3-none-any.whl.
File metadata
- Download URL: github_release_counter-2.0.0-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a7dcb7459000d917294e9afbc3155fe734d9bc6454c2184293f77576f661610
|
|
| MD5 |
9e87dc62229fb847f9c2883734d82cfd
|
|
| BLAKE2b-256 |
6734a15ae4a50fb74e5a9063605f64ac116e0f21c8d5f67edf9120e9e72a6d41
|