Besoin d'un script pour modifier les dates des créations et de modifications de photos à partir du nom du fichier

Nordlaser

Membre junior
30 Septembre 2006
55
1
Bonjour.

Je ne m'y connais pas en script et je voulais savoir si quelqu'un aurait la générosité de bien vouloir me créer un petit Applescript (ou autre) qui me permettrait de modifier les dates des créations et dates de modifications d'un fichier, basé sur le nom. Je m'explique:

J'ai un fichier JPEG nommé: 20200417_13-22-17.jpg, mais l'ayant importé le 18 avril, macOS voit le fichier comme étant créé (et modifié) le 20200418, ce qui est embêtant. Pour des fichiers simples, j'utilise la commande "touch -t", mais impossible de changer cela en masse. Idem depuis Apple Photos, ça prend trop de temps.

Quelqu'un aurait une idée comme faire pour récupérer les informations du nom pour réécrire la date de création et de modification?
Je vous remercie.

Cordialement,

Nordlaser
 

zeltron54

Membre d’élite
29 Mars 2008
1 755
262
Lorraine
Bonsoir,


les fichiers photos ont dans les données Exif beaucoup de dates.
la date d'origine de la prise de la photo ne change jamais, Par contre la date de création du fichier (dans l'ordinateur) est bien mise lorsque l'on crée le fichier.
Le finder te montre cette date de création du fichier, alors que les applications de gestion de photos (Photos) sur mac trient les fichiers sur la date d'origine.

Il existe plein d'applications pour gérer les dates (pas gratuites).

Un petit script peu donc copier la date d'origine de la photo pour la coller dans la date de création du fichier.
Donc pas besoin de s'occuper de la date contenue dans le nom.

Pour utiliser le script ci-dessous, il faut au préalable télécharger le logiciel ExifTool et l'installer (il ajoute une commande dans le système) à télécharger la: https://exiftool.org/ prendre la version MacOS Package: ExifTool-11.94.dmg (2.9 MB).

ensuite exécuter le script ci-dessous.
Il te demande de sélectionner le dossier contenant les fichiers à traiter, et il te met un message lorsqu'il a fini.
Dis moi si c'est bon !
Bloc de code:
-- remplace date du fichier par la date exif creation

tell application "Finder"
    set Chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à redater"
    my inspecter(Chemin)
end tell

on inspecter(un_dossier)
    tell application "Finder"
        -- traitement des fichiers :
        set les_fichiers to files of un_dossier
        repeat with chaque_fichier in les_fichiers
            -- traitement d'un fichier
            set chaque_fichier to chaque_fichier as string
            
            
            try
                set datephoto to do shell script "/usr/local/bin/exiftool -DateTimeOriginal " & quoted form of POSIX path of chaque_fichier -- avec exiftool installé
                
            on error
                set datephoto to ""
            end try
            
            
            if length of datephoto > 20 then
                set DateOriginale to text -20 thru -1 of datephoto
                set ladate to text 1 thru -16 of DateOriginale
                set ladate to ladate & text 7 thru -13 of DateOriginale
                set ladate to ladate & text 10 thru -10 of DateOriginale
                set ladate to ladate & text 13 thru -7 of DateOriginale
                set ladate to ladate & text 16 thru -4 of DateOriginale
                set ladate to ladate & "." & text 19 thru -1 of DateOriginale
                do shell script "touch -t " & ladate & " " & quoted form of POSIX path of chaque_fichier
            end if
            
            
        end repeat
        
        -- traitement des dossiers :
        set les_dossiers to folders of un_dossier
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            my inspecter(chaque_dossier)
        end repeat
    end tell
    
end inspecter
tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 

Nordlaser

Membre junior
30 Septembre 2006
55
1
Bonjour zelton54.

Merci pour ta réponse rapide et très complète!

J'ai besoin de temps pour pouvoir mettre en place tout ce que tu as écris (je suis un peu lent à la détente), alors je vais regarder ça tranquillement ce soir après le travail, et je reviens lpvp pour te donner un feedback.