Script para renombrar ficheros en Linux y que Plex los reconozca

El otro día estaba intentando ver una serie en mi servidor Plex y observé que no la detectaba. Esto ocurre a veces en Plex porque la nomenclatura de los ficheros no es la correcta.

Para no ir renombrando uno a uno cada fichero utilicé el siguiente script, que buscará los ficheros con extensiones .mp4, mkv, .avi…y detectará en el nombre el patrón «Cap.Número de episodio».

Cuando detecte dicho patrón se quedará con el número del episodio y lo utilizará para renombrar el archivo.

Para que os funcione correctamente deberéis modificar la ruta donde se encuentran vuestros capítulos y además modificar la línea «new_filename» por el nombre de la serie en cuestión.

IMPORTANTE: El script está desarrollado en python por lo que lógicamente deberéis tener instalado python en vuestro equipo.

import os
import re

def rename_tv_files(directory):
    for filename in os.listdir(directory):
        if filename.lower().endswith((".mp4", ".mkv", ".avi", ".webm")):
            # Busca el número de episodio en el nombre actual
            match = re.search(r"Cap\.?(\d+)", filename, re.IGNORECASE)
            if match:
                episode_number = int(match.group(1))
                new_filename = f"Nombre-de-la-serie-s01e{episode_number}{os.path.splitext(filename)[1]}"
                old_path = os.path.join(directory, filename)
                new_path = os.path.join(directory, new_filename)
                os.rename(old_path, new_path)
                print(f"Renombrado {filename} a {new_filename}")
            else:
                print(f"No se encontró un número de episodio en {filename}")

# Ejemplo de uso
tv_directory = "/home/series/nombre-de-la-serie"  # Cambia esto a la ubicación real de tus archivos
rename_tv_files(tv_directory)

Este otro código hace exactamente lo mismo a diferencia de cada cada capítulo lo mueve al directorio inmediatamente superior, para cuando tienes los ficheros en diferentes carpetas poder tenerlos una vez ejecutado el script en el mismo directorio:

import os
import re
import shutil

def rename_and_move_tv_files(directory):
    for root, _, files in os.walk(directory):
        for filename in files:
            if filename.lower().endswith((".mp4", ".mkv", ".avi", ".webm")):
                # Busca el número de episodio en el nombre actual
                match = re.search(r"Cap\.?(\d+)", filename, re.IGNORECASE)
                if match:
                    episode_number = int(match.group(1))
                    # Encuentra el número de dígitos del episodio
                    episode_digits = len(match.group(1))
                    # Formatea el nombre del archivo con ceros a la izquierda según el número de dígitos
                    new_filename = f"e{episode_number:0{episode_digits}d}{os.path.splitext(filename)[1]}"
                    
                    old_path = os.path.join(root, filename)
                    new_path = os.path.join(root, new_filename)
                    
                    # Renombra el archivo
                    os.rename(old_path, new_path)
                    print(f"Renombrado {filename} a {new_filename}")

                    # Obtiene el directorio padre
                    parent_directory = os.path.dirname(root)
                    move_path = os.path.join(parent_directory, new_filename)

                    # Mueve el archivo al directorio inmediatamente superior
                    shutil.move(new_path, move_path)
                    print(f"Movido {new_filename} a {parent_directory}")
                else:
                    print(f"No se encontró un número de episodio en {filename}")

# Ejemplo de uso
tv_directory = "/srv/dev-disk-by-uuid-c01246f9-cb28-463b-b50d-ad04ab909fba/transmission/videos/series/"  # Cambia esto a la ubicación real de tus archivos
rename_and_move_tv_files(tv_directory)

Podéis guardar el script con el nombre que queráis y lanzarlo simplemente con el siguiente comando:

python3 nombre-del-script.py
Scroll al inicio
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

WordPress Appliance - Powered by TurnKey Linux