# un applescript qui archive les photos de l'apn et qui les renomme à la volée



## two (30 Août 2007)

Je viens de terminer d'&#233;crire un script qui pourrait servir &#224; d'autre et je le mets donc &#224; disposition (merci d'ailleurs &#224; zacromatafalgar et ceslinstinct qui m'ont apport&#233; leur contribution dans ce fil)
Ce script r&#233;cup&#232;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&#233;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 &#224; &#233;t&#233; ecrit de mani&#232;re &#224; permettre de sauvegarder les photos m&#234;me si le disque amovible sur lequel je stocke habituellement mes photos n'est pas branch&#233; (il me propose alors de choisir un dossier autre) 

J'ai &#233;crit ce fichier car je travaille en raw et donc mes photos passent par DXO avant d'&#232;tre import&#233;es dans iphoto (j'ai aussi l'intention d'automatiser un peu l'utilisation de DXO car par manque de temps je pr&#233;f&#232;re utiliser les r&#233;glages par d&#233;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 &#224; copier coller dans votre &#233;diteur de script : 

```
tell application "Finder"
    set mon_texte to (do shell script "date +\"&#37;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&#233;faut 
    on error
        set dossier_source to choose folder with prompt "Choisissez l'emplacement des photos &#224; importer."
    end try
    try
        set dossier_final to "MiniPartner:Archive photos raw:" -- ici votre dossier de destination par d&#233;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&#233;ja un dossier d'archive pour cette date, choisisez ou cr&#233;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&#233;rotation d'origine et est d&#233;riv&#233;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 &#224; l'emplacement du premi&#232;r caract&#232;re &#224; conserver de l'ancien nom
    (pour une photo DSC_1234 le 5&#232; caract&#232;re est donc le 1 de 1234) 
    - le "DTWO-" est &#224; remplacer &#224; 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&#233;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
```


----------

