Photo Importation de photos à la mauvaise date

jcezanna54

Membre actif
3 Septembre 2005
441
28
73
Bonjour,
J'ai 2 scripts :
Le premier pour renommer chaque photos en fonction du nom du répertoire qui a la forme AAAA-MM-JJ-lieu auquel j'ajoute un numéro à suivre
Le deuxième pour dater chaque photos en fonction de la date du nom du fichier de la photos.
Les informations suivantes sont initialisées :
'Exif.Image.DateTime',
'Exif.Photo.DateTimeDigitized',
'Exif.Photo.DateTimeOriginal'
'Iptc.Application2.DateCreated','Iptc.Application2.DigitizationDate'
'Xmp.xmp.CreateDate','Xmp.xmp.ModifyDate','Xmp.photoshop.DateCreated'
Tous ces tags sont alors bien initialisés quand je les liste avec un 3ème script.

Mais quand j'importe un fichier dans Photos, dans la liste des photos, il est positionné à la date de sa création. Par exemple le 15 mars 2023, alors que toutes les autres dates sont en 2010.

Par ailleurs lorsque avec le 3éme script, je liste tous les tags exif et autre en faisant une sélection par un "grep" sur 2023, rien ne sort.

Merci de me dire pourquoi et s'il y a un paramétrage à modifier. Redater des milliers de photos est vraiment pénible.
Cordialement,
 
Depuis que j'ai découvert GraphicConverter, toutes mes photos passent par ce logiciel avant d'aller dans Photos : plus de souci de date, lieu, légende, ... Et cela me permet aussi de garder une version "Finder" au cas où Photos ferait des siennes !
 
Sinon il y a ce script AppleScript, qui met à jour la date de création à partir de celle de l'Exif.

Bloc de code:
-- Forcer la date de création des photos à celle de l'EXIF, si présent.

do shell script "echo Fichiers non traités > ~/Desktop/'set creation date.log.txt' ; echo ' '   >> ~/Desktop/'set creation date.log.txt'"

createList(choose folder with prompt "Sélectionnez le dossier contenant les fichiers à renommer")

on createList(item_list)
    set the the_items to list folder item_list without invisibles
    set item_list to item_list as string
    repeat with the_item in the_items
        set the_item_alias to (item_list & the_item) as alias
        if folder of (info for the_item_alias) then
            my createList(the_item_alias)
        else
            tell application "Finder"
                set nom_script to "echo " & POSIX path of the_item_alias & " >> ~/Desktop/'set creation date.log.txt'"
                try
                    set datephoto to do shell script "sips -g creation " & quoted form of POSIX path of the_item_alias
                on error
                    set datephoto to ""
                end try
                if datephoto ends with "<nil>" or length of datephoto ≤ 20 then
                    try
                        do shell script nom_script
                    end try
                else
                    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
                    -- display dialog ladate
                    try
                        do shell script "touch -t " & ladate & " " & quoted form of POSIX path of the_item_alias
                    on error
                        try
                            do shell script nom_script
                        end try
                    end try
                end if
            end tell
        end if
    end repeat
end createList

tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Merci à sinbad21 pour sa réponse.
Cependant après avoir lu la page de man de "touch", il ne semble pas que l'option "-t" permette de modifier la date de création mais seulement la dernière date d'accès et de modification du contenu.
Il peut donc sembler normale que je me retrouve avec une date en 2023, si j'ai utilisé un script pour mettre à jour la date dans le fichier.

Merci pour le script, mais je suis plus familier de perl, python et autre bash qui ont le bon goût d'être portable.
Je vais changer mon script de datation des tags exif pour inclure la prise en compte de la date de dernière modification.

Merci

PS: Juste pour information, ancien d'Unix, pour moi, l'information 'ctime' ne correspondait pas à la date de création mais à celle de changement de l'inode ( chgt de propriétaire par exemple). Mais les développeurs de MacOS l'ont manifestement changé de destination. Dès que j'aurai une machine sous linux, je vérifierai si c'est la même chose maintenant.
 
Pour information, j'ai rajouté ces lignes dans mon script en python de modification des tags exif et autres en fonction du nom du fichier :
# changement de la date de modification du fichier
nouvelle_date = datetime.datetime(iyear, imonth, iday)
nouvelle_date_unix = nouvelle_date.timestamp()+(iheure*3600)+(iminute*60)+iseconde
os.utime(file, (nouvelle_date_unix, nouvelle_date_unix))
Encore merci à Sinbad21 qui a mis le doigt sur mon probleme et a indiqué la solution.
 
  • J’aime
Réactions: sinbad21