Skip to main content

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

  1. Clona este repositorio:
    git clone https://github.com/marcomolinaleija/github-release-counter.git
    cd github-release-counter
    
  2. 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 formato propietario/repositorio.
  • --token o -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

  1. Ve a GitHub Settings.
  2. Haz clic en "Generate new token" (o "Generate new token (classic)").
  3. Dale un nombre descriptivo (ej. "Release Counter Token").
  4. 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.
  5. 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)

Source distribution for github-release-counter 2.0.0
File Size Uploaded Provenance
github_release_counter-2.0.0.tar.gz 7.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for github-release-counter 2.0.0
File Interpreter ABI Platform
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page