Skip to main content

Descargador de cursos de video para Platzi, Udemy y Codigofacilito, con extracción por interceptación de red y motor híbrido yt-dlp / nativo.

Project description

evDownloader

Descargador de cursos de video para Platzi, Udemy y Codigofacilito. Diseño extensible por extractores (una plataforma = un extractor) y motor de descarga híbrido sobre yt-dlp.

Plataformas soportadas

Cada plataforma se autentica de una de dos formas, según su anti-bot:

Plataforma Autenticación Cómo
Platzi Login manual asistido login abre un navegador (Playwright) para que inicies sesión una vez; las cookies quedan guardadas
Udemy Cookies del navegador real Está tras Cloudflare Turnstile; se reutiliza la sesión de tu navegador con --cookies-from-browser
Codigofacilito Cookies del navegador real Video servido por BunnyCDN; se resuelve con yt-dlp y --cookies-from-browser

Para Udemy y Codigofacilito debes tener la sesión ya iniciada en tu navegador (Brave, Chrome, Safari, Edge o Firefox). No se usa el comando login.

Instalación

evDownloader es una CLI de Python. Instálala como herramienta aislada con uv (recomendado) o pipx:

# Con uv
uv tool install evdownloader

# …o con pipx
pipx install evdownloader

Esto deja disponibles los comandos evdownloader y su alias corto evd.

Prerrequisitos

  • FFmpeg en el PATH (muxeo y HLS):

    brew install ffmpeg      # macOS / Linux (Homebrew)
    scoop install ffmpeg     # Windows (Scoop)
    sudo apt install ffmpeg  # Debian / Ubuntu
    
  • Chromium de Playwrightsolo si vas a usar Platzi. Instálalo una vez:

    evdownloader setup
    

    Udemy y Codigofacilito no lo necesitan.

Uso por plataforma

Platzi

# Una vez: iniciar sesión (abre el navegador para login manual)
evdownloader login

# Descargar el curso
evdownloader download "https://platzi.com/cursos/<curso>/"

Udemy

# Requiere estar logueado en el navegador (ej. Brave) y pasar --cookies-from-browser
evdownloader download \
  "https://www.udemy.com/course/<curso>/" \
  --cookies-from-browser brave

Codigofacilito

# Requiere estar logueado en el navegador (ej. Brave) y pasar --cookies-from-browser
evdownloader download \
  "https://codigofacilito.com/cursos/<curso>" \
  --cookies-from-browser brave

La salida se organiza sola en downloads/<Plataforma>/<curso>/<NN-módulo>/<NN-clase>.mp4.

Ejemplos

# Platzi, calidad máxima 1080p, en un directorio concreto
evdownloader download "https://platzi.com/cursos/git-github/" -q 1080 -o ~/Cursos

# Codigofacilito, solo las primeras 5 clases (prueba rápida), cookies de Chrome
evd download "https://codigofacilito.com/cursos/git-profesional" \
  --cookies-from-browser chrome --limit 5

# Udemy, sin descargar recursos/adjuntos y forzando re-descarga
evdownloader download "https://www.udemy.com/course/<curso>/" \
  --cookies-from-browser brave --no-resources --overwrite

# Solo subtítulos en español e inglés (plataformas que delegan subs en yt-dlp)
evdownloader download "<url>" --cookies-from-browser brave --sub-langs es,en

# Ver el navegador durante el login/descarga de Platzi (depuración)
evdownloader download "https://platzi.com/cursos/<curso>/" --show-browser

Opciones del comando download

Opción Descripción
-q, --quality Calidad máxima: 1080, 720… (por defecto: la máxima disponible)
-o, --output Directorio de salida (por defecto ./downloads)
-d, --downloader Motor: ytdlp (por defecto) o native (rnet + FFmpeg)
-w, --overwrite Sobrescribir archivos existentes
-n, --limit Descargar solo las primeras N clases de video
--no-cache Ignorar la caché de estructura del curso
--no-resources No descargar resumen, adjuntos, enlaces ni MHTML
--cookies-from-browser Navegador del que leer cookies (brave, chrome, safari…). Requerido para Udemy y Codigofacilito
--sub-langs Idiomas de subtítulos (yt-dlp): all, es,en, es.*
--show-browser Mostrar el navegador (no headless) — solo Platzi

Otros comandos

evdownloader setup          # instala Chromium de Playwright (solo Platzi)
evdownloader status         # ¿hay sesión activa? (Platzi)
evdownloader logout         # cerrar sesión guardada
evdownloader clear-cache    # borrar la caché de estructura de cursos

Desarrollo

git clone https://github.com/EduardoVeraE/evDownloader
cd evDownloader
uv sync --extra dev
uv run playwright install chromium   # solo si vas a probar Platzi

# Calidad
uv run ruff check src/ tests/
uv run mypy src/evdownloader
uv run python -m pytest

Arquitectura

Capa Módulo Responsabilidad
CLI cli.py Comandos login, logout, download, status, clear-cache, setup
Sesión session.py, browser.py Login manual y cookies persistentes (Platzi)
Extractores extractors/ Estructura del curso + resolución de video por plataforma
Descarga downloaders/ ytdlp (por defecto) y native (rnet + FFmpeg)
Orquestación service.py Une todo y organiza la salida en carpetas

Hay dos patrones de extractor: navegador (Platzi, intercepta la red con Playwright) y delegación en yt-dlp + cookies del navegador (Udemy, Codigofacilito, sin navegador automatizado). Añadir una plataforma es escribir un extractor nuevo; el núcleo es agnóstico.

Notas de compatibilidad (Python 3.14)

yt-dlp, pydantic (>=2.12), rnet (>=2.4.2) y greenlet (>=3.5.1) publican wheels para 3.14. playwright 1.60 aún no lo clasifica oficialmente pero funciona en la práctica (su única dependencia C, greenlet, ya lo soporta). Si surgiera un problema, el plan de respaldo es migrar el navegado a nodriver.

Aviso legal

Úsalo solo para descargar contenido al que tengas acceso legítimo (tu propia suscripción), respetando los Términos de Servicio de cada plataforma.

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

evdownloader-0.1.0.tar.gz (65.3 kB view details)

Uploaded Source

Built Distribution

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

evdownloader-0.1.0-py3-none-any.whl (37.7 kB view details)

Uploaded Python 3

File details

Details for the file evdownloader-0.1.0.tar.gz.

File metadata

  • Download URL: evdownloader-0.1.0.tar.gz
  • Upload date:
  • Size: 65.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for evdownloader-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8a6f5d3ace2931eb375447c9aa8b913138dc35327a97c0b0458f07712e7c435a
MD5 126a5ea95ed1a427169bc5ae72756323
BLAKE2b-256 7ca19244c0ecfc9f6138ea2daad9fa5a8625969edfc3c95c36658d537a815272

See more details on using hashes here.

Provenance

The following attestation bundles were made for evdownloader-0.1.0.tar.gz:

Publisher: release.yml on EduardoVeraE/evDownloader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file evdownloader-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: evdownloader-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 37.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for evdownloader-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e21b5cc2b2f43a05929058a1d327ac3e1ead05692aec1ca7887dcfbeb4fe2e8f
MD5 2c2cee67fa7333a6150c5f2c59aa97b8
BLAKE2b-256 574f45d40a4c496549c682c1e6bf5fbd068cf2dc1d5e0e673665ee093bf6a0d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for evdownloader-0.1.0-py3-none-any.whl:

Publisher: release.yml on EduardoVeraE/evDownloader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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