Perte des dates des photos

Bonsoir,

La recherche de double ne s'occupe pas du nom ni de la date.
Comme disait @ecatomb il fait un "cksum" en gros, la somme des octets qui compose le fichier, si cette somme est la même il déclare les fichiers comme doubles.
Donc il suffit d'avoir modifié ne serait-ce qu'un seul octet pour qu'il soit différent.
Donc si je comprends 2 fichiers différents mais qui ont exactement le même nombre d’octets apparaissent comme doublons.
 
pas tout à fait, c’est la Somme des octets. un octet ayant 8 bits de valeur soit 0 soit 1 .
donc tu n’as aucune chance d´avoir 2 fichiers différents ayant le même cksum.

Tu risques plus de trouver 2 fichiers identiques à la vue et pourtant différents en cksum.

voir explications https://en.m.wikipedia.org/wiki/Cksum
 
Dernière édition:
ok et merci pour l'explication
autre petit soucis: je me retrouve maintenant dans la photothèque du Mac avec 5522 photos et 538 vidéos que je veux par la suite renommer puis envoyer sur mon nas
je fais une 1ère manip: sélectionner tout (6060 éléments)/exporter/exporter l'original non modifié de 6060 éléments/choix du dossier
ce dossier est 'rempli' en quelques secondes et cmd/i me donne 53 603 278 883 octets (54,36 Go sur disque) pour 6 265 éléments
2ème manip: sélectionner tout/exporter/exporter 6060 éléments/choix du dossier
ce nouveau dossier met plus d'une 1/2 heure pour être rempli et cmd/i me donne 27 681 885 004 octets (28,37 Go sur disque) pour 6 061 éléments
quelle est la différence entre ces 2 exports?
je voudrais maintenant supprimer les photos sur mon iPhone mais la manip est impossible
 
Bonjour,

Exporter l'original, comme l'intitulé le dit exporte la photo telle qu'elle était au moment ou elle à été importée dans la photothèque.

Exporter la photo, exporte la photo comme tu la vois dans "photo" avec toute les modifications que tu as faites sur les photos depuis son import, et de plus tu choisis la qualité de l'export (le taux de compression Jpeg,supérieur, maximum, etc...)

Sachant que le logiciel photo stocke les modifications dans une base de donnée en mémorisant tes actions, pas la photo modifié, lors de l'export il refait les modifications de chaque photo, d' ou le temps de l'export, pour le poids des photos il dépend de la qualité de l'export que tu as choisi.
 
ok merci, mes photos n'étant pas retouchées, je garderai le dossier 'original non modifié' en sauvegarde dans le nas.
je peux donc en toute sécurité vider la photothèque?
 
comme je suis curieux, pourquoi le nombre de photos/vidéos n'est pas le même en transfert 'original' et en transfert 'modifié' ?
 
Il me semble, à vérifier, que lors de l'export modifié on choisi aussi un sous dossier pour exporter avec classement par "moments", donc même nombre de photo mais nombre d'éléments supérieur (compte les dossiers).
 
Je suis ch... je sais mais j´ai 1 fichier de plus dans le dossier ´modifié’ et 204 de plus dans le dossier ´original´ (6061 et 6265 par rapport aux 6060 de départ).
d’accord avec toi qu’il devrait y avoir plus de fichiers dans le dossier ´modifié’
 
Vu d'ici, j'ai du mal ! LOL
As toi de chercher ou est la différence ...
N'oublie pas lors des comptes que 1 dossier = 1 éléments
Bonne recherche ... ;)
 
Bonjour Karupat

Je suis content que mon petit script ai pu te rendre service.

Je l'ai donc modifié
  • Si un fichier n'a pas de date exif renseigné, alors il n'est pas touché
  • Le script inspecte toute la hiérarchie du dossier sélectionné avec tous ses sous-dossiers
