From 706266f970c16905310d2916fd50fbab7d9d07e3 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Mon, 17 Jul 2023 11:57:17 +0200 Subject: [PATCH] add rename photo folder --- files-management/rename_photo_folder.py | 141 ++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 files-management/rename_photo_folder.py diff --git a/files-management/rename_photo_folder.py b/files-management/rename_photo_folder.py new file mode 100644 index 0000000..086af1c --- /dev/null +++ b/files-management/rename_photo_folder.py @@ -0,0 +1,141 @@ +# /home/poule/backup/rename_photos_testland/07 Juillet 2006/ + +import re +import sys +import os +import os.path +import time +import logging +from optparse import OptionParser +import colorama +import datetime # for calculating duration of chunks +import json # to parse JSON meta-data files +import appendfilename + +# définition du script +USAGE = "\n\ + rename_photo_folder [] \n\ +\n\ +This little Python script tries to rename files.\n\ +\n\ +" + +# gestion des options de commande +parser = OptionParser(usage=USAGE) +parser.add_option("--debug", dest="debug", action="store_true", + help="enable debug mode, printing debug information on selected file formats. Currently: just PXL files.") + +(options, args) = parser.parse_args() +files = args + +# helpers pour clarifier le déroulement +INVOCATION_TIME = time.strftime("%Y-%m-%dT%H:%M:%S", time.localtime()) +PROG_VERSION_DATE = "0.5.0" + +# dossier de destination de base pour les fichiers de photos +destination_folder_base="/home/poule/backup/rename_photos_testland/" +SUCCESS_DIR=destination_folder_base+'success' + + +from pathlib import Path + + + +def move_to_success_dir(dirname, newfilename): + """ + Moves a file to SUCCESS_DIR + """ + if os.path.isdir(SUCCESS_DIR): + logging.debug('using hidden feature: if a folder named \"' + SUCCESS_DIR + + '\" exists, move renamed files into it') + os.rename(os.path.join(dirname, newfilename), os.path.join(dirname, SUCCESS_DIR, + newfilename)) + logging.info('moved file to sub-directory "' + SUCCESS_DIR + '"') + +def make_new_name_from_dirname(filename): + """ + Gets a new name included into a file name + """ + # Split the extension from the path and normalise it to lowercase. + ext_origin = os.path.splitext(filename)[-1] + ext = ext_origin.lower() + current_dir_name = os.path.basename(os.getcwd()) + + newfile_name = filename.removesuffix(ext_origin).replace(' ',' ')+' '+current_dir_name+' '+ext + print(filename +'\n => '+newfile_name) + return newfile_name + + + +import subprocess + + +def move_searched_files_to_target_dir(search_path, target_dir): + my_file_search = Path(search_path) + if my_file_search.exists(): + bash_command="mv "+my_file_search+" "+current_dir_name+"' " + + print(bash_command) + process = subprocess.Popen(bash_command.split(), stdout=subprocess.PIPE) + output, error = process.communicate() + + +from string import Template + +# action principale, lecture du dossier pour changer le nom des fichiers +def main(): + """Main function""" + + + files_counter = 0 + folder_counter = 0 + current_dir_name = os.path.basename(os.getcwd()) +# if options.version: +# print(os.path.basename(sys.argv[0]) + " version " + PROG_VERSION_DATE) +# sys.exit(0) + +# print("renommer les photos selon le nom de dossier les contenant") +# print("nom du dossier: ") + + print("chemin current_dir_name: ",current_dir_name) + + for file in files: + if os.path.isdir(file): + print('hop hop hop voilà un dossier: '+file) + print('on bouge tous les fichiers vidéos qu\'il peut contenir ici') + + move_searched_files_to_target_dir(file+'/*.mpg', current_dir_name) + move_searched_files_to_target_dir(file+'/*.mpeg', current_dir_name) + move_searched_files_to_target_dir(file+'/*.mp4', current_dir_name) + folder_counter += 1 + # prendre le path de chaque photo donnée en argument du script + # garder le dernier dossier du path en tant que nom à ajouter aux photos + for file in files: + if os.path.isfile(file) and current_dir_name not in file: + new_file_name = make_new_name_from_dirname(file) + + # if the current_dir_name is not already present in the file name, add it + + old_file_name = os.getcwd()+'/'+file +# bash_command_line = 'appendfilename "'+fullpathfile+'" --text="'+current_dir_name+'"' + +# print(' \n '+bash_command_line+' \n') + if os.stat(old_file_name): + print('le fichier existe bien '+ old_file_name) + print('nouveau nom : '+ make_new_name_from_dirname(file)) + os.rename(old_file_name, make_new_name_from_dirname(file)) + files_counter += 1 + + + + # TODO + + # faire du append to file name du nom du dossier à chaque photo + + print("\n filenames found: " + (str(len(files)))) + print(" filenames changed: " + str(files_counter)) + print(" folders found: " + str(folder_counter)) + print("ça c'est fait") + + +main() \ No newline at end of file