Date des photos exportées de Photos vers Finder

Ok !
je te met quand même le script qui te permet d'ajouter une date aux fichiers qui n'en ont pas.
Ce script est à enregistrer comment application, et sera un dropplet, il suffira de déposer un fichier sur son icone il te demande d'entrée la date au format AAAA:MM:JJ:HH:SS et il renseigne toutes les dates de ce fichier avec cette date.

Bloc de code:
on open the droppeditems
   
    set nom to the droppeditems
    set nom to nom as string
    display dialog "Entrer la date de creation AAAA:MM:JJ:HH:MN:SS" default answer ""
    set ladate to text returned of result
   
    set lacommande1 to "/usr/local/bin/exiftool -datetimeoriginal=" & ladate & " " & quoted form of POSIX path of nom
    set lacommande2 to "/usr/local/bin/exiftool -createdate=" & ladate & " " & quoted form of POSIX path of nom
    set datephoto to do shell script lacommande1
    set datephoto to do shell script lacommande2
   
    set lacommande3 to "rm " & quoted form of POSIX path of nom & "_original"
    set datephoto to do shell script lacommande3
   
    --pour date création et modification
    set yy to text 3 thru 4 of ladate
    set yyyy to text 1 thru 4 of ladate
    set mm to text 6 thru 7 of ladate
    set jj to text 9 thru 10 of ladate
    set hh to text 12 thru 13 of ladate
    set mn to text 15 thru 16 of ladate
    set ladate to mm & "/" & jj & "/" & yyyy & " " & hh & ":" & mn
    set lacommande1 to "setfile -m  " & "'" & ladate & "'" & " " & quoted form of POSIX path of nom
    set lacommande2 to "setfile -d  " & "'" & ladate & "'" & " " & quoted form of POSIX path of nom
    do shell script lacommande1
    do shell script lacommande2
end open
 
Bonsoir,

Bien sur il suffit d'enlever la partie de renommage.
Le script devient:
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 lefichier to chaque_fichier
            set AppleScript's text item delimiters to {""}
            set nom to name of chaque_fichier --récupère le nom du fichier
            set extens to document file nom in un_dossier --recupere l extension du fichier
            set lextension to name extension of extens
            set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
            set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
            set elements to text items of nom
            set nomcourt to (items 1 thru -2 of elements) as string
            set ancien_nom to nomcourt
            set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
           
            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
                if datephoto is "" then set datephoto to do shell script "/usr/local/bin/exiftool -CreationDate " & quoted form of POSIX path of chaque_fichier
                if datephoto is "" then set datephoto to do shell script "/usr/local/bin/exiftool -CreateDate " & quoted form of POSIX path of chaque_fichier
               
               
            on error
                -- Ecrit un fichier erreur sur le bureau si erreur chargement date
                set lelog to open for access ((path to desktop folder as text) & "les erreurs.txt") as text with write permission
                write "Le fichier ne contient pas de date  : " & chaque_fichier & return to lelog starting at eof
                close access lelog
               
                set datephoto to ""
            end try
           
            if length of datephoto > 20 then
                set x to (length of datephoto) - 33
                set DateOriginale to text -x thru -1 of datephoto
                set ladate to text 1 thru 5 of DateOriginale
                set lannee to ladate
                set ladate to ladate & text 7 thru 8 of DateOriginale
                set lemois to text 7 thru 8 of DateOriginale
                set ladate to ladate & text 10 thru 11 of DateOriginale
                set lejour to text 10 thru 11 of DateOriginale
                set ladate to ladate & text 13 thru 14 of DateOriginale
                set lheure to text 13 thru 14 of DateOriginale
                set ladate to ladate & text 16 thru 17 of DateOriginale
                set lesminutes to text 16 thru 17 of DateOriginale
                set ladate to ladate & "." & text 19 thru 20 of DateOriginale
                set lessecondes to text 19 thru 20 of DateOriginale
                set newnom to lannee & "-" & lemois & "-" & lejour & " " & lheure & "." & lesminutes & "." & lessecondes
               
                set xxx to ladate as string
               
                if xxx is " 000000000000.00" then
                    -- Ecrit un fichier erreur sur le bureau si erreur chargement date(=0000...)
                    set lelog to open for access ((path to desktop folder as text) & "les erreurs.txt") as text with write permission
                    write "Le fichier ne contient pas de date : " & chaque_fichier & return to lelog starting at eof
                    close access lelog
                else
                    do shell script "touch -t " & ladate & " " & quoted form of POSIX path of chaque_fichier
                end if
            end if
           
            if datephoto is not "" then
               
            else
                set lelog to open for access ((path to desktop folder as text) & "les erreurs.txt") as text with write permission
                write "Le fichier ne contient pas de date  : " & chaque_fichier & return to lelog starting at eof
                close access lelog
            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
