import os import shutil import re import sys def organize_files(base_path): # Expresión regular para buscar específicamente '(Disc X)' donde X es un único dígito disc_pattern = re.compile(r'\(Disc \d\)') print(f"Iniciando organización de archivos en: {base_path}") # Obtiene una lista de archivos que coincidan exactamente con el formato esperado files = [f for f in os.listdir(base_path) if disc_pattern.search(f)] print(f"Archivos detectados con '(Disc X)': {len(files)} encontrados") # Diccionario para agrupar por nombre base groups = {} # Organiza los archivos según el nombre base (todo antes de "(Disc X)") for file in files: base_name = disc_pattern.split(file)[0].strip() if base_name not in groups: groups[base_name] = [] groups[base_name].append(file) print(f"Grupos formados: {len(groups)} grupos identificados") # Crear carpetas, mover archivos y generar archivos .m3u for base_name, group_files in groups.items(): print(f"Procesando grupo: {base_name}") # Crear la carpeta para el grupo folder_path = os.path.join(base_path, base_name) os.makedirs(folder_path, exist_ok=True) print(f"Carpeta creada: {folder_path}") # Mover archivos al nuevo directorio for file in sorted(group_files): # Ordenar los archivos por disco shutil.move(os.path.join(base_path, file), folder_path) print(f"Archivo movido: {file} → {folder_path}") # Crear el archivo .m3u m3u_path = os.path.join(folder_path, f'{base_name}.m3u') with open(m3u_path, 'w') as m3u_file: for file in sorted(group_files): # Asegura que estén en orden m3u_file.write(file + '\n') print(f"Archivo .m3u creado: {m3u_path}") print("Organización y creación de listas .m3u completadas.") if __name__ == "__main__": # Comprobamos que se pase un argumento con la ruta base if len(sys.argv) != 2: print("Uso: python script.py ") sys.exit(1) # Obtenemos la ruta base desde los argumentos base_path = sys.argv[1] # Verificamos que la ruta exista if not os.path.exists(base_path): print(f"Error: La ruta especificada '{base_path}' no existe.") sys.exit(1) organize_files(base_path)