Files
yt-local/README.es.md
Jesus c6c8030907
All checks were successful
CI / test (push) Successful in 52s
feat: add Spanish README and improve channel/playlist handling
* Add complete Spanish translation (README.es.md)
* Restructure English README for clarity and conciseness
* Filter out YouTube Shorts from channel video listings (sort=4)
* Add fallback for video count using playlist metadata when API returns zero
* Add get_playlist_metadata() to fetch metadata without full video list
* Add is_short() utility to detect YouTube Shorts by duration, badges, and type
* Export is_short from yt_data_extract for use across modules
2026-04-12 20:20:32 -05:00

5.7 KiB

yt-local

Un cliente local de YouTube que se ejecuta en tu máquina. Sin anuncios, sin JavaScript, con soporte para Tor.

CaracterísticasInstalaciónUsoTorDesarrollo


¿Qué es?

yt-local es un servidor web local que actúa como proxy entre tu navegador y YouTube. Las páginas se cargan rápido, sin anuncios ni tracking. Las peticiones pueden pasar por Tor de forma opcional.

No usa la API de YouTube. Hace las mismas peticiones que haría la web normal, pero sin todo lo demás.

Características

  • Navegación anónima con Tor opcional
  • Sin anuncios ni JavaScript
  • Tres temas: claro, gris y oscuro
  • Listas de reproducción locales (no se pierden si YouTube borra videos)
  • Sistema de suscripciones independiente de YouTube
  • Soporte de subtítulos
  • Segmentos de SponsorBlock saltados automáticamente
  • Calidades de 144p a 2160p con soporte HLS
  • Descarga de videos (desactivada por defecto)
  • Comentarios visibles al instante, sin lazy-loading

Instalación

Linux / macOS

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python server.py

Windows

Descarga el zip de Releases y ejecuta run.bat.

Con Make

make install   # Dependencias
make dev       # Servidor
make test      # Tests
make help      # Todos los comandos

Uso

El servidor arranca en http://localhost:9010/

Para ver un video, añade el dominio como prefijo:

http://localhost:9010/https://www.youtube.com/watch?v=VIDEO_ID

Redirector

Puedes usar una extensión del navegador como Redirector para redirigir YouTube automáticamente:

Campo Valor
Patrón `^(https?://(?:[a-zA-Z0-9_-]*.)?(?:youtube.com
Redirigir a http://localhost:9010/$1
Modo Expresión regular

Activa "Iframes" en las opciones avanzadas para que funcionen los embeds.

Modo portable

Crea un archivo vacío settings.txt en el directorio principal. Así toda la configuración y datos se guardan ahí en vez de en ~/.yt-local.

Tor

Opción rápida: Tor Browser

Abre Tor Browser y déjalo abierto. En los ajustes de yt-local pon "Route Tor" en "On, except video".

Tor independiente

Debian/Ubuntu:

sudo apt install tor
sudo systemctl start tor

Cambia el puerto Tor a 9050 en los ajustes.

Windows: Crea un acceso directo con: tor.exe SOCKSPort 9150 ControlPort 9151

Routing de video por Tor

Pon "Route Tor" en "On, including video". Es más lento y consume ancho de banda de la red Tor — considera hacer una donación a los nodos de Tor.

Importar suscripciones

  1. Ve a Google Takeout
  2. Selecciona solo "subscriptions" y descarga el CSV
  3. En yt-local, importa el archivo desde el gestor de suscripciones

Formatos soportados: CSV de Google Takeout, JSON de NewPipe, OPML, y JSON antiguo de Google Takeout.

Desarrollo

yt-local/
├── server.py              # Punto de entrada, servidor WSGI
├── settings.py            # Gestión de configuración
├── youtube/
│   ├── util.py            # Funciones auxiliares, routing Tor
│   ├── watch.py           # Página de video
│   ├── channel.py         # Páginas de canal
│   ├── search.py          # Búsquedas
│   ├── subscriptions.py   # Suscripciones (SQLite)
│   ├── local_playlist.py  # Listas locales
│   ├── yt_data_extract/   # Parser del JSON de YouTube
│   └── ...
├── tests/                 # Tests con pytest
└── docs/HACKING.md        # Guía de desarrollo

Comandos útiles

make test              # Ejecutar tests
make lint              # Verificar estilo
make i18n-extract      # Extraer cadenas
make i18n-init LANG_CODE=fr   # Nuevo idioma
make i18n-compile      # Compilar traducciones

Python 3.8+ requerido. El código sigue PEP 8. Los mensajes de commit deben ser descriptivos.

Notas de compatibilidad

  • Python 3.8+: Versión mínima requerida
  • HLS: Soporte experimental para streaming en videos multi-audio
  • Canales con limitaciones: Algunos canales devuelven pocos videos por respuesta. Esto es comportamiento de YouTube, no de yt-local. El proyecto usa la API interna de YouTube (innertube), no la API pública de YouTube.

Licencia

GNU AGPLv3 o posterior. Ver LICENSE.

Proyectos similares