141 lines
4.5 KiB
Python
141 lines
4.5 KiB
Python
|
# /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 [<options>] <list of files>\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()
|