From 945601363a93174e62e88cfb748298d45ce29c3e Mon Sep 17 00:00:00 2001 From: Sergio Date: Sun, 13 Apr 2025 09:17:04 +0200 Subject: [PATCH] afegit folder_zip_to_cso.py --- python/crear_m3u.py | 34 ++++ python/folder_zip_to_cso.py | 65 ++++++++ python/media_mover/config.py | 246 ---------------------------- python/media_mover/media_mover.py | 89 ---------- python/media_mover/requirements.txt | 0 5 files changed, 99 insertions(+), 335 deletions(-) create mode 100644 python/crear_m3u.py create mode 100644 python/folder_zip_to_cso.py delete mode 100644 python/media_mover/config.py delete mode 100644 python/media_mover/media_mover.py delete mode 100644 python/media_mover/requirements.txt diff --git a/python/crear_m3u.py b/python/crear_m3u.py new file mode 100644 index 0000000..c914339 --- /dev/null +++ b/python/crear_m3u.py @@ -0,0 +1,34 @@ +import os +import re + +def create_m3u_files(folder_path): + # Diccionario para almacenar listas de archivos por nombre base + files_dict = {} + + # Expresión regular para detectar el patrón de (Disc X) + pattern = re.compile(r"\(Disc \d+\)") + + for filename in os.listdir(folder_path): + if filename.endswith(".chd") and pattern.search(filename): + # Extraer el nombre base + base_name = pattern.split(filename)[0].strip() + + if base_name not in files_dict: + files_dict[base_name] = [] + + files_dict[base_name].append(filename) + + # Crear archivos .m3u + for base_name, files in files_dict.items(): + m3u_filename = f"{base_name}.m3u" + m3u_filepath = os.path.join(folder_path, m3u_filename) + + with open(m3u_filepath, 'w') as m3u_file: + for file in files: + m3u_file.write(f"{file}\n") + + print(f"Archivo {m3u_filename} creado con éxito") + +# Ruta de la carpeta con los archivos +folder_path = "/ruta/a/la/carpeta" +create_m3u_files(folder_path) diff --git a/python/folder_zip_to_cso.py b/python/folder_zip_to_cso.py new file mode 100644 index 0000000..e9f9ec1 --- /dev/null +++ b/python/folder_zip_to_cso.py @@ -0,0 +1,65 @@ +import os +import zipfile +import shutil +import subprocess +import sys + +def procesar_archivos(carpeta): + """ + Procesa los archivos .zip de una carpeta, convirtiéndolos en .cso. + Omite archivos .zip corruptos y solo elimina los que han sido procesados exitosamente. + """ + # Recorre todos los archivos de la carpeta + for archivo in os.listdir(carpeta): + if archivo.endswith('.zip'): + ruta_zip = os.path.join(carpeta, archivo) + + # Crear una carpeta temporal para descomprimir + carpeta_temporal = os.path.join(carpeta, 'temp') + os.makedirs(carpeta_temporal, exist_ok=True) + + try: + # Intentar descomprimir el archivo .zip + with zipfile.ZipFile(ruta_zip, 'r') as zip_ref: + zip_ref.extractall(carpeta_temporal) + except zipfile.BadZipFile: + print(f'Archivo corrupto, no se puede procesar: {ruta_zip}') + continue # Saltar al siguiente archivo + + # Procesar cada archivo descomprimido en la carpeta temporal + for archivo_salida in os.listdir(carpeta_temporal): + ruta_archivo_salida = os.path.join(carpeta_temporal, archivo_salida) + ruta_cso = os.path.join(carpeta, os.path.splitext(archivo_salida)[0] + '.cso') + + # Comprimir con "ciso 9" + comando = ['ciso', '9', ruta_archivo_salida, ruta_cso] + resultado = subprocess.run(comando) + + # Si la compresión fue exitosa, eliminar el fichero zip original + if resultado.returncode == 0: + os.remove(ruta_zip) + print(f'Archivo comprimido y .zip original eliminado: {ruta_zip}') + else: + print(f'Error al comprimir: {ruta_archivo_salida}') + + # Eliminar la carpeta temporal + shutil.rmtree(carpeta_temporal) + print(f'Procesado: {ruta_zip}') + +if __name__ == "__main__": + # Verificar que se pase la ruta como parámetro + if len(sys.argv) < 2: + print("Uso: python script.py ") + sys.exit(1) + + # Obtener la ruta desde los argumentos del programa + carpeta = sys.argv[1] + + # Comprobar si la carpeta existe + if not os.path.isdir(carpeta): + print(f'Error: La carpeta especificada no existe: {carpeta}') + sys.exit(1) + + # Llamar a la función para procesar archivos + procesar_archivos(carpeta) + diff --git a/python/media_mover/config.py b/python/media_mover/config.py deleted file mode 100644 index 12827b1..0000000 --- a/python/media_mover/config.py +++ /dev/null @@ -1,246 +0,0 @@ -ROM_FOLDERS = [ - {"frontend": "batocera", "path": "/home/sergio/roms/batocera_arrm_scrapped"}, - {"frontend": "es-de", "path": "/home/sergio/roms/ES-DE/ROMs"}, -] - -CONFIG_FOLDERS = [ - {"frontend": "batocera", "path": "downloaded_images"}, - {"frontend": "es-de", "path": "/home/sergio/roms/ES-DE/CONFIG"}, -] - -SYSTEMS = [ - {"name": "3DO Interactive Multiplayer", "batocera": "3do", "es-de": "3do"}, - {"name": "Coleco Adam", "batocera": "", "es-de": "adam"}, - {"name": "Adventure Game Studio Game Engine", "batocera": "", "es-de": "ags"}, - {"name": "Commodore Amiga", "batocera": "", "es-de": "amiga"}, - {"name": "Commodore Amiga 1200", "batocera": "", "es-de": "amiga1200"}, - {"name": "Commodore Amiga 600", "batocera": "", "es-de": "amiga600"}, - {"name": "Commodore Amiga CD32", "batocera": "", "es-de": "amigacd32"}, - {"name": "Amstrad CPC", "batocera": "", "es-de": "amstradcpc"}, - {"name": "Google Android", "batocera": "", "es-de": "android"}, - {"name": "Apple II", "batocera": "", "es-de": "apple2"}, - {"name": "Apple IIGS", "batocera": "", "es-de": "apple2gs"}, - {"name": "Arcade", "batocera": "", "es-de": "arcade"}, - {"name": "Emerson Arcadia 2001", "batocera": "", "es-de": "arcadia"}, - {"name": "Acorn Archimedes", "batocera": "", "es-de": "archimedes"}, - {"name": "Arduboy Miniature Game System", "batocera": "", "es-de": "arduboy"}, - {"name": "Bally Astrocade", "batocera": "", "es-de": "astrocde"}, - {"name": "Atari 2600", "batocera": "atari2600", "es-de": "atari2600"}, - {"name": "Atari 5200", "batocera": "atari5200", "es-de": "atari5200"}, - {"name": "Atari 7800 ProSystem", "batocera": "atari7800", "es-de": "atari7800"}, - {"name": "Atari 800", "batocera": "", "es-de": "atari800"}, - {"name": "Atari Jaguar", "batocera": "", "es-de": "atarijaguar"}, - {"name": "Atari Jaguar CD", "batocera": "", "es-de": "atarijaguarcd"}, - {"name": "Atari Lynx", "batocera": "lynx", "es-de": "atarilynx"}, - {"name": "Atari ST", "batocera": "", "es-de": "atarist"}, - {"name": "Atari XE", "batocera": "", "es-de": "atarixe"}, - {"name": "Sammy Corporation Atomiswave", "batocera": "", "es-de": "atomiswave"}, - {"name": "Acorn Computers BBC Micro", "batocera": "", "es-de": "bbcmicro"}, - {"name": "Commodore 64", "batocera": "", "es-de": "c64"}, - {"name": "Philips CD-i", "batocera": "", "es-de": "cdimono1"}, - {"name": "Commodore CDTV", "batocera": "", "es-de": "cdtv"}, - {"name": "ChaiLove Game Engine", "batocera": "", "es-de": "chailove"}, - {"name": "Fairchild Channel F", "batocera": "", "es-de": "channelf"}, - {"name": "Tandy Color Computer", "batocera": "", "es-de": "coco"}, - {"name": "Coleco ColecoVision", "batocera": "", "es-de": "colecovision"}, - {"name": "Console Arcade Systems", "batocera": "", "es-de": "consolearcade"}, - {"name": "Capcom Play System", "batocera": "", "es-de": "cps"}, - {"name": "Capcom Play System I", "batocera": "", "es-de": "cps1"}, - {"name": "Capcom Play System II", "batocera": "", "es-de": "cps2"}, - {"name": "Capcom Play System III", "batocera": "", "es-de": "cps3"}, - {"name": "VTech CreatiVision", "batocera": "", "es-de": "crvision"}, - { - "name": "Daphne Arcade LaserDisc Emulator", - "batocera": "daphne", - "es-de": "daphne", - }, - {"name": "Desktop Applications", "batocera": "", "es-de": "desktop"}, - {"name": "Doom", "batocera": "", "es-de": "doom"}, - {"name": "DOS (PC)", "batocera": "", "es-de": "dos"}, - {"name": "Dragon Data Dragon 32", "batocera": "", "es-de": "dragon32"}, - {"name": "Sega Dreamcast", "batocera": "dreamcast", "es-de": "dreamcast"}, - {"name": "EasyRPG Game Engine", "batocera": "", "es-de": "easyrpg"}, - {"name": "Acorn Electron", "batocera": "", "es-de": "electron"}, - {"name": "Emulators", "batocera": "", "es-de": "emulators"}, - {"name": "Epic Games Store", "batocera": "", "es-de": "epic"}, - {"name": "Nintendo Family Computer", "batocera": "", "es-de": "famicom"}, - {"name": "FinalBurn Alpha", "batocera": "", "es-de": "fba"}, - {"name": "FinalBurn Neo", "batocera": "fbneo", "es-de": "fbneo"}, - {"name": "Nintendo Famicom Disk System", "batocera": "", "es-de": "fds"}, - {"name": "Adobe Flash", "batocera": "", "es-de": "flash"}, - {"name": "Fujitsu FM-7", "batocera": "", "es-de": "fm7"}, - {"name": "Fujitsu FM Towns", "batocera": "", "es-de": "fmtowns"}, - {"name": "Future Pinball", "batocera": "", "es-de": "fpinball"}, - {"name": "Bit Corporation Gamate", "batocera": "", "es-de": "gamate"}, - {"name": "Nintendo Game and Watch", "batocera": "", "es-de": "gameandwatch"}, - {"name": "Tiger Electronics Game.com", "batocera": "", "es-de": "gamecom"}, - {"name": "Sega Game Gear", "batocera": "gamegear", "es-de": "gamegear"}, - {"name": "Nintendo Game Boy", "batocera": "gb", "es-de": "gb"}, - {"name": "Nintendo Game Boy Advance", "batocera": "gba", "es-de": "gba"}, - {"name": "Nintendo Game Boy Color", "batocera": "gbc", "es-de": "gbc"}, - {"name": "Nintendo GameCube", "batocera": "", "es-de": "gc"}, - {"name": "Sega Genesis", "batocera": "", "es-de": "genesis"}, - {"name": "Hartung Game Master", "batocera": "", "es-de": "gmaster"}, - {"name": "Amstrad GX4000", "batocera": "", "es-de": "gx4000"}, - { - "name": "Mattel Electronics Intellivision", - "batocera": "", - "es-de": "intellivision", - }, - {"name": "Java 2 Micro Edition (J2ME)", "batocera": "", "es-de": "j2me"}, - {"name": "Kodi Home Theatre Software", "batocera": "", "es-de": "kodi"}, - {"name": "LaserDisc Games", "batocera": "", "es-de": "laserdisc"}, - {"name": "LCD Handheld Games", "batocera": "", "es-de": "lcdgames"}, - {"name": "LowRes NX Fantasy Console", "batocera": "", "es-de": "lowresnx"}, - {"name": "Lutro Game Engine", "batocera": "", "es-de": "lutro"}, - {"name": "Apple Macintosh", "batocera": "", "es-de": "macintosh"}, - {"name": "Multiple Arcade Machine Emulator", "batocera": "mame", "es-de": "mame"}, - {"name": "AdvanceMAME", "batocera": "", "es-de": "mame-advmame"}, - {"name": "Sega Master System", "batocera": "", "es-de": "mastersystem"}, - {"name": "Sega Mega-CD", "batocera": "", "es-de": "megacd"}, - {"name": "Sega Mega-CD", "batocera": "", "es-de": "megacdjp"}, - {"name": "Sega Mega Drive", "batocera": "megadrive", "es-de": "megadrive"}, - {"name": "Sega Mega Drive", "batocera": "", "es-de": "megadrivejp"}, - {"name": "Creatronic Mega Duck", "batocera": "", "es-de": "megaduck"}, - {"name": "Multi Emulator Super System", "batocera": "", "es-de": "mess"}, - {"name": "Sega Model 2", "batocera": "model2", "es-de": "model2"}, - {"name": "Sega Model 3", "batocera": "model3", "es-de": "model3"}, - {"name": "Thomson MO/TO Series", "batocera": "", "es-de": "moto"}, - {"name": "MSX", "batocera": "", "es-de": "msx"}, - {"name": "MSX1", "batocera": "", "es-de": "msx1"}, - {"name": "MSX2", "batocera": "", "es-de": "msx2"}, - {"name": "MSX Turbo R", "batocera": "", "es-de": "msxturbor"}, - {"name": "M.U.G.E.N Game Engine", "batocera": "", "es-de": "mugen"}, - {"name": "Othello Multivision", "batocera": "", "es-de": "multivision"}, - {"name": "Nintendo 3DS", "batocera": "", "es-de": "n3ds"}, - {"name": "Nintendo 64", "batocera": "n64", "es-de": "n64"}, - {"name": "Nintendo 64DD", "batocera": "", "es-de": "n64dd"}, - {"name": "Sega NAOMI", "batocera": "naomi", "es-de": "naomi"}, - {"name": "Sega NAOMI 2", "batocera": "naomi2", "es-de": "naomi2"}, - {"name": "Sega NAOMI GD-ROM", "batocera": "", "es-de": "naomigd"}, - {"name": "Nintendo DS", "batocera": "", "es-de": "nds"}, - {"name": "SNK Neo Geo", "batocera": "neogeo", "es-de": "neogeo"}, - {"name": "SNK Neo Geo CD", "batocera": "neogeocd", "es-de": "neogeocd"}, - {"name": "SNK Neo Geo CD", "batocera": "", "es-de": "neogeocdjp"}, - {"name": "Nintendo Entertainment System", "batocera": "nes", "es-de": "nes"}, - {"name": "Nokia N-Gage", "batocera": "", "es-de": "ngage"}, - {"name": "SNK Neo Geo Pocket", "batocera": "ngp", "es-de": "ngp"}, - {"name": "SNK Neo Geo Pocket Color", "batocera": "ngpc", "es-de": "ngpc"}, - {"name": "Magnavox Odyssey 2", "batocera": "", "es-de": "odyssey2"}, - {"name": "OpenBOR Game Engine", "batocera": "", "es-de": "openbor"}, - {"name": "Tangerine Computer Systems Oric", "batocera": "", "es-de": "oric"}, - {"name": "Palm OS", "batocera": "", "es-de": "palm"}, - {"name": "IBM PC", "batocera": "", "es-de": "pc"}, - {"name": "NEC PC-8800 Series", "batocera": "", "es-de": "pc88"}, - {"name": "NEC PC-9800 Series", "batocera": "", "es-de": "pc98"}, - {"name": "PC Arcade Systems", "batocera": "", "es-de": "pcarcade"}, - {"name": "NEC PC Engine", "batocera": "pcengine", "es-de": "pcengine"}, - {"name": "NEC PC Engine CD", "batocera": "pcenginecd", "es-de": "pcenginecd"}, - {"name": "NEC PC-FX", "batocera": "", "es-de": "pcfx"}, - {"name": "PICO-8 Fantasy Console", "batocera": "", "es-de": "pico8"}, - {"name": "Commodore Plus/4", "batocera": "", "es-de": "plus4"}, - {"name": "Nintendo Pokémon Mini", "batocera": "", "es-de": "pokemini"}, - {"name": "Ports", "batocera": "", "es-de": "ports"}, - {"name": "Sony PlayStation 2", "batocera": "", "es-de": "ps2"}, - {"name": "Sony PlayStation 3", "batocera": "", "es-de": "ps3"}, - {"name": "Sony PlayStation Portable", "batocera": "psp", "es-de": "psp"}, - {"name": "Sony PlayStation Vita", "batocera": "", "es-de": "psvita"}, - {"name": "Sony PlayStation", "batocera": "psx", "es-de": "psx"}, - {"name": "Casio PV-1000", "batocera": "", "es-de": "pv1000"}, - {"name": "Quake", "batocera": "", "es-de": "quake"}, - {"name": "MGT SAM Coupé", "batocera": "", "es-de": "samcoupe"}, - {"name": "Nintendo Satellaview", "batocera": "", "es-de": "satellaview"}, - {"name": "Sega Saturn", "batocera": "saturn", "es-de": "saturn"}, - {"name": "Sega Saturn", "batocera": "", "es-de": "saturnjp"}, - {"name": "ScummVM Game Engine", "batocera": "", "es-de": "scummvm"}, - {"name": "Epoch Super Cassette Vision", "batocera": "", "es-de": "scv"}, - {"name": "Sega Mega Drive 32X", "batocera": "sega32x", "es-de": "sega32x"}, - {"name": "Sega Super 32X", "batocera": "", "es-de": "sega32xjp"}, - {"name": "Sega Genesis 32X", "batocera": "", "es-de": "sega32xna"}, - {"name": "Sega CD", "batocera": "segacd", "es-de": "segacd"}, - {"name": "Nintendo SFC (Super Famicom)", "batocera": "", "es-de": "sfc"}, - {"name": "Sega SG-1000", "batocera": "sg1000", "es-de": "sg-1000"}, - {"name": "Nintendo Super Game Boy", "batocera": "", "es-de": "sgb"}, - {"name": "Nintendo SNES (Super Nintendo)", "batocera": "snes", "es-de": "snes"}, - {"name": "Nintendo SNES (Super Nintendo)", "batocera": "", "es-de": "snesna"}, - {"name": "Solarus Game Engine", "batocera": "", "es-de": "solarus"}, - {"name": "Spectravideo", "batocera": "", "es-de": "spectravideo"}, - {"name": "Valve Steam", "batocera": "", "es-de": "steam"}, - {"name": "Sega Titan Video Game System", "batocera": "", "es-de": "stv"}, - {"name": "Bandai SuFami Turbo", "batocera": "", "es-de": "sufami"}, - {"name": "NEC SuperGrafx", "batocera": "", "es-de": "supergrafx"}, - {"name": "Watara Supervision", "batocera": "", "es-de": "supervision"}, - {"name": "Funtech Super A'Can", "batocera": "", "es-de": "supracan"}, - {"name": "Nintendo Switch", "batocera": "", "es-de": "switch"}, - {"name": "Symbian", "batocera": "", "es-de": "symbian"}, - {"name": "Tano Dragon", "batocera": "", "es-de": "tanodragon"}, - {"name": "NEC TurboGrafx-CD", "batocera": "", "es-de": "tg-cd"}, - {"name": "NEC TurboGrafx-16", "batocera": "", "es-de": "tg16"}, - {"name": "Texas Instruments TI-99", "batocera": "", "es-de": "ti99"}, - {"name": "TIC-80 Fantasy Computer", "batocera": "", "es-de": "tic80"}, - {"name": "Thomson TO8", "batocera": "", "es-de": "to8"}, - {"name": "Namco-Sega-Nintendo Triforce", "batocera": "", "es-de": "triforce"}, - {"name": "Tandy TRS-80", "batocera": "", "es-de": "trs-80"}, - {"name": "Taito Type X", "batocera": "", "es-de": "type-x"}, - {"name": "Uzebox Open Source Console", "batocera": "", "es-de": "uzebox"}, - {"name": "GCE Vectrex", "batocera": "", "es-de": "vectrex"}, - {"name": "Commodore VIC-20", "batocera": "", "es-de": "vic20"}, - {"name": "Philips Videopac G7000", "batocera": "", "es-de": "videopac"}, - {"name": "Nintendo Virtual Boy", "batocera": "", "es-de": "virtualboy"}, - {"name": "Visual Pinball", "batocera": "", "es-de": "vpinball"}, - {"name": "VTech V.Smile", "batocera": "", "es-de": "vsmile"}, - {"name": "WASM-4 Fantasy Console", "batocera": "", "es-de": "wasm4"}, - {"name": "Nintendo Wii", "batocera": "", "es-de": "wii"}, - {"name": "Nintendo Wii U", "batocera": "", "es-de": "wiiu"}, - {"name": "Microsoft Windows", "batocera": "", "es-de": "windows"}, - {"name": "Microsoft Windows 3.x", "batocera": "", "es-de": "windows3x"}, - {"name": "Microsoft Windows 9x", "batocera": "", "es-de": "windows9x"}, - {"name": "Bandai WonderSwan", "batocera": "wswan", "es-de": "wonderswan"}, - { - "name": "Bandai WonderSwan Color", - "batocera": "wswanc", - "es-de": "wonderswancolor", - }, - {"name": "Sharp X1", "batocera": "", "es-de": "x1"}, - {"name": "Sharp X68000", "batocera": "", "es-de": "x68000"}, - {"name": "Microsoft Xbox", "batocera": "", "es-de": "xbox"}, - {"name": "Microsoft Xbox 360", "batocera": "", "es-de": "xbox360"}, - {"name": "Infocom Z-machine", "batocera": "", "es-de": "zmachine"}, - {"name": "Sinclair ZX81", "batocera": "", "es-de": "zx81"}, - {"name": "Sinclair ZX Spectrum Next", "batocera": "", "es-de": "zxnext"}, - {"name": "Sinclair ZX Spectrum", "batocera": "", "es-de": "zxspectrum"}, -] - -ES_DE_MEDIA = [ - "3dboxes", - "backcovers", - "covers", - "fanart", - "manuals", - "marquees", - "miximages", - "physicalmedia", - "screenshots", - "titlescreens", - "videos", -] - -BATOCERA_MEDIA = [ - "boxart", - "cartridge", - "image", - "marquee", - "mix", - "screenshot", - "video", - "wheel", -] - -RELACION = [ - {"batocera": "-boxart.", "es-de": "covers"}, - {"batocera": "-cartridge.", "es-de": "physicalmedia"}, - {"batocera": "-marquee.", "es-de": "marquees"}, - {"batocera": "-mix.", "es-de": "miximages"}, - {"batocera": "-screenshot.", "es-de": "screenshots"}, - {"batocera": "-video.", "es-de": "videos"}, -] diff --git a/python/media_mover/media_mover.py b/python/media_mover/media_mover.py deleted file mode 100644 index 7915ee3..0000000 --- a/python/media_mover/media_mover.py +++ /dev/null @@ -1,89 +0,0 @@ -from config import ROM_FOLDERS, CONFIG_FOLDERS, SYSTEMS, ES_DE_MEDIA, BATOCERA_MEDIA, RELACION -import os -import shutil -import time - -def getRomPath(frontend): - for folder in ROM_FOLDERS: - if folder["frontend"] == frontend: - return folder["path"] - return None - -def getConfigPath(frontend): - for folder in CONFIG_FOLDERS: - if folder["frontend"] == frontend: - return folder["path"] - return None - -def getSystemShortName(name, frontend): - for system in SYSTEMS: - if system["name"].lower() == name.lower(): - return system[frontend] - return None - - -def verificar_sistemas_y_carpetas(sistemas, carpetas): - resultados = [] - for sistema in sistemas: - if sistema["batocera"] and sistema["es-de"]: - carpetas_existentes = True - for carpeta in carpetas: - ruta = os.path.join(carpeta["path"], sistema[carpeta["frontend"]]) - if not os.path.isdir(ruta): - carpetas_existentes = False - break - resultados.append((sistema["name"], carpetas_existentes)) - return resultados - -def copiar_archivos(origen, destino): - try: - # Crear la carpeta de destino si no existe - if not os.path.exists(origen): - return - if not os.path.exists(destino): - os.makedirs(destino) - - # Copiar todos los archivos - for archivo in os.listdir(origen): - #print(archivo) - ruta_origen = os.path.join(origen, archivo) - if os.path.isfile(ruta_origen): - for relacion in RELACION: - if relacion["batocera"] in archivo: - final_file = archivo.replace(relacion["batocera"][:-1], "") - destino_carpeta = os.path.join(destino, relacion["es-de"]) - if not os.path.exists(destino_carpeta): - os.makedirs(destino_carpeta) - ruta_destino = os.path.join(destino_carpeta, final_file) - if not os.path.exists(ruta_destino): - shutil.copy2(ruta_origen, ruta_destino) - print(f"Archivo {archivo} copiado a {ruta_destino}") - break - - except Exception as e: - print(f"Error al copiar archivos: {e}") - -def copy_media(system): - batocera_short_name = getSystemShortName(system, "batocera") - es_de_short_name = getSystemShortName(system, "es-de") - origen = os.path.join(getRomPath("batocera"), batocera_short_name, getConfigPath("batocera")) - destino = os.path.join(getConfigPath("es-de"), "downloaded_media", es_de_short_name) - #print(origen) - #print(destino) - copiar_archivos(origen, destino) - - - -def main(): - # Ejecutar y mostrar resultados - resultados = verificar_sistemas_y_carpetas(SYSTEMS, ROM_FOLDERS) - #resultados = [("ATARI LYNX", True)] - for sistema, existe in resultados: - if existe: - print(f"\nCopiando medios del sistema: {sistema.upper()}") - time.sleep(2) - copy_media(sistema) - - -if __name__ == "__main__": - main() diff --git a/python/media_mover/requirements.txt b/python/media_mover/requirements.txt deleted file mode 100644 index e69de29..0000000