Version imprimable du sujet
Forums MacBidouille _ Technologies Apple _ Trier des photos avec Applescript
Écrit par : MacMame 20 Apr 2018, 10:15
Bonjour,
Je possède un dossier images/ dans lequelle il y à des des sous dossier sur plus de 10 niveaux, dans presque chaque sous dossier, il y à des photos; je souhaiterais développer un applescript qui me scan le dossier image (en recursive donc) et qui affecte par exemple un tag vert pour les photos portrait et un tag rouge pour les photos paysage.
Vous pensez que c'est possible ? tout en gardant bien sur les sous-sous dossier à leurs place.
Merci pour votre aide.
Écrit par : baron 20 Apr 2018, 11:32
Editus moderatus : coquille corrigée dans le titre (tirer –> trier).
Écrit par : yponomeute 20 Apr 2018, 11:35
Pas besoin de faire un script il faut juste utiliser la fonction de recherche du Finder qui permet de sélectionner les fichiers par orientation et restreindre la recherche à ton dossier images.
Ensuite il suffit de sélectionner la totalité des fichiers trouvés pour une orientation et y appliquer un tag couleur.
Pour l'orientation 0 = paysage, 1 = portrait.
[attachment=56892:Capture_...12.34.35.png]
Écrit par : Zeltron54 20 Apr 2018, 13:23
Bonjour,
Le solution de "yponomeute" est relativement simple et universelle.
Je te mets un petit applescript qui te permettra de faire ce que tu veux. Tu auras le choix de la méthode !
Il te faudra adapter la ligne : "set extension_a_traiter to {"jpg", "pdf", " png"}" qui liste les extensions que le script devra traiter. j'ai mis jpg, pdf, png et tu pourras ajouter celles qui t'interressent.
Code
tell application "Finder"
set cheminsource to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à tagger"
my inspecter(cheminsource)
end tell
on inspecter(source)
tell application "Finder"
-- traitement des fichiers :
set les_fichiers to files of source
repeat with chaque_fichier in les_fichiers
-- traitement d'un fichier
tell application "Finder"
set lefichier to chaque_fichier
set extension_a_traiter to {"jpg", "pdf", " png"} -- Liste des extensions à traiter
set nom to name of chaque_fichier
set extens to document file nom in source --recupere l extension du fichier
set lextension to name extension of extens
if lextension is in extension_a_traiter then
tell application "Image Events"
-- close images --This line is not always necessary, but helps keep things clean.
set b to open (lefichier as alias)
set {wid, hit} to b's dimensions
close b
end tell
if wid < hit then
set label index of lefichier to 6
else
set label index of lefichier to 2
end if
end if
end tell
end repeat
-- traitement des dossiers :
set les_dossiers to folders of source
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
Écrit par : MacMame 20 Apr 2018, 13:36
Merci yponomeute
Oui , j'ai vue çà sur le tare, en effet, ont peux même choisir le canal alpha, très pratique pour les photos "détouré"
Merci Zeltron54, pour ton script, il pourrait être utile, pour lancer par exemple un droplet photoshop dédié aux photos portrait et paysage...
Mais, la il faut toucher sa bille en apple script.
merci
Écrit par : MacMame 20 Apr 2018, 13:52
Alors ZELTRON, voici un script que j'avais récupéré d'une experte en apple script
Il permettait d’exécuter un droplet (DROPLET-MEGACOOL) qui est défini en 2 version , en version paysage et en version portrait: (selon l'orientation de la photo ont execute un DROPLET adapté)
Code
--PORTRAIT et PAYSAGE DEBUT
on action7(tFiles)
script ob -- seulement les actions Photoshop
on PSD_process(this_path)
set tCollection to "photos-paysage" --****+
tell application "Adobe Photoshop CC 2015.5"
open alias this_path showing dialogs never
tell the current document
if width < height then set tCollection to "photos-portrait" -- format Portrait--****+
do action "DROPLET-MEGACOOL" from tCollection --****
close saving no
end tell
end tell
end PSD_process
end script
end action7
-- PORTRAIT et PAYSAGE FIN
Pense tu que l'ont puisse l'intégrer à ton script ?
L'idée est simple, je défini un dossier "PHOTOS-A-RETOUCHER" , j'y dépose les dossiers, sous dossiers qui comporte des images.
Le script s’exécute donc, dès qu'il détecte les photos.
1/ Selon l'orientation des photos (portrait ou paysage), il envois un droplet photoshop "photos-paysage / DROPLET-MEGACOOL / " et "photos-portrait / DROPLET-MEGACOOL / "
Il sauve les photos sur elle même... car les photos doivent rester à leurs emplacement d'origine...
C'est possible ?
bon dans mes rêves
Écrit par : Zeltron54 20 Apr 2018, 14:24
Je connais mal les actions photoshop et je ne possède pas la version cc 2015.
Ajoutes l'extension "psd" à mon script et les fichiers photoshop seront également tagger en vert ou rouge selon leurs orientation.
Écrit par : MacMame 20 Apr 2018, 14:42
Je me suis mal exprimé, ce n'est pas cela.
En fait une fois que les photos sont trié, je dois opérer des modification via photoshop, c'est à dire que sur les photos paysage, je dois effectuer un travail infographique et sur une photo portrait, idem.
donc en fait, une fois que les photos son tagué, rouge pour les portraits et vert pour les paysages, serais t'il possible de créer une suite....
Faire un apple script qui prend les image tagué rouge et lance un script "portrait", et pour les tag vert, execute un script paysage..
C'est cette logique la que je cherche à faire.... car , je l'est fait manuellement, je classe par tag et j'envois tous ans un droplet mais vue la quantité de photos à traiter, photoshop est sur les rotules...je pense que c'est du fait qu'il y à beacous de sous-dossier et je ne peux pas perdre l'organisation... alors que via un apple script, cela ce passe bien... (c'est plus léger...)
Bon, sinon, pas grave je ferais çà à la main...
en fait comment faire pour qu'en fonction de la couleur du tag ont créer une action ?
Écrit par : Zeltron54 20 Apr 2018, 14:56
Ok,
Je dois m'absenter...
je regarde ça à mon retour
Écrit par : MacMame 20 Apr 2018, 14:57
Bon j'ai repris mon ancien script, car il est capable de définir l'orientation des photos (if width < height ), donc pas forcement besoin de tager, le hic, c'est que depuis que je tourne sous Elcaptain, ce script ne fonctionne plus... de plus j'ai des doutes sur l'ensemble des syntaxes, je suis nul en apple script
Code
property ajout : {}
property sous_dossiers : {}
property masterFolder : ""
property dossier_a_traiter : ""
on idle
set dossier_a_traiter to "/Volumes/MONDISK/mesphotos" --****
tell my rechercheFichiers(dossier_a_traiter) to if it is not "" then my action7(it) -- si des éléments sont trouvés, execute la fonction action7
on action7(tFiles)
script ob -- seulement les actions Photoshop
on PSD_process(this_path)
set tCollection to "images-paysage" --****+
tell application "Adobe Photoshop CC 2015.5"
open alias this_path showing dialogs never
tell the current document
if width < height then set tCollection to "images-portrait" -- format Portrait--****+
do action "MINI-FOND-NEUTRE" from tCollection --****
do action "MED" from tCollection --****
do action "MAXI" from tCollection --****
do action "LST" from tCollection --****
close saving no
end tell
end tell
end PSD_process
end script
end action7
Si je fait play dans apple script j'ai:
Erreur de syntaxe:
Code
" end " prévus mais "on" trouvés
Il manque quelques chose ?
Écrit par : teddy7545 20 Apr 2018, 15:23
Bonjour,
Et si tu ajoutes un end juste avant la ligne "on action7(tFiles)" pour fermer le premier bloc On ?
Ca donne quoi ?
Teddy
Écrit par : MacMame 20 Apr 2018, 16:14
Tu a raison TEDDY, je suis nul ! c'est corrigé
Je n'est donc plus de message d'erreur, par contre, j'ai essayé de re-bidouiller mon ancien script, comme ci-dessous, mais rien ne bouge.... je pense que c'est le code en premier qui n'est pas bon (rechercheFichier), le code pour "écouter" le dossier source, il n'est pas adapté.... j'ai essayé d'adapter le code de ZELTRON mais il ne reconnait pas la variable Inspecter.
voici mon code remis à jours:
Je me demande même si il est capable de scanner les dossiers en recursive, car je possède pas mal de sous-sous-sous-dossier.
Code
property ajout : {}
property sous_dossiers : {}
property masterFolder : ""
property dossier_a_traiter : ""
on rechercheFichiers(d) -- recherche fichiers et dossiers
set tFiles to do shell script "/usr/bin/find " & (quoted form of d) & " -maxdepth 10 -mindepth 1 \\! -name '.*' \\! -name 'tempo'"
if tFiles is not "" then return paragraphs of tFiles
return ""
end rechercheFichiers
on idle
set dossier_a_traiter to "/Volumes/PHOTOS" --****
tell my rechercheFichiers(dossier_a_traiter) to if it is not "" then my action7(it) -- si des éléments sont trouvés, execute la fonction action7
end idle
on action7(tFiles)
script ob -- seulement les actions Photoshop
on PSD_process(this_path)
set tCollection to "photos-paysage" --****+
tell application "Adobe Photoshop CC 2015.5"
open alias this_path showing dialogs never
tell the current document
if width < height then set tCollection to "photos-portrait" -- format Portrait--****+
do action "REDIM" from tCollection --****
close saving no
end tell
end tell
end PSD_process
end script
end action7
Écrit par : teddy7545 20 Apr 2018, 18:14
Bonsoir
Citation
Je me demande même si il est capable de scanner les dossiers en recursive, car je possède pas mal de sous-sous-sous-dossier.
Oui il est capable mais tu as limité la profondeur de la recherche à 10 niveaux, alors s'il y en a plus dans l'état ils ne seront pas "scanné"
Si tu souhaites qu'il ailles dans tous les sous dossiers, tu peux soit augmenter -maxdepth 10 avec une valeur supérieur 50 ... ou plus....
Ou alors plus simplement enlever cet argument de la commande et il fera automatiquement tous les niveaux.
Ton filtre recherche tous les fichiers ou dossier
qui ne commencent pas par un point et
qui ne contiennent pas tempo ....
Ce filtre ne renvois donc pas nécessairement des photos.
Es tu sur de ta recherche ...
Si tu as pas de dossier ou de fichier tempo il va donc renvoyer tous les fichiers et dossiers non cachés.
Tu ne peux pas lancer ce script avec le bouton "run" depuis l'éditeur de script.
Aucune fonction ne peut démarrer ainsi dans ce script.
Pour tester avec l'éditeur de script, tu peux ajouter une ligne à la fin
Citation
idle()
De cette façon il devrait démarrer (en forçant idle à démarrer lors du lancement du script).
Enfin pour ne pas risquer de polluer tes fichiers par un traitement inadéquat, je te recommande dans un premier temps de remplacer ta fonction action7 par simplement
Code
on action7(tFiles)
return tFiles
end action7
De cette façon il ne fera aucun traitement mais te renverra juste la liste des fichiers qu'il considère à traiter.
Écrit par : MacMame 20 Apr 2018, 18:33
Ok j'ai pas tout compris mais je vais déjà essayer d'augmenter max deph.
Mais je pense que cela n'y changera rien, en fait ce partie du script ne convient plus, car il y est mention d'un dossier "tempo" qui n'existe plus et qui ne sert rien dans ce cas précis.
Je veux juste tous scanner et dès qu'il trouve une image, la traiter c'est tout...
Écrit par : teddy7545 20 Apr 2018, 19:18
Essai avec ce code, à supposer que tu as bien un disque monté qui s'appelle PHOTOS (sinon à adapter au nom de ton volume)
Ici il ne trouve pas toutes les photos mais seulement le jpg ...
Tu auras donc un résultat seulement si c'est la bonne extension.
Si tu as plusieurs types d'extensions dans tes photos dis moi lesquelles
Code
property ajout : {}
property sous_dossiers : {}
property masterFolder : ""
property dossier_a_traiter : ""
on rechercheFichiers(d) -- recherche fichiers et dossiers
set tFiles to do shell script "/usr/bin/find " & (quoted form of d) & " \\! -name '.*' -name '*.jpg' "
if tFiles is not "" then return paragraphs of tFiles
return "Aucun fichier trouvé"
end rechercheFichiers
on idle
set dossier_a_traiter to "/Volumes/PHOTOS" --****
tell my rechercheFichiers(dossier_a_traiter) to if it is not "" then my action7(it) -- si des éléments sont trouvés, execute la fonction action7
end idle
on action7(tFiles)
return tFiles -- pas de traitement mais juste la liste des fichiers à traiter
end action7
idle {} -- uniquement en test pour que le script se lance depuis l'éditeur.
Écrit par : MacMame 20 Apr 2018, 20:16
et donc ce code je le met ou ?
car c'est le code qui trie les photos portrait / paysage et lance le droplet adéquat:
Code
on action7(tFiles)
script ob -- seulement les actions Photoshop
on PSD_process(this_path)
set tCollection to "photos-paysage" --****+
tell application "Adobe Photoshop CC 2015.5"
open alias this_path showing dialogs never
tell the current document
if width < height then set tCollection to "photos-portrait" -- format Portrait--****+
do action "REDIM" from tCollection --****
close saving no
end tell
end tell
end PSD_process
end script
end action7
Écrit par : Zeltron54 20 Apr 2018, 20:23
Bonsoir,
Je vois que tu as trouvé de l'aide avec "teddy7545"
Quelques explications sur mon script te permettra de l'adapter à tes besoins
le script te demande de choisir le dossier à traiter, il prend en compte la totalité des sous dossiers.
il regarde si l'extension du fichier trouvé est dans la liste défini dans cette ligne :"set extension_a_traiter to {"jpg", "pdf", " png"} -- Liste des extensions à traiter" tu peux y mettre les extensions qui t'intéressent notamment "psd".
si l'extension est dans la liste, il récupère les dimensions de l'image avec ces lignes :
tell application "Image Events"
set b to open (lefichier as alias)
set {wid, hit} to b's dimensions
close b
end tel
puis défini si c'est portrait ou paysage. avec cette ligne : " if wid < hit"
si portrait il exécute la ligne : "set label index of lefichier to 6" qui met le label vert
sinon il exécute le ligne : " "set label index of lefichier to 2" qui met le label rouge
Il te suffit donc de remplacer ces ligne par l'action photoshop qui doit être exécuter dans chaque cas
Tu parlais de la variable inspecter: c'est la variable du nom de la routine (qui fait le traitement) qui est appelée après avoir choisi le dossier. Appel de la routine avec "my inspecter" et le début de routine avec "on inspecter"
Écrit par : MacMame 20 Apr 2018, 20:54
Ok merci mais je suis pas doué dans ce langage, j'ai donc fait ceci:
Mais çà donne rien... rien ne ce passe, ni message d'erreur, rien...
Code
property ajout : {}
property sous_dossiers : {}
property masterFolder : ""
property dossier_a_traiter : ""
on rechercheFichiers(d) -- recherche fichiers et dossiers
set tFiles to do shell script "/usr/bin/find " & (quoted form of d) & " \\! -name '.*' -name '*.jpg' "
if tFiles is not "" then return paragraphs of tFiles
return "Aucun fichier trouvé"
end rechercheFichiers
on idle
set dossier_a_traiter to "/Volumes/PHOTOS" --****
tell my rechercheFichiers(dossier_a_traiter) to if it is not "" then my action7(it) -- si des éléments sont trouvés, execute la fonction action7
end idle
on action7(tFiles)
script ob -- seulement les actions Photoshop
on PSD_process(this_path)
set tCollection to "photos-paysage" --****+
tell application "Adobe Photoshop CC 2015.5"
open alias this_path showing dialogs never
tell the current document
if width < height then set tCollection to "photos-portrait" -- format Portrait--****+
do action "REDIM" from tCollection --****
close saving no
end tell
end tell
end PSD_process
end script
end action7
idle {} -- uniquement en test pour que le script se lance depuis l'éditeur.
Écrit par : teddy7545 20 Apr 2018, 21:01
Pour comprendre ton problème essai de décomposer ton problème.
Pour le moment il s'agit de comprendre si ton script trouve bien une liste de fichier.
Et quand cette partie fonctionnera (chez moi ça fonctionne) on pourra passer à la seconde partie avec action7 dans photoshop
As tu essayé le script du message 15 sans rien changer ?
Ou le colles tu ? dans l'éditeur de script Applescript ?
As tu obtenu un résultat ?
As tu effectivement un Volume (un disque dur ou une clé) qui se nomme PHOTO ??
Quelles extensions ont tes photos ?
Écrit par : MacMame 20 Apr 2018, 21:17
Alors oui j'ai exécuté dans applescript le script de ton message 15, mais j'ai cette erreur:
En faisant play dans l'éditeur applescript, j'ai:
Code
Erreur de syntaxe
fin de ligne prévus mais jeton inconnu trouvé.
Mon dossier est bien monté, c'est ok de ce coté la.
Mes fichiers sont JPG et PNG, c'est tout.
Écrit par : teddy7545 20 Apr 2018, 21:21
Dans la ligne return tFiles. enlève juste le point en fin de ligne
Écrit par : MacMame 20 Apr 2018, 21:37
Ok, je n'est plus de message d'erreur mais j'ai rien .... rien ne s'affiche, rien ne se passe.
Écrit par : Zeltron54 21 Apr 2018, 08:01
Si j'ai bien compris, d'après ton message #18, tu veux donc exécuter dans la version "Adobe Photoshop CC 2015.5" un script "REDIM" qui est dans la collection (suivant le cas) "photos-paysage" ou "photos-portrait"
Donc le script ci-dessous te demande de choisir le dossier à traiter et exécute le script.
Attention le nom de la version photoshop, des collections et des scripts doit être exact y compris majuscules, minuscules.
Code
tell application "Finder"
set cheminsource to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à traiter"
my inspecter(cheminsource)
end tell
on inspecter(source)
tell application "Finder"
-- traitement des fichiers :
set les_fichiers to files of source
repeat with chaque_fichier in les_fichiers
-- traitement d'un fichier
tell application "Finder"
set lefichier to chaque_fichier
set extension_a_traiter to {"jpg", " png", "psd"} -- Liste des extensions à traiter
set nom to name of chaque_fichier
set extens to document file nom in source --recupere l extension du fichier
set lextension to name extension of extens
if lextension is in extension_a_traiter then
tell application "Image Events"
set b to open (lefichier as alias)
set {wid, hit} to b's dimensions
close b
end tell
set monfichier to lefichier as string
if wid < hit then
set tCollection to "photos-portrait"
tell application "Adobe Photoshop CC 2015.5" -- à corriger avec ta version
open file monfichier
do action "REDIM" from tCollection -- le script sauvegarde et ferme l'image après traitement
close saving no
end tell
else
set tCollection to "photos-paysage"
tell application "Adobe Photoshop CC 2015.5" -- à corriger avec ta version
open file monfichier
do action "REDIM" from tCollection -- le script sauvegarde et ferme l'image après traitement
close saving no
end tell
end if
end if
end tell
end repeat
-- traitement des dossiers :
set les_dossiers to folders of source
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
Écrit par : MacMame 21 Apr 2018, 10:12
Ah super merci ZELTRON !! , t'est un expert, merci aussi à TEDDY pour avoir pris de son temps hier !
Donc ZELTRON, c'est top, donc si je veux automatiser le dossier , donc surveiller le dossier je fait comment ? (pour éviter la boite de dialogue)
j'ai repris mon exemple
Code
set cheminsource to "/Volumes/MONDISK/PHOTOS" --****
tell my inspecter(cheminsource) to if it is not "" then my action7(it)
Mais action7, n'est plus utile, de plus j'ai
Code
"il es impossible d'obtenir every file of "VOLUME/...."
Question, à la fin du traitement des images, est-ce qu'ont peu copier le dossier sur un autre dossier et envoyer un email ? ce serais top !
UN GRAND MERCI !
Écrit par : Zeltron54 21 Apr 2018, 10:23
beaucoup de questions !
J'ai pas tout compris
Citation
si je veux automatiser le dossier
C'est à dire ?
Citation
donc surveiller le dossier je fait comment ? (pour éviter la boite de dialogue)
si tu peux être plus concret! décrire ce que tu veux que ça fasse !
Action 7 n'est plus utile puisque j'ai mis son contenu dans mon script.
Citation
à la fin du traitement des images, est-ce qu'ont peu copier le dossier sur un autre dossier
Tu veux dupliquer le dossier de départ ? et ou (sur le bureau) ?
Citation
envoyer un email
Pourquoi pas on peut essayer ? il faut les éléments ... on verra pour ajouter ça lorsque tout le reste fonctionnera !
Écrit par : MacMame 21 Apr 2018, 11:00
Alors je vais détailler par étape, ce sera plus simple
ETAPE #1/ Je ne veux pas choisir le dossier source via la boite de dialogue au début, je veux juste définir un dossier dans le script, dès qu'ont y dépose des images, le script ce lance (c'est en fait ce que faisait mon ancien script), plus pratique pas besoins de lancer en fait le script. (dès que je dépose des images, il lance le script, je me rappel même avoir fait un temporisateur, pour attendre la fin des chargements des images....car le script avait tendance à ce lancer avant même la fin du chargement.... mais je ne me rappel plus du code qui fait çà... je vais le retrouver si tu veux...)
ETAPE #2/ Il traite les photos (il sauve sur elle même avec PSD)
ETAPE #3/ A la fin du processus, une fois les images modifié sur elle même, je voudrais copier le contenu du dossier "/Volumes/MONDISK/PHOTOS" (les photos qui ont été traité) dans un autre dossier "/Volumes/MONDISK/PHOTOS-TRAITE", voir mieux, le copier sur un serveur FTP.
ETAPE #4/ Au final dès que le transfert est fait en FTP, envoyer un email...
Voila, ce que je souhaitait faire à la base, mais n'étant que bidouilleur en apple script, j'ai du voir mes prétentions à la baisse.
Merci
Écrit par : Zeltron54 21 Apr 2018, 11:27
Pour l'étape 1 et 2
Il faut donc faire une action de dossier qui déclenche le script
Le script va donc traiter toutes les images déposées dans ce dossier
Etape 3 :
Copier, coller du dossier (PHOTOS) dans dossier (PHOTOS-TRAITE) ou un FTP, puis vider le dossier original (PHOTOS)--> corbeille
Etape 4:
Envoyer un email avec : mail ou outlook ou ??
Week-End oblige je regarde dés demain ou lundi ! pour essayer de faire ça !
Mais avant: Est ce que le script tel quel fonctionne chez toi et obtients-tu le résultats attendu dans le dossier ?
Écrit par : teddy7545 21 Apr 2018, 11:32
ETAPE #1/
Pour que ça fonctionne comme tu le souhaites il faut créer une application qui reste ouverte
C'est le rôle du statement d'AppleScript prévu à cette effet : "on idle".
Ce statement ne fonctionne qu'avec les applications dont la case "Rester en arrière plan" a été cochée. -> donc pas dans l'éditeur
La durée entre deux exécutions est fixée par "return xx" ou xx est un nombre entier de seconde(s).
Ce mode de fonctionnement te conviendrait t'il ?
Sinon il faudra utiliser les actions de dossier.
ETAPE #2/
La j'ai pas bien compris ce que tu voulais dire.
ETAPE #3/
Souhaites tu toujours que le traitement s'effectue en récursif dans tous les sous dossiers de /Volumes/MONDISK/PHOTOS?
Copier le répertoire oui c'est possible.
Le copier directement sur un serveur FTP ça doit être également faisable mais faut que je cherche un peu.
ETAPE #4/
Envoyer un email c'est tout à fait réalisable également.
Écrit par : MacMame 21 Apr 2018, 16:36
Citation (Zeltron54 @ 21 Apr 2018, 12:27)
Pour l'étape 1 et 2
Il faut donc faire une action de dossier qui déclenche le script
Le script va donc traiter toutes les images déposées dans ce dossier
Etape 3 :
Copier, coller du dossier (PHOTOS) dans dossier (PHOTOS-TRAITE) ou un FTP, puis vider le dossier original (PHOTOS)--> corbeille
Etape 4:
Envoyer un email avec : mail ou outlook ou ??
Week-End oblige je regarde dés demain ou lundi !
pour essayer de faire ça !
Mais avant: Est ce que le script tel quel fonctionne chez toi et obtients-tu le résultats attendu dans le dossier ?
DOSSIER:
- OK pour l'action de dossier (après le script ne doit pas démarrer avant que les photos soit chargé....)
- OUI il faut prévoir un dossier recursive
COPIE DES IMAGES:
OK pour la copie des photos dans (PHOTO-TRAITE) , les photos d'origine, ont peux les garder, juste les déplacer dans un dossier POUBELLE par ex. (comme çà j'ai une sauvegarde)
1/ Oui ton script fonctionne, il faut juste que je réalise les bons droplet PSD, (paysage et portrait)....
2/ Alors ma machine reste toujours allumé, donc pas de problème de ce coté la.
3/ Pour les emails, je sais pas, ont est obligé d'utiliser l'application mail ? sinon, oui j'utilise mail.
Voila.
Écrit par : teddy7545 21 Apr 2018, 16:47
Citation
DOSSIER:
- OK pour l'action de dossier (après le script ne doit pas démarrer avant que les photos soit chargé....)
- OUI il faut prévoir un dossier recursive
La il me semble que ca va poser problème.
Les actions de dossier ne répondent que dans le dossier défini mais pas dans ses sous dossiers (je viens de tester)
Comment les photos sont t'elles créées ?
Quel est le mode de classement dans les sous dossiers ?
Je vois quelques solutions possibles (il y en a sans doute beaucoup d'autres)
Soit on place toutes les photos dans le répertoire associé à une action en définissant un nom à la création des fichiers qui peut nous permettre des les déplacer automatiquement après traitement dans le bon sous répertoire.
Soit on utilise plutôt une fonction qui surveille le répertoire et ses sous dossiers à fréquence régulière (idle avec script en tâche de fond)
Pas instantané mais peut être pas gênant que le rafraîchissement ne se fasse que toutes les minutes ou toutes des 10 minutes.
Écrit par : MacMame 21 Apr 2018, 16:50
Citation (teddy7545 @ 21 Apr 2018, 12:32)
ETAPE #1/
Pour que ça fonctionne comme tu le souhaites il faut créer une application qui reste ouverte
C'est le rôle du statement d'AppleScript prévu à cette effet : "on idle".
Ce statement ne fonctionne qu'avec les applications dont la case "Rester en arrière plan" a été cochée. -> donc pas dans l'éditeur
La durée entre deux exécutions est fixée par "return xx" ou xx est un nombre entier de seconde(s).
Ce mode de fonctionnement te conviendrait t'il ?
Sinon il faudra utiliser les actions de dossier.
TEDDY,
Oui pour le statement, c'est çà, la machine reste allumé de toute façon, donc le script sera en tâche de fond.
Citation (teddy7545 @ 21 Apr 2018, 12:32)
ETAPE #2/
La j'ai pas bien compris ce que tu voulais dire.
Oui je parle du droplet, il traite les photos (photoshop)
Citation (teddy7545 @ 21 Apr 2018, 12:32)
ETAPE #3/
Souhaites tu toujours que le traitement s'effectue en récursif dans tous les sous dossiers de /Volumes/MONDISK/PHOTOS?
Copier le répertoire oui c'est possible.
Le copier directement sur un serveur FTP ça doit être également faisable mais faut que je cherche un peu.
Oui cela reste recursive et j'ai trouvé ce sujet pour le transfert FTP:
http://forum.macbidouille.com/index.php?showtopic=352770
Citation (teddy7545 @ 21 Apr 2018, 12:32)
ETAPE #4/
Envoyer un email c'est tout à fait réalisable également.
Merci
Écrit par : Zeltron54 22 Apr 2018, 07:55
Bonjour,
Voilà le script qui fait le job, et à la fin déplace tous les fichiers dans un dossier "PHOTO_TRAITEES"
La préparation:
1- créer un dossier vide Nom : par exemple "Photo_a_traiter"
2- créer un dossier sur le bureau qui recevra le résultat après traitement : nom du dossier "PHOTO_TRAITEES"
3- Enregistrer le script dans Utilisateurs —> « le nom d’utilisateurs » —> Bibliothèque —> Scripts —> Folder Action Scripts Si les dossiers « scripts » et ou « Folder Action Scripts » n’existent pas il faut les créer.
4- Faire un clic droit sur le dossier "Photo_a_traiter" —> service —> Configuration des actions de dossier… - Dans le fenêtre qui s’ouvre (choisir le script à joindre:) sélectionner le script, cocher la case "Activer les actions de dossier"
Tous dossiers et ou fichiers qui seront déposer sur le dossier "Photo_a_traiter" sera traité par tes scripts photoshop puis seront déplacés dans le dossier "PHOTO_TRAITEES"
Le dossier "Photo_a_traiter" sera donc toujours vide en attente.
Si tout fonctionne correctement on regardera pour ajouter l'envoi d'un mail.
Code
on adding folder items to Mon_Dossier after receiving Liste_Fichiers
my inspecter(Mon_Dossier)
tell application "Finder"
set destination to Mon_Dossier & ":PHOTO_TRAITEES" as string
set theFiles to entire contents of Mon_Dossier
move theFiles to destination
(display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
end adding folder items to
on inspecter(source)
tell application "Finder"
-- traitement des fichiers :
set les_fichiers to files of source
repeat with chaque_fichier in les_fichiers
-- traitement d'un fichier
tell application "Finder"
set lefichier to chaque_fichier
set extension_a_traiter to {"jpg", "png", "psd"} -- Liste des extensions à traiter
set nom to name of chaque_fichier
set extens to document file nom in source --recupere l extension du fichier
set lextension to name extension of extens
if lextension is in extension_a_traiter then
tell application "Image Events"
set b to open (lefichier as alias)
set {wid, hit} to b's dimensions
close b
end tell
set monfichier to lefichier as string
if wid < hit then
set tCollection to "photos-portrait"
tell application "Adobe Photoshop CC 2015.5" -- à corriger avec ta version
open file monfichier
do action "REDIM" from tCollection -- le script sauvegarde et ferme l'image après traitement
close saving no
end tell
else
set tCollection to "photos-paysage"
tell application "Adobe Photoshop CC 2015.5" -- à corriger avec ta version
open file monfichier
do action "REDIM" from tCollection -- le script sauvegarde et ferme l'image après traitement
close saving no
end tell
end if
end if
end tell
end repeat
-- traitement des dossiers :
set les_dossiers to folders of source
repeat with chaque_dossier in les_dossiers
-- traitement d'un dossier
my inspecter(chaque_dossier)
end repeat
end tell
end inspecter
Écrit par : Jaypee 22 Apr 2018, 15:42
Juste pour rappel. macOS embarque un "Scriptable Image Processing System"
CODE
$ sips --help
sips 10.4.4 - scriptable image processing system.
This tool is used to query or modify raster image files and ColorSync ICC profiles.
Its functionality can also be used through the "Image Events" AppleScript suite.
Usages:
sips [-h, --help]
sips [-H, --helpProperties]
sips [image-query-functions] imagefile ...
sips [profile-query-functions] profile ...
sips [image modification functions] imagefile ...
[--out result-file-or-dir]
sips [profile modification functions] profile ...
[--out result-file-or-dir]
Profile query functions:
-g, --getProperty key
-X, --extractTag tag tagFile
-v, --verify
Image query functions:
-g, --getProperty key
-x, --extractProfile profile
Profile modification functions:
-s, --setProperty key value
-d, --deleteProperty key
--deleteTag tag
--copyTag srcTag dstTag
--loadTag tag tagFile
--repair
Image modification functions:
-s, --setProperty key value
-d, --deleteProperty key
-e, --embedProfile profile
-E, --embedProfileIfNone profile
-m, --matchTo profile
-M, --matchToWithIntent profile intent
--deleteColorManagementProperties
-r, --rotate degreesCW
-f, --flip horizontal|vertical
-c, --cropToHeightWidth pixelsH pixelsW
-p, --padToHeightWidth pixelsH pixelsW
--padColor hexcolor
-z, --resampleHeightWidth pixelsH pixelsW
--resampleWidth pixelsW
--resampleHeight pixelsH
-Z, --resampleHeightWidthMax pixelsWH
-i, --addIcon
-o, --optimizeColorForSharing
Écrit par : MacMame 22 Apr 2018, 20:28
TEDDY:
En fait j'ai des obligations.
l'Arborescence du dossier principal et des sous dossier doit rester intact
ex:
0/7/6/5/4/3/mon-image-1.jpg
0/7/6/5/6/mon-image-2.jpg
0/6/7/8/mon-image-3.jpg
etc...
En fait je dois prendre chaque photo, les modifier (selon leurs type, paysage ou portrait) et les enregistré sur elle même sans les déplacer, si je les déplace, c'est la catastrophe.
Par contre j'ai du coup un autre besoin, car j'ai utilisé le script de ZELTRON mais comme il n'est pas encore "intelligent" (il ne sais pas différencier les paysages des portraits) j'ai du travailler manuellement, bref, certaines photos n'ont pas été correctement retravaillé. (elle sont passé à la trappe)
Donc, la je dois traquer les photos qui n'ont pas la définition 800x800 pixel, je sais qu'ont peux effectuer une recherche par résolution vertical et horizontal avec macosx, mais je n'y arrive pas, il ne trouve rien... est-ce compliqué de faire un script qui tagerais en violet les photos qui n'ont pas la résolution 800 x 800 pixel ?
Désolé, mais le fait de devoir travailler sur plus de 4000 photos éparpillé des des milliers de sous-dossier me complique la vie
Merci
Ceci ne fonctionne pas....
RE: JE me répond à moi même...
Je comprend pourquoi le module de recherche ne fonctionnais pas, le dossier des image est sur un disque ubuntu en partage, je pense que les infos de résolutions, ne sont pas retranscrit sur ce disque... il faudrait générer des DS Store macosx, je ne sais pas si ont peux forcer çà...
Écrit par : Zeltron54 22 Apr 2018, 20:44
Citation
l'Arborescence du dossier principal et des sous dossier doit rester intact
Sur le dossier tu glisses tes dossiers et ou fichiers à traiter en tenant la touche alt enfoncé. tes originaux ne seront pas touchés et normalement dans le dossier PHOTO_TRAITEES tu retrouves toutes ton Arborescence originale.
Code
e script de ZELTRON mais comme il n'est pas encore "intelligent" (il ne sais pas différencier les paysages des portraits)
Le script prend bien en compte les format paysage ou portrait dans cette partie : les variables Wid et hit contiennent les largeur et hauteur de la photo en pixels
if wid < hit then
et tCollection to "photos-portrait"
tell application "Adobe Photoshop CC 2015.5" -- à corriger avec ta version
open file monfichier
do action "REDIM" from tCollection -- le script sauvegarde et ferme l'image après traitement
close saving no
end tell
else
set tCollection to "photos-paysage"
tell application "Adobe Photoshop CC 2015.5" -- à corriger avec ta version
open file monfichier
do action "REDIM" from tCollection -- le script sauvegarde et ferme l'image après traitement
close saving no
end tell
end if
Il appelle le script photoshop REDIM soit de la collection ""photos-portrait" soit de la collection "photos-paysage".
Vérifies que tes scripts photoshop existent et travaille correctement.
Edit : je viens de voir un bug les lignes:
if wid < hit then
et tCollection to "photos-portrait"
tell application "Adobe Photoshop CC 2015.5" -- à corriger avec ta version
La deuxième ligne doit être : set tCollection to "photos-portrait"
avec un s au début (set...... et non et.....)
J'ai corrigé dans le script !
Écrit par : MacMame 22 Apr 2018, 20:48
ZELTRON.
Merci, je vais tester çà dès demain.. !
Écrit par : yponomeute 23 Apr 2018, 08:36
Citation (MacMame @ 22 Apr 2018, 21:28)
RE: JE me répond à moi même...
Je comprend pourquoi le module de recherche ne fonctionnais pas, le dossier des image est sur un disque ubuntu en partage, je pense que les infos de résolutions, ne sont pas retranscrit sur ce disque...
il faudrait générer des DS Store macosx, je ne sais pas si ont peux forcer çà...
Cela n'a rien à voir avec les fichiers .DS_store qui ne contiennent aucune information sur les fichiers. Si la recherche ne fonctionne pas c'est sans doute parce que le volume sur lequel se trouvent les images n'est pas indexé par spotlight.
Écrit par : trouspinette 24 Apr 2018, 22:39
https://www.noodlesoft.com/
5 min chrono.
Les règles Hazel
Détail d'une des règles
Résultat
Hazel va lire les MetaData des fichiers, voici la valeur pour les deux cas :
Code
sa@MacBookProSA: ttys003: 45 files 1168b $ mdls /HAZEL_IMAGES/01/02/03/LANDSCAPE.jpg | grep Orientation
kMDItemOrientation = 0
Mar 24 avr 2018 23:45:11 CEST
~
sa@MacBookProSA: ttys003: 45 files 1168b $ mdls /HAZEL_IMAGES/01/02/03/PORTRAIT.jpg | grep Orientation
kMDItemOrientation = 1
Écrit par : yponomeute 25 Apr 2018, 13:34
Citation (trouspinette @ 24 Apr 2018, 23:39)
https://www.noodlesoft.com/
5 min chrono.
J'avais songé à Hazel également, mais je n'ai pas pensé à aller voir dans "other" pour le choix des règles.
Merci trouspinette, du coup je trouve Hazel encore plus fantastique qu'avant
(un "must have" ce logiciel, vraiment)
Écrit par : trouspinette 25 Apr 2018, 22:28
Citation (yponomeute @ 25 Apr 2018, 14:34)
Merci trouspinette, du coup je trouve Hazel encore plus fantastique qu'avant
(un "must have" ce logiciel, vraiment)
Un article que j'avais rédigé :
http://macbidouille.com/news/2015/01/27/une-automatisation-redoutable-de-vos-dossiers-et-fichiers
Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)