# 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 ```bash python3 -m venv venv source venv/bin/activate pip install -r requirements.txt python server.py ``` ### Windows Descarga el zip de [Releases](https://github.com/user234683/youtube-local/releases) y ejecuta `run.bat`. ### Con Make ```bash 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](https://github.com/einaregilsson/Redirector) para redirigir YouTube automáticamente: | Campo | Valor | |-------|-------| | Patrón | `^(https?://(?:[a-zA-Z0-9_-]*\.)?(?:youtube\.com|youtu\.be|youtube-nocookie\.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:** ```bash 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](https://torservers.net/donate.html). ## Importar suscripciones 1. Ve a [Google Takeout](https://takeout.google.com/takeout/custom/youtube) 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 ```bash 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](LICENSE). ## Proyectos similares - [invidious](https://github.com/iv-org/invidious) Similar a este proyecto, pero permite alojarlo como servidor para muchos usuarios - [Yotter](https://github.com/ytorg/Yotter) Similar a este proyecto y a invidious. También soporta Twitter - [FreeTube](https://github.com/FreeTubeApp/FreeTube) (Similar a este proyecto, pero es una app Electron fuera del navegador) - [youtube-local](https://github.com/user234683/youtube-local) primer proyecto en el que se basa yt-local - [NewPipe](https://newpipe.schabi.org/) (app para Android) - [mps-youtube](https://github.com/mps-youtube/mps-youtube) (programa solo para terminal) - [youtube-viewer](https://github.com/trizen/youtube-viewer) - [smtube](https://www.smtube.org/) - [Minitube](https://flavio.tordini.org/minitube), [github aquí](https://github.com/flaviotordini/minitube) - [toogles](https://github.com/mikecrittenden/toogles) (solo inserta videos, no usa mp4) - [YTLibre](https://git.sr.ht/~heckyel/ytlibre) solo extrae video - [youtube-dl](https://rg3.github.io/youtube-dl/), en el que se basó este proyecto