# /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()