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.
Metadata
Release files for github-release-counter 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| github_release_counter-2.0.0.tar.gz | 7.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| github_release_counter-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.9 kB
Release files / github_release_counter-2.0.0.tar.gz
| Download URL | github_release_counter-2.0.0.tar.gz |
|---|---|
| Size | 7.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b927a54b44250eff913d056664e8138c7d4e507cf9c0b218af4c7e2470519d40
|
|
BLAKE2b-256 checksum How to use checksums |
50561b328240bf8245173398c3b00f11f293a17ee4b567ec4064dc19a26a1d32
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.8
|
Release files / github_release_counter-2.0.0-py3-none-any.whl
| Download URL | github_release_counter-2.0.0-py3-none-any.whl |
|---|---|
| Size | 8.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8a7dcb7459000d917294e9afbc3155fe734d9bc6454c2184293f77576f661610
|
|
BLAKE2b-256 checksum How to use checksums |
6734a15ae4a50fb74e5a9063605f64ac116e0f21c8d5f67edf9120e9e72a6d41
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.8
|
Security for github-release-counter 2.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.