add rename photo folder script
This commit is contained in:
parent
9745140b30
commit
b356150869
141
bash/file_management/rename_photo_folder.py
Normal file
141
bash/file_management/rename_photo_folder.py
Normal file
@ -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 [<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()
|
19
bash/file_management/rename_photo_folder.sh
Normal file
19
bash/file_management/rename_photo_folder.sh
Normal file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "renommer les photos selon le nom de dossier parent";
|
||||
# TODO
|
||||
# prendre le path de chaque photo donnée en argument du script
|
||||
|
||||
fullpath=$(realpath "$1")
|
||||
dirname=$(dirname "$0")
|
||||
echo $(dirname $fullpath)
|
||||
|
||||
#echo "dirname:"
|
||||
#echo $dirname
|
||||
echo $(pwd)
|
||||
|
||||
# garder le dernier dossier du path en tant que nom à ajouter aux photos
|
||||
|
||||
# faire du append to file name du nom du dossier à chaque photo
|
||||
|
||||
echo "ça c'est fait";
|
Loading…
Reference in New Issue
Block a user