Control your torrent client from Telegram
6.1K
VERSIÓN EN ESPAÑOL | ENGLISH VERSION
Lleva el control de tu gestor de torrents desde un único lugar.
.torrent, un enlace magnet o una URL a un fichero .torrent, eligiendo el directorio de descargaThe.Matrix.1999.1080p.mkv → The Matrix (1999) - 1080p.mkv)/config)Actualmente soporta Transmission, qBittorrent y Deluge como gestores de torrents. La arquitectura interna es agnóstica al cliente, por lo que en el futuro podrán añadirse otros gestores.
Antes de levantar el contenedor necesitas un bot propio en Telegram y conocer tu identificador de usuario.
/newbot. Sigue las instrucciones (un nombre y un username acabado en bot).Warning
No le pongas al bot el nombre **TCB** ni un username que lo contenga: Telegram lo asocia con términos relacionados con drogas y puede banear el bot automáticamente. Usa un nombre más descriptivo, como por ejemplo `TorrentControllerBot`.
TELEGRAM_TOKEN.TELEGRAM_ADMIN), habla con @MissRose_bot y envíale /id. Te responderá con un número, ese es tu ID.TELEGRAM_GROUP./setuserpic.| Comando | Descripción |
|---|---|
/start | Panel de control con el estado general y los torrents agrupados por estado |
/list | Listado completo de torrents con filtros y paginación |
/find texto | Busca torrents por nombre o por ruta (p. ej. /find /downloads) |
/add | Añade un torrent (también puedes enviar directamente un fichero .torrent o un enlace magnet) |
/settings | Ajustes del gestor: modo tortuga y límites de velocidad |
/version | Muestra la versión actual y el gestor al que está conectado |
/help | Lista de comandos |
/donate /donors | Dona al desarrollador / lista de donantes |
Al pulsar ✏️ Renombrar sobre un torrent, el bot intenta generar una sugerencia de nombre limpio:
The.Matrix.1999.1080p.BluRay.x264.mkv → The Matrix (1999) - 1080p.mkvOperaciones Especiales Lioness [HDTV 1080p][Cap.103] → 1x03 - Operaciones Especiales Lioness - 1080p (soporta formatos Cap.103, S01E03 y 3x05)Si no puede generar sugerencia, siempre puedes escribir el nombre manualmente.
Desde el detalle de un torrent, el botón 🗂️ Archivos lista los ficheros que contiene y permite renombrarlos uno a uno o todos de golpe (con previsualización antes de confirmar). Los archivos heredan del nombre del torrent lo que no llevan encima (título, año y temporada, nunca el episodio), así que un episodio suelto como 01.mkv dentro de Show.Name.S02.1080p se convierte en 2x01 - Show Name - 1080p.mkv. Los subtítulos que acompañan a un vídeo se renombran con él para no romper el emparejamiento, y todo se hace a través del gestor de torrents, por lo que el seeding se mantiene.
El campo {titulo_episodio} recoge el texto que va después del marcador de episodio, así que Family.Guy.S01E01.Death.Has.a.Shadow.1080p.mkv conserva Death Has a Shadow. No todos los episodios lo traen, por lo que conviene usarlo siempre entre corchetes:
{temporada}x{episodio.2} - {titulo}[ - {titulo_episodio}][.{extension}]
{temporada} y {episodio} admiten un sufijo .N que rellena el número con ceros hasta N dígitos en total, para que las temporadas y los episodios queden alineados:
| Plantilla | Temporada 1, episodio 7 |
|---|---|
{temporada}x{episodio} | 1x7 |
{temporada}x{episodio.2} | 1x07 |
{temporada.2}x{episodio.2} | 01x07 |
{temporada.2}x{episodio.3} | 01x007 |
Detalles a tener en cuenta:
{episodio.2}, el episodio 123 sigue siendo 123.S01-S08 con {temporada.2} da 01-08.{temporada} y {episodio}; en cualquier otro campo el bot rechaza la plantilla.{capitulo} no se ve afectado: mantiene siempre su formato de dos dígitos (1x03, T2).| CLAVE | OBLIGATORIO | VALOR |
|---|---|---|
| TELEGRAM_TOKEN | ✅ | Token del bot |
| TELEGRAM_ADMIN | ✅ | ChatId del administrador (se puede obtener hablándole al bot Rose escribiendo /id). Admite múltiples administradores separados por comas. Por ejemplo 12345,54431,55944 |
| TELEGRAM_GROUP | ❌ | ChatId del grupo. Si este bot va a formar parte de un grupo, es necesario especificar el chatId de dicho grupo. Es necesario que el bot sea administrador del grupo |
| TELEGRAM_THREAD | ❌ | Thread del tema dentro de un supergrupo; valor numérico (2,3,4..). Por defecto 1. Se utiliza en conjunción con la variable TELEGRAM_GROUP |
| TZ | ✅ | Timezone (Por ejemplo Europe/Madrid) |
| LANGUAGE | ❌ | Idioma, puede ser ES / EN. Por defecto ES (Spanish) |
| TORRENT_CLIENT | ❌ | Gestor de torrents: transmission, qbittorrent o deluge. Por defecto transmission |
| TORRENT_CLIENT_HOST | ✅ | Host o IP donde está el gestor de torrents |
| TORRENT_CLIENT_PORT | ❌ | Puerto del gestor de torrents. Por defecto 9091 (Transmission), 8080 (qBittorrent) u 8112 (Deluge Web UI) |
| TORRENT_CLIENT_USER | ❌ | Usuario del gestor de torrents, si tiene autenticación |
| TORRENT_CLIENT_PASSWORD | ❌ | Contraseña del gestor de torrents, si tiene autenticación |
| TORRENT_CLIENT_PROTOCOL | ❌ | Protocolo de conexión, http o https. Por defecto http |
| TORRENT_CLIENT_RPC_PATH | ❌ | Ruta del RPC. Por defecto /transmission/rpc (Transmission) |
| TORRENTS_PER_PAGE | ❌ | Número de torrents por página en los listados. Por defecto 10 |
| DASHBOARD_REFRESH_SECONDS | ❌ | Segundos entre refrescos automáticos del panel de control. Por defecto 2 |
| DASHBOARD_REFRESH_DURATION | ❌ | Segundos que dura el refresco automático del panel de control. Por defecto 60 |
services:
torrent-controller-bot:
environment:
- TELEGRAM_TOKEN=
- TELEGRAM_ADMIN=
- TZ=Europe/Madrid
- TORRENT_CLIENT=transmission
- TORRENT_CLIENT_HOST=
#- TELEGRAM_GROUP=
#- TELEGRAM_THREAD=1
#- LANGUAGE=ES
#- TORRENT_CLIENT_PORT=9091
#- TORRENT_CLIENT_USER=
#- TORRENT_CLIENT_PASSWORD=
image: dgongut/torrent-controller-bot:latest
container_name: torrent-controller-bot
restart: always
tty: true
volumes:
- /ruta/de/tu/eleccion:/config # Ajustes persistentes del bot
Note
El bot no necesita acceso a los ficheros descargados: se comunica con el gestor de torrents únicamente por RPC. El único volumen que hay que mapear es `/config`, donde el bot guarda sus ajustes para que persistan entre reinicios.
Note
Si Transmission corre en la misma máquina que el bot pero fuera de Docker, usa `host.docker.internal` como `TORRENT_CLIENT_HOST` (en Linux añade `extra_hosts: ["host.docker.internal:host-gateway"]`).
Para su ejecución en local y probar nuevos cambios de código, se necesita renombrar el fichero .env.example a .env con los valores necesarios para su ejecución.
Es necesario establecer un TELEGRAM_TOKEN y un TELEGRAM_ADMIN correctos y diferentes al de la ejecución normal.
La estructura de carpetas debe quedar:
torrent-controller-bot/
├── .env
├── .gitignore
├── LICENSE
├── requirements.txt
├── README.md
├── bot_settings.py
├── config.py
├── logger.py
├── message_queue.py
├── name_parser.py
├── torrent-controller-bot.py
├── Dockerfile_local
├── docker-compose.yaml
├── torrent_clients
│ ├── __init__.py
│ ├── base.py
│ ├── deluge_client.py
│ ├── factory.py
│ ├── qbittorrent_client.py
│ └── transmission_client.py
└── locale
├── en.json
└── es.json
Para levantarlo habría que ejecutar en esa ruta: docker compose -f docker-compose.yaml up -d --build --force-recreate utilizando el Dockerfile_local.
También puede ejecutarse directamente con Python:
pip install -r requirements.txt
set -a && source .env && set +a
LOCALE_PATH=./locale python3 torrent-controller-bot.py
Content type
Image
Digest
sha256:63ac8faaa…
Size
30.5 MB
Last updated
4 days ago
docker pull dgongut/torrent-controller-bot