Bonsoir,
Je suis totalement novice dans tout ce qui est script ...
Je voulais utiliser ton script pour conserver les dates d'origine de mes photos entre le cloud et autres fichiers, j'ai donc téléchargé ExifTool mais je n'arrive pas à l'utiliser ... Ça m'ouvre cette page mais quand je copie ton script dedans, ça ne le mets même pas en entier.
Sais-tu d'où provient le problème ?
Merci par avance
 

Fichiers joints

  • processed-9ACFF609-089C-4E02-82F5-B0F757B9387B-9A3A02BE-6773-4EE9-8C15-496052C63E05.jpeg
    processed-9ACFF609-089C-4E02-82F5-B0F757B9387B-9A3A02BE-6773-4EE9-8C15-496052C63E05.jpeg
    107,3 KB · Affichages: 2
Bonjour,

Ta copie d'écran montre une fenêtre du terminal que l'on utilise pas avec ce script !

Le script sert à remplacer la date de création d"un fichier photo par la date de la prise de vue de la photo.
Il faut que les photos à traiter soit dans un dossier sur ton ordinateur.

Il faut d'abord installer le logiciel exiftool, à télécharger là :
Prendre la version "Mac os package: Exiftool-12-69.dmg"
un double clic sur le fichier téléchargé le décompresse et ouvre une fenêtre avec un fichier:"Exiftool-12-69.pkg", un double clic sur ce fichier installe exiftool, qui ne sera pas visible (cela installe une commande supplémentaire dans le terminal).

Pour ensuite se servir du script il faut:
Ouvrir Editeur de script qui se trouve dans Application—>Utilitaires
Clic sur le bouton “Nouveau document” en bas à gauche
Dans la fenêtre qui s’ouvre faire un copier coller du script.
Cliquer sur exécuter en haut à gauche
Le script te demande de sélectionner le dossier contenant les fichiers à traiter.
Il fait le job
S’il trouve des erreurs, il crée sur le bureau un fichier "les erreurs.txt" contenant les erreurs rencontrées, une erreur par ligne.
Quand il a terminé il te met un message ....

Afin d'éviter les problèmes (pas de retour en arrière possible), faire le job sur une copie des fichiers !
Dis moi si c'est bon !
 
Bonjour,

Ta copie d'écran montre une fenêtre du terminal que l'on utilise pas avec ce script !

Le script sert à remplacer la date de création d"un fichier photo par la date de la prise de vue de la photo.
Il faut que les photos à traiter soit dans un dossier sur ton ordinateur.

Il faut d'abord installer le logiciel exiftool, à télécharger là :
Prendre la version "Mac os package: Exiftool-12-69.dmg"
un double clic sur le fichier téléchargé le décompresse et ouvre une fenêtre avec un fichier:"Exiftool-12-69.pkg", un double clic sur ce fichier installe exiftool, qui ne sera pas visible (cela installe une commande supplémentaire dans le terminal).

Pour ensuite se servir du script il faut:
Ouvrir Editeur de script qui se trouve dans Application—>Utilitaires
Clic sur le bouton “Nouveau document” en bas à gauche
Dans la fenêtre qui s’ouvre faire un copier coller du script.
Cliquer sur exécuter en haut à gauche
Le script te demande de sélectionner le dossier contenant les fichiers à traiter.
Il fait le job
S’il trouve des erreurs, il crée sur le bureau un fichier "les erreurs.txt" contenant les erreurs rencontrées, une erreur par ligne.
Quand il a terminé il te met un message ....

Afin d'éviter les problèmes (pas de retour en arrière possible), faire le job sur une copie des fichiers !
Dis moi si c'est bon !
Bonjour,

Effectivement il me manquait la partie "Editeur de script" que je ne connaissais pas du tout ...
J'ai donc suivi ta superbe explication et ça fonctionne.

Un grand merci pour ton aide !
 
Content pour toi !