Cómo Renombrar Subtítulos Según El Nombre Del Video

Cuando una carpeta contiene muchas películas y series, los subtítulos pueden tener nombres completamente distintos a los archivos de vídeo. Esta diferencia impide que reproductores como VLC, Kodi o MPC-HC los detecten automáticamente.

Un script para renombrar archivos de subtítulos puede solucionar el problema en pocos segundos. La idea consiste en conservar la extensión del subtítulo y sustituir su nombre base por el del vídeo correspondiente.

Python resulta una opción práctica porque funciona en Windows, Linux y macOS. Además, permite añadir reglas para ignorar archivos auxiliares, evitar sobreescrituras y trabajar con formatos habituales como .srt, .ass o .sub.

Antes de ejecutar cualquier automatización conviene hacer una copia de la carpeta. Un error en el criterio de coincidencia podría asignar un subtítulo a otro episodio o cambiar nombres que todavía se necesitaban conservar.

Cómo Funciona La Coincidencia Entre Archivos

El procedimiento comienza separando el nombre base y la extensión de cada archivo. Por ejemplo, Capitulo.01.1080p.mkv tiene como extensión .mkv, mientras que Subtitulos_ES.srt termina en .srt.

Después, el programa relaciona cada subtítulo con un vídeo. En el caso más sencillo, se utiliza el primer vídeo de la carpeta cuando solo hay una película. Para una temporada completa, resulta más fiable comparar números de episodio, identificadores como S02E04 o nombres previamente normalizados.

Una vez encontrada la coincidencia, el archivo cambia de nombre, pero mantiene su formato. Así, traduccion.srt puede convertirse en Capitulo.01.1080p.srt, que es el nombre que muchos reproductores buscan de forma automática.

Preparar La Carpeta Y Las Extensiones

Guarda todos los vídeos y subtítulos relacionados en una misma carpeta. El script puede reconocer extensiones de vídeo como .mkv, .mp4, .avi, .mov y .m4v, además de subtítulos .srt, .ass, .ssa y .sub.

Si una carpeta contiene vídeos de distintas películas, es preferible organizar cada título en su propio directorio. Esta estructura reduce las coincidencias incorrectas y facilita revisar el resultado antes de abrir el contenido.

También conviene evitar nombres con caracteres extraños o rutas demasiado largas, especialmente en Windows. Los espacios, guiones y paréntesis no suelen causar problemas en Python, pero las reglas de comparación deben tratarse con cuidado.

Script Básico En Python

El siguiente ejemplo renombra subtítulos cuando existe un único vídeo en la carpeta. Incluye una vista previa para comprobar los cambios antes de aplicarlos:

from pathlib import Path

CARPETA = Path(".")
EXTENSIONES_VIDEO = {".mkv", ".mp4", ".avi", ".mov", ".m4v"}
EXTENSIONES_SUB = {".srt", ".ass", ".ssa", ".sub"}

videos = [
    archivo for archivo in CARPETA.iterdir()
    if archivo.is_file() and archivo.suffix.lower() in EXTENSIONES_VIDEO
]

subtitulos = [
    archivo for archivo in CARPETA.iterdir()
    if archivo.is_file() and archivo.suffix.lower() in EXTENSIONES_SUB
]

if len(videos) != 1:
    raise SystemExit("La carpeta debe contener exactamente un vídeo.")

video = videos[0]

for subtitulo in subtitulos:
    destino = video.with_suffix(subtitulo.suffix.lower())

    if destino.exists() and destino != subtitulo:
        print(f"Se omite {subtitulo.name}: el destino ya existe.")
        continue

    print(f"{subtitulo.name} -> {destino.name}")
    # Para aplicar el cambio, elimina el comentario de la línea siguiente:
    # subtitulo.rename(destino)

Copia el código en un archivo llamado renombrar_subtitulos.py y ejecútalo desde esa carpeta con python renombrar_subtitulos.py. Primero aparecerán los cambios previstos; la línea rename está desactivada para evitar modificaciones accidentales.

Adaptar El Script A Una Serie

