diff --git a/zxdb.py b/zxdb.py index ac0c93b..795ac77 100644 --- a/zxdb.py +++ b/zxdb.py @@ -226,6 +226,15 @@ def get_final_destination_folder(year, root_folder): # Combina los prefijos y la carpeta raíz para obtener la carpeta de destino final return os.path.join(prefix1, prefix2, root_folder) + +# Crea las carpetas de destino y copia o extrae el archivo de la caché +def process_cache_file(cache_file, destination_subfolder, destination_file, element): + os.makedirs(destination_subfolder, exist_ok=True) + if cache_file.endswith(".zip") and element["subfolder"] == "": + unzip_file(cache_file, destination_subfolder) + else: + shutil.copyfile(cache_file, destination_file) + # Obtiene los ficheros de la consulta desde internet o desde la caché # y los deposita en la carpeta destino, descomprimiendo los archivos necesarios def get_files(): @@ -255,40 +264,32 @@ def get_files(): last_game_folder = element["root_folder"] try: - # Comprueba si ya existe el fichero a descargar + # Si el fichero no existe en la carpeta de destino if not os.path.isfile(destination_file) and not os.path.isfile(os.path.join(destination_subfolder, element["non_zip_file_name"])): - # Comprueba si ya existe el fichero en la cache + + # Si existe en la caché, lo copia if os.path.isfile(cache_file): - # Si encuentra el fichero en cache, crea las carpetas de destino y lo copia o lo extrae - os.makedirs(destination_subfolder, exist_ok=True) - if cache_file.endswith(".zip") and element["subfolder"] == "": - unzip_file(cache_file, destination_subfolder) - else: - shutil.copyfile(cache_file, destination_file) + process_cache_file(cache_file, destination_subfolder, destination_file, element) print_status(current_file, total_files, element, total_files_width, status="cached") - # El fichero no está en la cache + # Si no existe en la caché, lo descarga else: - status = "not found " if download_file(element["url"], temp_file): - status = "downloaded" + print_status(current_file, total_files, element, total_files_width, status="downloaded") if os.path.isfile(temp_file): - # Copia el fichero temporal a la cache + # Mueve el fichero temporal descargado a la cache os.makedirs(cache_subfolder, exist_ok=True) - shutil.copyfile(temp_file, cache_file) - os.remove(temp_file) + shutil.move(temp_file, cache_file) # Copia el fichero de la cache al destino if os.path.isfile(cache_file): - os.makedirs(destination_subfolder, exist_ok=True) - if cache_file.endswith(".zip") and element["subfolder"] == "": - unzip_file(cache_file, destination_folder) - else: - shutil.copyfile(cache_file, destination_file) - print_status(current_file, total_files, element, total_files_width, status=status) + process_cache_file(cache_file, destination_subfolder, destination_file, element) + else: + print_status(current_file, total_files, element, total_files_width, status="not found") if wait: time.sleep(random.randint(min_wait, max_wait)) - # El fichero ya existe en el destino + + # Si el fichero ya existe en el destino, no hace nada else: print_status(current_file, total_files, element, total_files_width, status="skipping") @@ -354,9 +355,10 @@ def print_elements(mode=0): def main(): connect(query_index=3) process_elements() - print_elements(mode=1) + #print_elements(mode=1) clear_destination_folder() get_files() + remove_empty_directories(destination_path) if __name__ == "__main__": main()