En espérant que cela te convienne.

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
Allô, je suis tombée sur ce bloc de code que j’aurais absolument besoin pour remettre les dates de création sur mes photos et vidéos que je viens de transférer ! Mais comment on procède pour mettre ce bloc de code ? Est il possible de me faire un tuto? Je me débrouille sur L’ordi mais Pas au point de faire des trucs comme ça !
 
Allô, je suis tombée sur ce bloc de code que j’aurais absolument besoin pour remettre les dates de création sur mes photos et vidéos que je viens de transférer ! Mais comment on procède pour mettre ce bloc de code ? Est il possible de me faire un tuto? Je me débrouille sur L’ordi mais Pas au point de faire des trucs comme ça !
J’ai vu plus haut les indications données en téléchargeant exiftool, ce que j’ai fait, mais je savais pas quoi faire pour « installer le package » et j’ai essayé l’éditeur de script et copiant les codes, j’enregistre le script en haut mais ça ne fait rien...! J’aurais besoin d’accompagnement ! Ha ha !
 

Bonjour @zeltron54,​


Merci beaucoup pour le script, ça fait plaisir de voir des gens comme toi qui partagent et aident sans contrepartie.

Grâce à ton script mon problème de classement des photos par date dans le Finder est presque résolu.
Il me reste quelques photos pour lesquelles ton script ne modifie pas la date ce qui est normal car le EXIF est vide :
ce sont toutes les photos que l'on m'a partagé (WhatsApp ou autre).

Dans l'app Photos ces photos sont classé avec leur date de modification (la date ou je l'ai reçu par WhatsApp par exemple), as tu une solution pour récupérer cette même date suite à l'export depuis Photos même si elles ne contiennent pas d'information dans le EXIF. Peut être faut il modifier le EXIF directement dans l'app Photos avant l'export puis lancer ton script ? Ou peut être as tu une autre solution ?

Merci beaucoup pour ton aide
 

Bonjour @zeltron54,​


Merci beaucoup pour le script, ça fait plaisir de voir des gens comme toi qui partagent et aident sans contrepartie.

Grâce à ton script mon problème de classement des photos par date dans le Finder est presque résolu.
Il me reste quelques photos pour lesquelles ton script ne modifie pas la date ce qui est normal car le EXIF est vide :
ce sont toutes les photos que l'on m'a partagé (WhatsApp ou autre).

Dans l'app Photos ces photos sont classé avec leur date de modification (la date ou je l'ai reçu par WhatsApp par exemple), as tu une solution pour récupérer cette même date suite à l'export depuis Photos même si elles ne contiennent pas d'information dans le EXIF. Peut être faut il modifier le EXIF directement dans l'app Photos avant l'export puis lancer ton script ? Ou peut être as tu une autre solution ?

Merci beaucoup pour ton aide
 
Bonjour,

Pas sur d'avoir bien compris !

Pour savoir ce que l'on peut faire, il faudrait que tu exportes une de ces photo.
Ensuite tu ouvres le terminal qui se trouve dans --> applications-->Utilitaires.
Dans la fenêtre du terminal tu tapes Exiftool puis un espace et tu fais un glissé- déposé de ta photo, puis entrée.
et tu postes le résultat ici cela permettra de voir ce que contient le fichier et ce que l'on peut récupérer.
 
Bonjour,

Pas sur d'avoir bien compris !

Pour savoir ce que l'on peut faire, il faudrait que tu exportes une de ces photo.
Ensuite tu ouvres le terminal qui se trouve dans --> applications-->Utilitaires.
Dans la fenêtre du terminal tu tapes Exiftool puis un espace et tu fais un glissé- déposé de ta photo, puis entrée.
et tu postes le résultat ici cela permettra de voir ce que contient le fichier et ce que l'on peut récupérevoici le r
Voici en bas de ce post ce que me retourne le terminal. Mais je sais que en l'état on ne peut pas récupérer la bonne date.

Pour essayer d'être plus clair :

1 - J'exporte mes photos iCloud depuis l'app Photos sur un disque dur externe
2 - Dans le Finder la date de modification de mes photos est sur la date d'export :(
3 - Je lance ton script --> cela modifie la date d'export par la date de prise de vue :)

