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

Nordlaser

Membre confirmé
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 expert
Club MacG
29 Mars 2008
2 648
417
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 confirmé
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.
 

vicoo

Membre enregistré
13 Novembre 2021
2
0
24
Bonjour, je sais que ce sujet date un peux mais peux tu m'expliquer comment faire marcher ce script ? des la premiere ligne jeun code erreur "bash: tell: command not found"
je ne trouve pas d'autre solution pour organiser mes photos
 
Dernière édition par un modérateur:

zeltron54

Membre expert
Club MacG
29 Mars 2008
2 648
417
Lorraine
@vicoo
Relis bien le post #2 ci-dessus car cela va changer les dates, des fichiers contenus dans le dossier sélectionné, par la date de la prise de vue des photos.

Le script ci dessus est un applescript ...( pas un script shell, pas un bash)
Il s'exécute dans l'application "Editeur de script" que tu trouveras dans Applications-->Utilitaires...
Tu lances l"appli "Editeur de script" tu choisis nouveau document et tu fais un copié collé du script dans la fenêtre qui s'ouvre.
Pour exécuter le script il suffit d'appuyer sur le bouton "Exécuter" en haut à gauche.

Attention pour que le script fonctionne il faut d'abord avoir installé l'appli "exiftool" à télécharger là: https://exiftool.org/ prendre la version "MacOS Package: ExifTool-12.35.dmg (3.0 MB)" et l'installer (cela ajoute une commande dans le système).
 
Dernière édition:

vicoo

Membre enregistré
13 Novembre 2021
2
0
24
@vicoo
Relis bien le post #2 ci-dessus car cela va changer les dates, des fichiers contenus dans le dossier sélectionné, par la date de la prise de vue des photos.

Le script ci dessus est un applescript ...( pas un script shell, pas un bash)
Il s'exécute dans l'application "Editeur de script" que tu trouveras dans Applications-->Utilitaires...
Tu lances l"appli "Editeur de script" tu choisis nouveau document et tu fais un copié collé du script dans la fenêtre qui s'ouvre.
Pour exécuter le script il suffit d'appuyer sur le bouton "Exécuter" en haut à gauche.

Attention pour que le script fonctionne il faut d'abord avoir installé l'appli "exiftool" à télécharger là: https://exiftool.org/ prendre la version "MacOS Package: ExifTool-12.35.dmg (3.0 MB)" et l'installer (cela ajoute une commande dans le système).
Bonjour, désolé le seul code auquel je suis habitué et le langage R. En tout cas merci ca marche super bien, cependant il ne semble fonctionner que sur les photos, les videos ont encore la date du jour de creation du fichier... Savez vous comment faire ?
 

zeltron54

Membre expert
Club MacG
29 Mars 2008
2 648
417
Lorraine
Bonjour,

Effectivement ce script est fait pour les photos !

J'avais fait un script qui traitait les photos et les vidéos voir là :
le message #77 , mais lit bien les post car le script vérifie si une date est trouvée et crée un fichier texte sur le bureau s'il ne trouve pas de dates compatibles...