Skip to main content

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

  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.

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

github_release_counter-2.0.0.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

github_release_counter-2.0.0-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

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

Hashes for github_release_counter-2.0.0.tar.gz
Algorithm Hash digest
SHA256 b927a54b44250eff913d056664e8138c7d4e507cf9c0b218af4c7e2470519d40
MD5 fe5dc5c2541f05468455241ee8b8371a
BLAKE2b-256 50561b328240bf8245173398c3b00f11f293a17ee4b567ec4064dc19a26a1d32

See more details on using hashes here.

File details

Details for the file github_release_counter-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for github_release_counter-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8a7dcb7459000d917294e9afbc3155fe734d9bc6454c2184293f77576f661610
MD5 9e87dc62229fb847f9c2883734d82cfd
BLAKE2b-256 6734a15ae4a50fb74e5a9063605f64ac116e0f21c8d5f67edf9120e9e72a6d41

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page