4 - Malheureusement, il me reste des photos que ton script ne modifie pas car elle n'ont pas d'info dans le EXIF --> ce sont toutes les photos que l'on ma envoyé via WhatsApp qui ne contiennent rien dans EXIF (exemple en bas de post)
L'app Photos classe ces photos grâce à leur date de modification qui correspond au jour ou je l'ai reçu sur WhatsApp.

Quand j'exporte ces photos sur mon DD la date de modification correspond à la date de l'export je n'ai donc plus la bonne date et elle ne se trouve pas dans les métadonnées de la photo.

Je pense donc qu'il faut faire une modification sur le EXIF avant l'export depuis iCloud pour qu'ensuite ton script prenne en compte ces photos. Penses tu que cela soit faisable ?

Merci BEAUCOUP @zeltron54

---
ExifTool Version Number : 12.12
File Name : fbd9e322-b929-44f8-a1be-af9cc73144cc.jpg
Directory : /Volumes/Elements/Photos/Vacances/2020 - Cévennes : Côte d'Azur
File Size : 149 KiB
File Modification Date/Time : 2020:12:07 20:54:48+01:00
File Access Date/Time : 2020:12:08 14:13:16+01:00
File Inode Change Date/Time : 2020:12:08 12:16:49+01:00
File Prmissions : rw-------
File Type : JPEG
File Type Extension : jpg
MIME Type : image/jpeg
JFIF Version : 1.01
Resolution Unit : None
X Resolution : 1
Y Resolution : 1
Image Width : 777
Image Height : 1600
Encoding Process : Progressive DCT, Huffman coding
Bits Per Sample : 8
Color Components : 3
Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2)
Image Size : 777x1600
Megapixels : 1.2
---
 
Malheureusement on ne peut pas changer quoi que ce soit directement dans l'appli photo à l'aide d'un script.

Dans l'appli photo tu peux ajuster le date (dans le menu image--> Ajuster le date) qui peut le faire sur une sélection.

Pour l'exemple ci-dessus la seule date que l'on peut récupérer est le : 7-12-2020 à 20h54
Je suppose que ce n'est pas ton souhait !

Et même le nom de la photo ne contient pas la date, Alors je ne vois ce que tu voudrais obtenir ?

Edit: J'ai un doute sur l'export, au lieu d'utiliser le menu exporter de l'appli photo, essai de simplement faire un glisser déposer de la photo depuis l'appli photo directement sur ton bureau et vérifie avec exiftool dans le terminal quelles sont les dates récupérées...
 
Dernière édition:
Malheureusement on ne peut pas changer quoi que ce soit directement dans l'appli photo à l'aide d'un script.

Dans l'appli photo tu peux ajuster le date (dans le menu image--> Ajuster le date) qui peut le faire sur une sélection.

Pour l'exemple ci-dessus la seule date que l'on peut récupérer est le : 7-12-2020 à 20h54
Je suppose que ce n'est pas ton souhait !

Et même le nom de la photo ne contient pas la date, Alors je ne vois ce que tu voudrais obtenir ?

Edit: J'ai un doute sur l'export, au lieu d'utiliser le menu exporter de l'appli photo, essai de simplement faire un glisser déposer de la photo depuis l'appli photo directement sur ton bureau et vérifie avec exiftool dans le terminal quelles sont les dates récupérées...
J'ai les mêmes informations dans le exif avec un glissé déposé.

La seule solution que je vois pour récupérer les dates de ces fichiers sans exif est d'exporter avec le format nom du moment :
Capture d’écran 2020-12-08 à 15.25.14.png

Cela me donne un export avec un dossier par date :
Capture d’écran 2020-12-08 à 15.26.57.png

Il faudrait ensuite modifier les dates des photos et vidéos à l'intérieur de chaque dossier par la date contenu en titre du dossier.
Puis exporter toutes les photos et vidéos vers un dossier unique.

Tu penses que c'est possible ?

Merci beaucoup
 
