Rosub encuentra subtítulos en rumano para tu biblioteca de Jellyfin en subs.ro y elige, de los archivos que descarga, el archivo hecho para tu release, para que la sincronización sea correcta.
Qué hace
- Al llegar: unos minutos después de que Jellyfin identifica una película o episodio nuevo, Rosub busca en subs.ro (por id de IMDb/TMDb) y guarda el subtítulo junto al vídeo como
Name.ro.srt. - Cada día (tarea programada a las 04:00): reintenta todo lo que no tiene subtítulo en rumano, primero lo más nuevo; los elementos no encontrados aún se reintentan a los pocos días, porque los subtítulos suelen aparecer días después del release.
- Coincidencia de release: el nombre del archivo se divide en título, año, temporada/episodio, resolución, fuente (WEB-DL, BluRay, HDTV), servicio, códec y grupo de release, y se compara con cada subtítulo; el modo strict solo acepta subtítulos hechos para el mismo release, grupo o fuente de streaming.
- Comprobación de sincronización: cuando el vídeo tiene un subtítulo incrustado, los tiempos del candidato se comparan con él; un desfase constante se corrige, un subtítulo desincronizado se rechaza.
- Rumano correcto: UTF-8, con ș y ț (coma debajo) en lugar de las antiguas formas con cedilla.
- OpenSubtitles.com como respaldo (opcional, tu propia clave de API) cuando subs.ro no tiene nada aceptable.
- Búsqueda manual: Rosub aparece como proveedor en la búsqueda de subtítulos de Jellyfin.
- Respeta la cuota: subs.ro permite 300 peticiones al día por clave; Rosub usa como máximo el presupuesto que fijas y guarda una reserva para los elementos recién añadidos.
Requisitos
- Jellyfin Server 12.2 o superior.
- Una clave de API gratuita de subs.ro (My account → API); opcionalmente una clave de API de OpenSubtitles.com.
- El ffprobe del servidor, para la comprobación de sincronización.
Preguntas frecuentes
¿Cómo consigo subtítulos en rumano automáticamente en Jellyfin? Instala Rosub y escribe tu clave de API de subs.ro en Dashboard → Rosub. Las películas y episodios nuevos reciben un subtítulo en rumano coincidente a los pocos minutos de añadirse, y la tarea diaria completa el resto de la biblioteca. Consulta la guía.
¿Por qué «coincide exactamente con el release»? Un subtítulo hecho para otro release (otro grupo, fuente o corte) suele estar desincronizado. Rosub elige el archivo hecho para tu release y comprueba los tiempos antes de guardarlo.
Qué envía y adónde
- subs.ro (
api.subs.ro) — solo con tu propia clave de API (no se incluye ninguna): solo el id de IMDb o TMDb de la película/serie (para episodios, el id de la serie) y el idioma; después la descarga del subtítulo elegido y una consulta de cuota. No se envían títulos, nombres de archivo, nombres de release ni hashes. - OpenSubtitles (
api.opensubtitles.com) — opcional, solo con tu propia clave: idiomas, id de IMDb/TMDb (o id de la serie + temporada/episodio) y el hash de OpenSubtitles del archivo (calculado en local a partir del tamaño y los primeros/últimos 64 KB; no se envía el contenido); inicio de sesión opcional con tu cuenta de OpenSubtitles (nombre de usuario + contraseña → token); descarga desde la CDN de OpenSubtitles. - Cuándo: ~2 min después de añadirse un título, cada día a las 04:00 (títulos sin subtítulos), en la búsqueda manual en el servidor; con presupuestos diarios (subs.ro 250, OpenSubtitles 5 peticiones por defecto).
- La comprobación de sincronización y la coincidencia de release se hacen en local (ffprobe). Las notificaciones van al registro de actividad local.
- Además, el cliente de licencias, igual en todos los plugins: consulta Licencias y privacidad en nuestros plugins.
Guardado localmente: la clave de API de subs.ro, la clave de API de OpenSubtitles y la contraseña de la cuenta de OpenSubtitles, cifrados en reposo en secrets.enc.json en la carpeta de datos del plugin (AES-256-GCM, clave aleatoria de secrets.key vinculada al id del servidor, ambos archivos en modo 600) y nunca enviados al navegador (la página solo muestra «set ✓»); el nombre de usuario de OpenSubtitles permanece en la configuración del plugin (desde la versión 1.1.3; las versiones anteriores guardan las claves y la contraseña en texto plano en la configuración); state/state.json (títulos, rutas, estado, diario de máximo 1000 entradas, cuotas, token de sesión de OpenSubtitles); caché de búsqueda (12 h) y archivos (30 días); subtítulos como <video>.ro.srt junto al archivo.
Compatibilidad con clientes
- Los subtítulos se convierten en archivos
.srtexternos normales: 🟢 se muestran en cualquier cliente que muestre subtítulos externos (✅ Jellyfin: búsqueda y descarga reales de subs.ro). Apps nativas individuales: ❔ no probadas. - Página de administración: Jellyfin Web (✅ escritorio + teléfono).
- Funciona con AISub (genera solo tras «searched, not found»).
Leyenda: ✅ verificado (prueba de extremo a extremo o en el dispositivo) · 🟢 en el servidor, funciona con cualquier cliente (por diseño, sin prueba específica para cada cliente) · ➖ no aplicable · ❔ no probado.
Licencia
El plugin es de código abierto (GPL-3.0). Las compilaciones listas para instalar son públicas, igual que el código fuente. Lo que compras es la suscripción: la licencia para usar el plugin en un servidor de Jellyfin, las actualizaciones que incluye tu plan y el soporte: cada actualización mientras la suscripción esté activa, a través de tu repositorio privado de plugins, y ayuda cuando algo no funcione. El plugin comprueba la clave de suscripción una vez al día; sin una suscripción válida se detiene hasta que renueves (no se borra nada). Mensual, anual o de por vida (la de por vida incluye un año de actualizaciones), o incluido en el paquete para Jellyfin. 30 días de prueba gratis.
Código fuente. Para cada versión, el código fuente correspondiente completo es público, junto a la compilación, en el registro de cambios, y también en tu cuenta (Cuenta → Licencias, Código fuente); cada archivo comprimido contiene el texto completo de la GPL-3.0 (LICENSE). Si necesitas el código fuente de una versión que ya no puedes descargar, pídenoslo y te lo enviamos. Consulta la sección 10 del EULA.
