Il semblerait que plus personne ne soit actif dans cette discussion. Si vous souhaitez reprendre la conversation, posez simplement une nouvelle question.

AppleScript & Photos : chemin d'une photo

Est-ce que quelqu'un saurait s'il est possible d'obtenir le chemin du fichier référencé d'une photo sélectionnée dans Photos avec AppleScript ? J'ai beau fouiller, je ne trouve pas de solution.

iMac, iOS 11.2.6

Publiée le 9 mars 2018 à 16h37

Répondre
Question marquée comme Meilleure réponse

Publiée le 9 mars 2018 à 19h57

À ma connaissance, on peut obtenir seulement le nom du fichier (filename), pas le chemin complet:

tell application "Photos"
set images_selectionnees to selection
if images_selectionnees is {} then
display dialog "Échec ! Aucune sélection."
else
set nom_fichier to filename of item 1 of images_selectionnees
display dialog "Réussite ! Le nom du fichier est " & nom_fichier & "."
end if
end tell

5 réponses
Question marquée comme Meilleure réponse

Le 9 mars 2018 à 19h57 en réponse à EnezHouad

À ma connaissance, on peut obtenir seulement le nom du fichier (filename), pas le chemin complet:

tell application "Photos"
set images_selectionnees to selection
if images_selectionnees is {} then
display dialog "Échec ! Aucune sélection."
else
set nom_fichier to filename of item 1 of images_selectionnees
display dialog "Réussite ! Le nom du fichier est " & nom_fichier & "."
end if
end tell

Le 9 mars 2018 à 21h01 en réponse à EnezHouad

Il y a éventuellement une astuce pour retrouver le chemin complet à l'aide de la commande shell «find», qui permet de chercher des fichiers. Supposons que le nom du fichier c'est «Esquimau1.png». On sait qu'il se trouve quelque part dans le dossier utilisateur ($HOME). On sait aussi que son chemin contient «.photoslibrary/Masters» (les photothèques contiennent un dossier «Masters» et leur extension est «.photoslibrary»). Dans le Terminal, on peut taper:

find $HOME -wholename "*.photoslibrary/Masters*/Esquimau1.png"

pour obtenir le chemin complet.


Donc la syntaxe générale c'est:

find $HOME -wholename "*.photoslibrary/Masters*/$NOM_FICHIER"


Pour transposer cette astuce shell dans AppleScript, il suffit d'utiliser «do shell script»:

tell application "Photos"
set images_selectionnees to selection
if images_selectionnees is {} then
display dialog "Échec ! Aucune sélection."
else
set nom_fichier to filename of item 1 of images_selectionnees
set chemin to do shell script "find $HOME -wholename \"*.photoslibrary/Masters*/" & nom_fichier & "\""
display dialog "Réussite ! Le chemin est " & chemin & "."
end if
end tell


Et voilà! On a le chemin complet.

Le 10 mars 2018 à 00h38 en réponse à EnezHouad

J'ai bien avancé grâce à Eskimau. 🙂

Si ça peut aider, voici mon code - un peu lourd peut-être mais que j'ai essayé de rendre clair. Il ne me reste plus qu'à ouvrir le fichier avec mon éditeur RAW, ça sera plus facile pour moi - j'ai eu un peu de mal avec les guillemets et les espaces dans le terminal 😉.

Je précise que je n'utilise pas la photothèque iCloud et que je ne copie pas mes photos dans la photothèques à l'importation (je préfère maîtriser mon rangement). Je range mes photos sur un disque externe nommé "PHOTO", les photos étant classées par années dans des dossiers du type "Photos 2018". La recherche est très rapide, donc le script me convient parfaitement.

À suivre…


tell application "Photos"


set n to count of selection

set dialogText to ""


if n = 0 then -- aucune photo sélectionnée

set dialogText to "Il faut sélectionner au moins une photo."


else if n > 1 then -- plusieurs photos sélectionnées

set dialogText to "Il ne faut sélectionner qu'une seule photo."


else -- OK, une seule photo sélectionnée

set thePictures to get the selection

copy item 1 of thePictures to thePicture


set nomFichierPhoto to filename of thePicture

set datePhoto to the date of thePicture

set anneePhoto to year of datePhoto as string

set rechChemin to "/Volumes/PHOTO/" & "\"" & "Photos " & anneePhoto & "\""

set findScript to "find " & rechChemin & " -name " & "\"" & nomFichierPhoto & "\""

set cheminFichierPhoto to do shell script findScript


set dialogText to "Chemin de la photo «" & nomFichierPhoto & "» :" & return & cheminFichierPhoto

end if


display dialog dialogText


end tell

AppleScript & Photos : chemin d'une photo

Bienvenue dans la Communauté d’assistance Apple
Un forum où les clients Apple s’entraident avec leurs produits. Faites vos premiers pas avec votre identifiant Apple.