Pour me lancer dans l'écriture d'un script il faut:

Être sur que les noms de tous les dossiers se termine par la date aux format JJ mois AAAA
Être sur que tous les fichiers contenus dans ses dossiers n'aient pas de date réelle (afin de ne pas écraser une vrai date)

Toutes les photos d'un dossier auront alors le même date! mais pour l'heure mettre ??? (toutes à 00H00mn00S) ou ?

Et pourquoi les importer dans un dossier unique ?

Avec ces infos ... dès que j'aurais un peu de temps je m'y mettrais ! ;)
 
Après vérification, lors de l'export avec photo tous les nom de dossier se termine bien par la date.

Donc exporte toutes tes photos qui n'ont pas de dates, met tous les dossiers exportés dans un dossier.
Le script ci-dessous te demande de choisir le dossier, puis il met la date du dossier dans les exif de chaque fichier avec comme heure: 12h00mn00sec.

Je n'ai pas prévu le déplacement de ces fichiers. Si tu veux absolument les regrouper, tu fais signe et je modifierais le script pour faire cela.
Comme d'habitude (on sais jamais ... un bug) fais l'essai sur une sauvegarde.

Bloc de code:
-- crée date exif avec date du dossier export

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
           
            --Récupère la date du dossier
            set lesmois to {"janvier", "février", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre", "décembre"}
            set xx to un_dossier as string
            set nb to count word of xx
            set aaaa to last word of xx
            set mois to word (nb - 1) of xx
            repeat with i from 1 to count of lesmois
                if item i of lesmois is mois then
                    set lenum to i
                end if
            end repeat
            set mmm to "0" & lenum as string
            set mm to text -1 thru -2 of mmm
            set jj to word (nb - 2) of xx
            set jjj to "0" & jj as string
            set jj to text -1 thru -2 of jjj
            -- met date en forme pour exif AAAAMMJJHHMN.SS
            set ladate to aaaa & mm & jj & "1200.00"
           
            set chaque_fichier to chaque_fichier as string
           
            set commande to "/usr/local/bin/exiftool -datetimeoriginal=" & ladate & " " & quoted form of POSIX path of chaque_fichier
            do shell script commande
            do shell script "touch -t " & ladate & " " & quoted form of POSIX path of chaque_fichier
            do shell script "rm " & quoted form of POSIX path of (chaque_fichier & "_original")
           
        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
 
Dernière édition:
Bonsoir,

Tant que j'y suis, je te met une 2ième version qui te demande, en plus, de choisir le fichier cible pour accueillir les fichiers traités comme tu l'as souhaité.
Tu pourras utiliser la version qui te convient.

Dis moi si ça te va !

Bloc de code:
-- crée date exif avec date du dossier export

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

on inspecter(un_dossier, cible)
    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
           
            --Récupère la date du dossier
            set lesmois to {"janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"}
            set xx to un_dossier as string
            set nb to count word of xx
            set aaaa to last word of xx
            set mois to word (nb - 1) of xx
            repeat with i from 1 to count of lesmois
                if item i of lesmois is mois then
                    set lenum to i
                end if
            end repeat
            set mmm to "0" & lenum as string
            set mm to text -1 thru -2 of mmm
            set jj to word (nb - 2) of xx
            set jjj to "0" & jj as string
            set jj to text -1 thru -2 of jjj
           
            -- met date en forme pour exif AAAAMMJJHHMN.SS
            set ladate to aaaa & mm & jj & "1200.00"
           
            set chaque_fichier to chaque_fichier as string
           
            set commande to "/usr/local/bin/exiftool -datetimeoriginal=" & ladate & " " & quoted form of POSIX path of chaque_fichier
            do shell script commande
            do shell script "touch -t " & ladate & " " & quoted form of POSIX path of chaque_fichier
            do shell script "rm " & quoted form of POSIX path of (chaque_fichier & "_original")
            move chaque_fichier to cible
        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, cible)
        end repeat
    end tell
   
end inspecter
tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Dernière édition: