Je viens de terminer d'écrire un script qui pourrait servir à d'autre et je le mets donc à disposition (merci d'ailleurs à zacromatafalgar et ceslinstinct qui m'ont apporté leur contribution dans ce fil)
Ce script récupère les photos de la carte de mon appareil photo pour les archiver dans un dossier fixe (dans des sous dossier par date d'import). Dans la foulée il renomme toute les photos pour leur donner un nom qui me permettra de distinguer mes photos de celles de mes amis.
Le script à été ecrit de manière à permettre de sauvegarder les photos même si le disque amovible sur lequel je stocke habituellement mes photos n'est pas branché (il me propose alors de choisir un dossier autre)
J'ai écrit ce fichier car je travaille en raw et donc mes photos passent par DXO avant d'ètre importées dans iphoto (j'ai aussi l'intention d'automatiser un peu l'utilisation de DXO car par manque de temps je préfère utiliser les réglages par défaut de DXO et de refaire le traitement plus en profondeur uniquement pour les photos qui en valent vraiment la peine...)
Voici donc le script à copier coller dans votre éditeur de script :
Bloc de code:
tell application "Finder"
set mon_texte to (do shell script "date +\"%Y-%m-%d\"") as string
-- mon_texte enregistrera donc la date sous la forme 2007-08-27 qui sevira de nom de dossier pour cette archive
try
set dossier_source to "NIKON D80:DCIM:100NCD80:" -- ici votre dossier d'origine par défaut
on error
set dossier_source to choose folder with prompt "Choisissez l'emplacement des photos à importer."
end try
try
set dossier_final to "MiniPartner:Archive photos raw:" -- ici votre dossier de destination par défaut
on error
set dossier_final to choose folder with prompt "Choisissez le Dossier ou archiver vos photos."
end try
try
make new folder at dossier_final with properties {name:mon_texte}
set dossier_final2 to (dossier_final & mon_texte & ":") as alias
on error
set dossier_final2 to choose folder with prompt "Il existe déja un dossier d'archive pour cette date, choisisez ou créez en un nouveau "
end try
set liste_des_fichiers to list folder dossier_source
repeat with fichier in liste_des_fichiers
set theFile to contents of fichier
set pathFile to (dossier_source & theFile)
duplicate pathFile to dossier_final2
end repeat
(* la suite renomme les photos en conservant leur numérotation d'origine et est dérivée du script Trim Folder Names dans les script fournis par apple
elle renomme dans mon cas des fichiers DSC_1234 en DTWO-1234
deux choses sont a modifier pour votre usage dans la ligne :
set the new_name to "DTWO-" & (characters (5) thru -1 of the current_name) as string
-le 5 correspond à l'emplacement du premièr caractère à conserver de l'ancien nom
(pour une photo DSC_1234 le 5è caractère est donc le 1 de 1234)
- le "DTWO-" est à remplacer à votre bon vouloir
*)
set the item_list to items of dossier_final2
set dossier_final2 to dossier_final2 as string
repeat with i from 1 to number of items in the item_list
set this_item to item i of the item_list
set this_item to (this_item) as alias
set this_info to info for this_item
set the current_name to the name of this_info
set the new_name to "DTWO-" & (characters (5) thru -1 of the current_name) as string
my set_item_name(this_item, new_name)
end repeat
end tell
on set_item_name(this_item, new_name)
tell application "Finder"
--activate
set the parent_container_path to (the container of this_item) as text
if not (exists item (the parent_container_path & new_name)) then
try
set the name of this_item to new_name
on error the error_message number the error_number
if the error_number is -59 then
set the error_message to "This name contains improper characters, such as a colon (:)."
else --the suggested name is too long
set the error_message to error_message -- "The name is more than 31 characters long."
end if
--beep
tell me to display dialog the error_message default answer new_name buttons {"Cancel", "Skip", "OK"} default button 3
copy the result as list to {new_name, button_pressed}
if the button_pressed is "Skip" then return 0
my set_item_name(this_item, new_name)
end try
else --the name already exists
--beep
tell me to display dialog "Ce nom de fichier existe déja, veuillez le renommer." default answer new_name buttons {"Cancel", "Skip", "OK"} default button 3
copy the result as list to {new_name, button_pressed}
if the button_pressed is "Skip" then return 0
my set_item_name(this_item, new_name)
end if
end tell
end set_item_name