En una temporada con varios episodios, cada subtítulo debe asociarse con el vídeo que comparte su número. Una estrategia sencilla consiste en extraer patrones como S01E03, 1x03 o E03 mediante expresiones regulares.

Situación Criterio Recomendado Riesgo
Una película y varios subtítulos Usar el único vídeo disponible Bajo
Episodios con S01E01 Comparar el identificador completo Bajo
Episodios con nombres distintos Comparar número de episodio Medio
Varias versiones del mismo vídeo Comparar resolución o edición Alto
Subtítulos sin datos identificables Revisar manualmente Muy alto

Para una colección de episodios, el nombre final debe conservar el identificador del vídeo. Por ejemplo, serie.S01E03.1080p.mkv debería recibir serie.S01E03.1080p.srt, aunque el subtítulo original se llame español_03.srt.

Cuando hay versiones WEB-DL, Blu-ray o HDTV del mismo episodio, usar únicamente S01E03 puede producir ambigüedades. En esos casos hay que incorporar una segunda regla, como resolución, fuente o idioma, y detener el proceso si aparecen dos candidatos posibles.

Comparar Nombres De Forma Segura

Los nombres pueden diferir por mayúsculas, puntos, guiones y espacios. Una función de normalización ayuda a comparar textos sin modificar todavía los archivos:

import re

def normalizar(nombre):
    nombre = nombre.lower()
    nombre = re.sub(r"[\W_]+", " ", nombre)
    return nombre.strip()

Para identificar episodios, puede utilizarse una expresión como r"s\d{2}e\d{2}". El script debe comprobar que el patrón existe tanto en el vídeo como en el subtítulo. Si falta en alguno de los dos, es más seguro informar del caso y dejarlo pendiente.

Nunca conviene borrar archivos ni sustituir un destino existente sin confirmación. Una buena automatización muestra cada operación, conserva la extensión original y utiliza una opción de prueba o dry-run antes de realizar cambios definitivos.

Ejecutar El Proceso En Windows Y Linux

En Windows, abre PowerShell en la carpeta mediante el menú contextual y ejecuta python renombrar_subtitulos.py. Si el sistema utiliza el comando py, también puedes escribir py renombrar_subtitulos.py.

En Linux o macOS, abre una terminal, entra en el directorio con cd y ejecuta python3 renombrar_subtitulos.py. Si los nombres incluyen caracteres no latinos, Python 3 suele manejarlos correctamente siempre que el sistema utilice UTF-8.

Para trabajar con muchas carpetas, el programa puede recorrer directorios secundarios usando Path.rglob("*"). Es recomendable probar primero con una sola temporada y revisar los resultados en el explorador de archivos antes de ampliar el proceso.

Revisar El Resultado En El Reproductor

Después del renombrado, comprueba que cada subtítulo comparte exactamente el nombre base del vídeo. La extensión puede ser diferente, pero el texto anterior al punto debe coincidir.

Abre algunos episodios en VLC, Kodi u otro reproductor y verifica la sincronización, el idioma y la codificación. Renombrar un archivo no corrige un desfase temporal ni convierte un subtítulo en otro formato.

Si el reproductor no lo carga, revisa si el subtítulo está dentro de un archivo comprimido, si utiliza una extensión compatible o si existe otra copia con el mismo nombre. También puede ser necesario seleccionar manualmente la pista desde el menú de subtítulos.

Mejoras Para Colecciones Grandes

Un script más completo puede añadir argumentos de línea de comandos, registro de operaciones y creación automática de copias de seguridad. También puede detectar archivos con etiquetas como [ES], [LAT] o [VOSE] y conservar esa información en el nombre final.

Otra mejora útil consiste en renombrar únicamente cuando haya una coincidencia exacta. Los casos dudosos pueden guardarse en un informe para revisarlos después, evitando que una coincidencia aproximada dañe una colección organizada.

Comparte tus propios métodos de automatización, ajustes para otros formatos o experiencias con reproductores en la comunidad. Un script probado por varios aficionados puede convertirse en una herramienta fiable para mantener ordenadas películas, temporadas y archivos de subtítulos.