Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

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. smile.gif

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 smile.gif

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 smile.gif

É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... cool.gif

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...
wink.gif

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 !! tongue.gif , 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 ! rolleyes.gif

Écrit par : Zeltron54 21 Apr 2018, 10:23

beaucoup de questions !

J'ai pas tout compris sad.gif

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 biggrin.gif

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 ! cool.gif 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 ! cool.gif 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. smile.gif

É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. huh.gif

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 laugh.gif

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... huh.gif 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 ! huh.gif

Écrit par : MacMame 22 Apr 2018, 20:48

ZELTRON.

Merci, je vais tester çà dès demain.. ! biggrin.gif

É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... huh.gif 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 smile.gif (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 smile.gif (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)