IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Trier des photos Portraits et Paysages ?, Possible avec Apple Script ??
Options
MacMame
posté 7 Jul 2011, 16:55
Message #1


Adepte de Macbidouille
*

Groupe : Membres
Messages : 109
Inscrit : 11 Jan 2010
Membre no 148 488



Bonjour,


J'ai un dossier avec plus de 5000 photos à trier, je dois extraire les photos au format portrait dans un répertoire "portrait" et les photos "paysage" dans un répertoire "paysage", bref est-ce possible ?, il faudrait par exemple que le script puisse calculer si la hauteur et inférieur à la largeur de l'image = Paysage et si la hauteur et supérieur à la largeur = portrait.. cool.gif

Ah moin qu'il soit possible de faire cela sous Photoshop, mais rien n'y fait avec l'option adapter l'image....

Merci pour votre aide. rolleyes.gif
Go to the top of the page
 
+Quote Post
Guest_EricaL**_*
posté 7 Jul 2011, 20:12
Message #2





Guests






Bonjour,

Si je comprends bien, tu voudrais déplacer les photos d'un dossier quelconque dans un autre dossier (portraits ou paysages ) selon le format de la photo.

Voici un script qui prend (la largeur et la hauteur de l'image) dans les metadonnés "Spotlight").

Ce script ne déplacera aucun fichiers si la hauteur est null, c'est-à-dire que le fichier n'est pas indexé par "Spotlight" ou ce n'est pas une image.

Ici, dans les metadonnés "Spotlight", la hauteur est toujours avant la largeur, ça ne doit pas avoir changé avec les différentes versions de OSX
Code
set dossier_portrait to quoted form of "déposerLeDossierIci"
set dossier_paysage to quoted form of "déposerLeDossierIci"
set dossier_source to quoted form of POSIX path of (choose folder with prompt "Sélectionner le dossier des photos à trier (portraits et paysages).")

do shell script "cd " & dossier_source & " && for tFile in *;do if [ -f \"$tFile\" ];then
  r=$(/usr/bin/mdls -name kMDItemPixelWidth -name kMDItemPixelHeight \"$tFile\" | /usr/bin/awk ' /kMDItem/ { print $NF }' ORS=\" \")
  set -- $r
  if [ \"$1\" != \"(null)\" ]; then
    if [[ $2 -gt $1 ]]; then
    /bin/mv  \"$tFile\"  " & dossier_paysage & "
    else
    /bin/mv  \"$tFile\"  " & dossier_portrait & "
    fi
  fi
fi; done"



Si le volume du dossier des photos n’est pas indexé par "Spotlight".
Remplace le do shell script par ceci.
Code
do shell script "cd " & dossier_source & " && for tFile in *;do if [ -f \"$tFile\" ];then
  r=$(/usr/bin/sips -g pixelWidth -g pixelHeight \"$tFile\" | /usr/bin/awk ' /pixel/ { print $NF }' ORS=\" \")
  if [ \"$r\" != \"\" ]; then
    set -- $r
    if [[ $1 -gt $2 ]]; then
    /bin/mv  \"$tFile\"  " & dossier_paysage & "
    else
    /bin/mv  \"$tFile\"  " & dossier_portrait & "
    fi
  fi
fi; done"


Dans le script supprimme le texte déposerLeDossierIci, glisse/dépose le dossier de destination entre les ""
Go to the top of the page
 
+Quote Post
MacMame
posté 7 Jul 2011, 21:39
Message #3


Adepte de Macbidouille
*

Groupe : Membres
Messages : 109
Inscrit : 11 Jan 2010
Membre no 148 488



Merci EricaL, biggrin.gif

Oui c'est çà !!!

Dans les grandes ligne , cela fonctionne, j'ai testé la version non spotligh, par contre comment faire pour mettre en route ce script quand j'ajoute mes images dans un répertoire ? une action de dossier en sommes... biggrin.gif si possible même si je laisse des dossiers plein d'images, ce dossier et donc traitée et déplacé.... je sais pas si je suis très clair... dry.gif

Merci encore ! biggrin.gif

Ce message a été modifié par MacMame - 7 Jul 2011, 21:42.
Go to the top of the page
 
+Quote Post
Guest_EricaL**_*
posté 8 Jul 2011, 01:32
Message #4





Guests






Bonjour,

Citation (MacMame @ 7 Jul 2011, 16:39) *
ans les grandes ligne , cela fonctionne, j'ai testé la version non spotligh, par contre comment faire pour mettre en route ce script quand j'ajoute mes images dans un répertoire ?


Voici le script qui fonctionne en action de dossier.

J'ai ajouté la gestion des noms, un nombre sera ajouté au nom en cas de nom identique dans le dossier de destination
Code
property dossier_portrait : quoted form of "déposerLeDossierIci"
property dossier_paysage : quoted form of "déposerLeDossierIci"

on adding folder items to this_folder after receiving added_items
    repeat with aItem in added_items
        try
            my deplace_photo(aItem)
        end try
    end repeat
end adding folder items to

on deplace_photo(tFile)
    do shell script "tFile=" & (quoted form of POSIX path of tFile) & "
if [ -f \"$tFile\" ];then
  r=$(/usr/bin/sips -g pixelWidth -g pixelHeight \"$tFile\" | /usr/bin/awk ' /pixel/ { print $NF }' ORS=\" \")
  if [ \"$r\" != \"\" ]; then
    name=${tFile##*/}; i=1;
    set -- $r
    if [[ $1 -gt $2 ]]; then dest=" & dossier_paysage & "; else dest=" & dossier_portrait & ";fi
    if [ -e \"$dest/$name\" ];then
      if [[ \"$name\" != *.* ]]; then  ext=\"\"; base=\"$name\"; else base=${name%.*}; ext=.${name##*.};fi
      while [ -e \"$dest/$base$i$ext\" ];do
           ((i++))
      done
      name=\"$base$i$ext\"
    fi
   /bin/mv \"$tFile\" \"$dest/$name\"
  fi
fi"
end deplace_photo

Dans le script supprimme le texte déposerLeDossierIci, glisse/dépose le dossier de destination entre les ""

Le script ne traite que les images ajoutées dans ce dossier.
Pour les dossiers et les autres types de fichiers ajoutés dans le dossier ou les éléments existants, le script ne déplacera aucun de ces éléments.

Important : une action de dossier n'est pas recommandée, si les fichiers ajoutés dans le dossier proviennent d'un téléchargement(internet) direct dans ce dossier, l'action de dossier va en oublier plusieurs.

Ce message a été modifié par EricaL** - 8 Jul 2011, 01:37.
Go to the top of the page
 
+Quote Post
MacMame
posté 8 Jul 2011, 12:20
Message #5


Adepte de Macbidouille
*

Groupe : Membres
Messages : 109
Inscrit : 11 Jan 2010
Membre no 148 488



Citation (EricaL** @ 8 Jul 2011, 01:32) *
Le script ne traite que les images ajoutées dans ce dossier.
Pour les dossiers et les autres types de fichiers ajoutés dans le dossier ou les éléments existants, le script ne déplacera aucun de ces éléments.

Important : une action de dossier n'est pas recommandée, si les fichiers ajoutés dans le dossier proviennent d'un téléchargement(internet) direct dans ce dossier, l'action de dossier va en oublier plusieurs.



Merci EricaL !!


Ok je test dès que possible, en fait les fichiers ne seront pas téléchargé, il seront déposer directement dans le dossier.

En fait , après réflexion... dry.gif , j'aurais peut être du intégrer ce système de reconnaissance (portrait / paysage) dans le script que je t’avais demandé auparavant, par exemple exécuter un script PSD spécial "Paysage" pour les photos identifié comme tel et portrait pour la seconde possibilitée.. car actuellement ce que je fait, c'est d'avoir créer 2 répertoires, un rep (portrait) et un rep (paysage) ces 2 dossiers Action appel un script photoshop approprié (avec le fameux système de renommage mini etc....

Pense tu que cela soit possible ? en fait ce serais un script tout en un ?? rolleyes.gif

Si cela est possible et si tu as le temps, j'oserais te copier mon script unsure.gif

En tous les cas merci encore..

Ce message a été modifié par MacMame - 8 Jul 2011, 12:23.
Go to the top of the page
 
+Quote Post
Guest_EricaL**_*
posté 8 Jul 2011, 15:33
Message #6





Guests






Bonjour,

Citation (MacMame @ 8 Jul 2011, 07:20) *
En fait , après réflexion... dry.gif , j'aurais peut être du intégrer ce système de reconnaissance (portrait / paysage) dans le script que je t’avais demandé auparavant, par exemple exécuter un script PSD spécial "Paysage" pour les photos identifié comme tel et portrait pour la seconde possibilitée..


Pense tu que cela soit possible ? en fait ce serais un script tout en un ?? rolleyes.gif

Oui, c'est sans problème.

Je crois que la différence sera les do action dans Photoshop, donc les modifications seront dans la fonction "on action1(tFiles)".

Voici le début de la fonction
Code
on action1(tFiles)
    script ob -- seulement les actions Photoshop
        on PSD_process(this_path)
            set tFile to quoted form of POSIX path of this_path
            set t_dim to do shell script "/usr/bin/sips -g pixelWidth -g pixelHeight " & tFile & " | /usr/bin/awk ' /pixel/ { print $NF }' ORS=\" \""
            if t_dim is "" or ((word 1 of t_dim) as integer) > ((word 2 of t_dim) as integer) then
                set isPortrait to false
            else
                set isPortrait to true
            end if
            tell application "Adobe Photoshop CS5"
                open alias this_path showing dialogs never
                tell the current document
                    if isPortrait then
                        --do action "MINI" from "decoup-Portrait"
                        --do action "MED" from "decoup-Portrait"
                        --do action "MAXI" from "decoup-Portrait"
                        --do action "PDM" from "decoup-Portrait"
                    else
                        --do action "MINI" from "decoup-paysage"
                        --do action "MED" from "decoup-paysage"
                        --do action "MAXI" from "decoup-paysage"
                        --do action "PDM" from "decoup-paysage"
                    end if
                    close saving no
                end tell
            end tell
        end PSD_process
    end script

Il suffit de mettre les do action correspondant au portrait et au paysage.

Edition : je n'avais pas pensé de vérifier les dimensions directement dans Photoshop.
Donc, voici le début de la fonction
Code
on action1(tFiles)
    script ob -- seulement les actions Photoshop
        on PSD_process(this_path)
            tell application "Adobe Photoshop CS5"
                open alias this_path showing dialogs never
                tell the current document
                    if width < height then -- format Portrait
                        --do action "MINI" from "decoup-Portrait"
                        --do action "MED" from "decoup-Portrait"
                        --do action "MAXI" from "decoup-Portrait"
                        --do action "PDM" from "decoup-Portrait"
                    else
                        --do action "MINI" from "decoup-paysage"
                        --do action "MED" from "decoup-paysage"
                        --do action "MAXI" from "decoup-paysage"
                        --do action "PDM" from "decoup-paysage"
                    end if
                    close saving no
                end tell
            end tell
        end PSD_process
    end script



Sinon, s'il y a d'autres différences, colle les deux scripts, je ferais les modifications.

Ce message a été modifié par EricaL** - 8 Jul 2011, 16:05.
Go to the top of the page
 
+Quote Post
MacMame
posté 12 Jul 2011, 15:31
Message #7


Adepte de Macbidouille
*

Groupe : Membres
Messages : 109
Inscrit : 11 Jan 2010
Membre no 148 488



AAHH Ah ok oui voila, mais je pense te donner le code complet, car il y avais aussi le dispositif qui permettait d'attendre le téléchargement des fichiers dans le dossier, ainsi que d'autre choses, comme le renommage, donc je préfère te donner l'intégralité pour savoir ou imbriquer la fonction "portrait / paysage", je te met çà dès mon retour chez moi.


Merci encore pour ton aide.
Go to the top of the page
 
+Quote Post
MacMame
posté 12 Jul 2011, 20:53
Message #8


Adepte de Macbidouille
*

Groupe : Membres
Messages : 109
Inscrit : 11 Jan 2010
Membre no 148 488



Voici le code complet que j'utilise, à quel endroit e dois ajouter le code que tu viens de me fournir ?

Code
property ajout : {}
property sous_dossiers : {}
property masterFolder : ""
property dossier_a_traiter : ""

on idle
    
    
    
    -- collection Debut
    
    set dossier_a_traiter to "/Volumes/Rack-Pro/CANON/★AUTOMATOR/collection/PHOTOS-PORTRAITS"
    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
    
    
    set dossier_a_traiter to "/Volumes/Rack-Pro/CANON/★AUTOMATOR/collection/PHOTOS-PAYSAGES"
    tell my rechercheFichiers(dossier_a_traiter) to if it is not "" then my action8(it) -- si des éléments sont trouvés, execute la fonction action8
    
    set dossier_a_traiter to "/Volumes/Rack-Pro/CANON/★AUTOMATOR/collection/PIC"
    tell my rechercheFichiers(dossier_a_traiter) to if it is not "" then my action9(it) -- si des éléments sont trouvés, execute la fonction action9
    
    -- collection Fin
    
    
    
    return 30 -- 20 secondes avant la prochaine execution du idle
end idle

on quit
    continue quit
end quit



-- collection PORTRAIT DEBUT
on action7(tFiles)
    script ob -- seulement les actions Photoshop
        on PSD_process(this_path)
            tell application "Adobe Photoshop CS5"
                open alias this_path showing dialogs never
                tell the current document
                    do action "MINI" from "collection-portrait"
                    do action "MED" from "collection-portrait"
                    do action "MAXI" from "collection-portrait"
                    do action "PRM" from "collection-portrait"
                    close saving no
                end tell
            end tell
        end PSD_process
    end script
    
    set ajout to {"_mini", "_med", "_maxi", "_prm"} -- selon l'ordre des dossiers (dans la  ligne suivante)
    set sous_dossiers to {"MINI", "MED", "MAXI", "PRM"}
    set masterFolder to "/Users/monmac/Pictures/RESULTAT" -- le dossier parent des sous dossier "MINI", "MED", "MAXI", "PRM"
    set dossiersDimages to {}
    repeat with f in tFiles -- boucle qui ne traite que les fichiers
        set this_path to (POSIX file f) as string
        if not my isDownloading(this_path as alias) then -- le fichier ou dossier ne se télécharge pas
            if ((alias this_path) as string) ends with ":" then -- c'est un dossier
                set end of dossiersDimages to contents of f -- on met le chemin du dossier dans une liste
            else
                ob's PSD_process(this_path) -- traite le fichier dans Photoshop
                my deplace(f) -- déplace le fichier dans le sous dossier "tempo"
            end if
        end if
    end repeat
    my renomme()
    set d to ""
    my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
    
    repeat with d in dossiersDimages --  boucle qui traite les dossiers d'images
        set tFiles to do shell script "/usr/bin/find " & (quoted form of d) & "  -maxdepth 1 -type f  \\! -name '.*'"
        if tFiles is not "" then
            repeat with f in (get paragraphs of tFiles)
                ob's PSD_process((POSIX file f) as string) -- traite le fichier dans Photoshop
            end repeat
            my deplace(d) -- déplace le dossier dans le sous dossier "tempo"
            my renomme()
            my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
        end if
    end repeat
end action7

-- collection PORTRAIT FIN



-- collection PAYSAGE DEBUT
on action8(tFiles)
    script ob -- seulement les actions Photoshop
        on PSD_process(this_path)
            tell application "Adobe Photoshop CS5"
                open alias this_path showing dialogs never
                tell the current document
                    do action "MINI" from "collection-paysage"
                    do action "MED" from "collection-paysage"
                    do action "MAXI" from "collection-paysage"
                    do action "PRM" from "collection-paysage"
                    close saving no
                end tell
            end tell
        end PSD_process
    end script
    
    set ajout to {"_mini", "_med", "_maxi", "_prm"} -- selon l'ordre des dossiers (dans la  ligne suivante)
    set sous_dossiers to {"MINI", "MED", "MAXI", "PRM"}
    set masterFolder to "/Users/monmac/Pictures/RESULTAT" -- le dossier parent des sous dossier "MINI", "MED", "MAXI", "PRM"
    set dossiersDimages to {}
    repeat with f in tFiles -- boucle qui ne traite que les fichiers
        set this_path to (POSIX file f) as string
        if not my isDownloading(this_path as alias) then -- le fichier ou dossier ne se télécharge pas
            if ((alias this_path) as string) ends with ":" then -- c'est un dossier
                set end of dossiersDimages to contents of f -- on met le chemin du dossier dans une liste
            else
                ob's PSD_process(this_path) -- traite le fichier dans Photoshop
                my deplace(f) -- déplace le fichier dans le sous dossier "tempo"
            end if
        end if
    end repeat
    my renomme()
    set d to ""
    my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
    
    repeat with d in dossiersDimages --  boucle qui traite les dossiers d'images
        set tFiles to do shell script "/usr/bin/find " & (quoted form of d) & "  -maxdepth 1 -type f  \\! -name '.*'"
        if tFiles is not "" then
            repeat with f in (get paragraphs of tFiles)
                ob's PSD_process((POSIX file f) as string) -- traite le fichier dans Photoshop
            end repeat
            my deplace(d) -- déplace le dossier dans le sous dossier "tempo"
            my renomme()
            my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
        end if
    end repeat
end action8

-- collection PAYSAGE FIN

-- collection PIC DEBUT
on action9(tFiles)
    script ob -- seulement les actions Photoshop
        on PSD_process(this_path)
            tell application "Adobe Photoshop CS5"
                open alias this_path showing dialogs never
                tell the current document
                    do action "PIC" from "collection-pic-picmax"
                    do action "PICMAX" from "collection-pic-picmax"
                    close saving no
                end tell
            end tell
        end PSD_process
    end script
    
    set ajout to {"_pic", "_picmax"} -- selon l'ordre des dossiers (dans la  ligne suivante)
    set sous_dossiers to {"PIC", "PICMAX"}
    set masterFolder to "/Users/monmac/Pictures/RESULTAT" -- le dossier parent des sous dossier "PIC", "PICMAX"
    set dossiersDimages to {}
    repeat with f in tFiles -- boucle qui ne traite que les fichiers
        set this_path to (POSIX file f) as string
        if not my isDownloading(this_path as alias) then -- le fichier ou dossier ne se télécharge pas
            if ((alias this_path) as string) ends with ":" then -- c'est un dossier
                set end of dossiersDimages to contents of f -- on met le chemin du dossier dans une liste
            else
                ob's PSD_process(this_path) -- traite le fichier dans Photoshop
                my deplace(f) -- déplace le fichier dans le sous dossier "tempo"
            end if
        end if
    end repeat
    my renomme()
    set d to ""
    my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
    
    repeat with d in dossiersDimages --  boucle qui traite les dossiers d'images
        set tFiles to do shell script "/usr/bin/find " & (quoted form of d) & "  -maxdepth 1 -type f  \\! -name '.*'"
        if tFiles is not "" then
            repeat with f in (get paragraphs of tFiles)
                ob's PSD_process((POSIX file f) as string) -- traite le fichier dans Photoshop
            end repeat
            my deplace(d) -- déplace le dossier dans le sous dossier "tempo"
            my renomme()
            my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
        end if
    end repeat
end action9

-- collection_rouge PIC FIN



on renomme()
    set n to 1
    repeat with ceDossier in sous_dossiers --  chaque nom de dossier de la liste sous_dossiers
        set t_folder to quoted form of (masterFolder & "/" & ceDossier)
        do shell script "ajout=" & (quoted form of (item n of ajout)) & "
cd " & t_folder & " &&  /usr/bin/find . -type f -maxdepth 1 \\! -name  \"*$ajout.*\" \\! -name  \"*$ajout\" \\! -name '.*' -print0  | while read -d $'\\0' f;
do
  nom=${f%.*}; ext=${f##*.};
  if [ \"$nom\" = \"\" ]; then  /bin/mv -f  \"$f\" \"$f$ajout\"; else  /bin/mv -f  \"$f\" \"$nom$ajout.$ext\"; fi
done"
        
        set n to n + 1
    end repeat
end renomme

on isDownloading(f)
    set s to size of (info for f)
    delay 6
    return (size of (info for f)) < s
end isDownloading

on rechercheFichiers(d) -- recherche fichiers et dossiers
    set tFiles to do shell script "/usr/bin/find " & (quoted form of d) & "  -maxdepth 1 -mindepth 1 \\! -name '.*' \\! -name 'tempo'"
    if tFiles is not "" then return paragraphs of tFiles
    return ""
end rechercheFichiers

on deplace(f) -- déplace le (fichier original ou le dossier contenant les fichiers originaux) dans le sous dossier "tempo"
    -- si un élément du meme nom existe deja dans le dossier de destination, un nombre sera ajouté au nom
    set destPath to quoted form of (dossier_a_traiter & "/tempo")
    do shell script "dest=" & destPath & ";f=" & (quoted form of f) & "; name=${f##*/}; i=\"\"
if [[ \"$name\" != *.* ]]; then  ext=\"\"; base=\"$name\"; else base=${name%.*}; ext=.${name##*.};fi
while [ -e \"$dest/$base$i$ext\" ]; do
((i++)); done;
/bin/mv  \"$f\"  \"$dest/$base$i$ext\""
end deplace

on deplace_images_creer(d, dossier) -- déplace les images dans le  dossier spécifié
    -- si un élément du meme nom existe deja dans le dossier spécifié, un nombre sera ajouté au nom
    if dossier is "" then -- ce sont des images qui ont été déposées
        set destPath to quoted form of d
        set thisFolder to (POSIX file d) as string
    else -- c'est dossier qui a été déposée
        set r to do shell script "d=" & (quoted form of dossier) & "; nom=${d##*/}; i=\"\"
cd " & (quoted form of d) & ";while [ -e \"$nom$i\" ];do
  ((i++))
done
/bin/mkdir  \"$nom$i\"; echo \"$nom$i\"" -- création du dossier
        set destPath to quoted form of (d & "/" & r)
        set thisFolder to (POSIX file (d & "/" & r)) as string
    end if
    
    repeat with ceDossier in sous_dossiers --  chaque nom de dossier de la liste sous_dossiers
        set t_folder to quoted form of (masterFolder & "/" & ceDossier)
        do shell script "dest=" & destPath & "
/usr/bin/find " & t_folder & " -type f -maxdepth 1 \\! -name '.*' -print0  | while read -d $'\\0' f; do
name=${f##*/};
if [ -e \"$dest/$name\" ];then
    i=1; if [[ \"$name\" != *.* ]]; then  ext=\"\"; base=\"$name\"; else base=${name%.*}; ext=.${name##*.};fi
    while [ -e \"$dest/$base$i$ext\" ];do
      ((i++))
    done
    name=\"$base$i$ext\"
fi
/bin/mv  \"$f\"  \"$dest/$name\"
done"
    end repeat
    
    tell application "Finder" to try --  étiquette verte
        set label index of document files of folder thisFolder whose name extension is in {"gif", "png"} and (name contains "_mini." or name contains "_pic.") and it's label index is not 6 to 6
    end try
end deplace_images_creer
Go to the top of the page
 
+Quote Post
Guest_EricaL**_*
posté 13 Jul 2011, 03:36
Message #9





Guests






Bonjour,


OK, je ne suis pas sur.
Selon moi, tu veux éliminer ces deux dossiers ("collection/PHOTOS-PORTRAITS" et "collection/PHOTOS-PAYSAGES"), pour n'avoir qu'un seul dossier, par exemple "collection/PHOTOS".

Si c'est ça, voici le début du script:
Les cinq lignes modifiées sont indiquées par --****
Les deux lignes ajoutées sont indiquées par --****+
Les lignes supprimées sont indiquées par --****-
Code
property ajout : {}
property sous_dossiers : {}
property masterFolder : ""
property dossier_a_traiter : ""

on idle
    
    
    -- collection Debut
    
    set dossier_a_traiter to "/Volumes/Rack-Pro/CANON/★AUTOMATOR/collection/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
    
-- cette ligne qui finit par /PHOTOS-PAYSAGES" + les deux lignes suivantes ont été supprimées --****-

    set dossier_a_traiter to "/Volumes/Rack-Pro/CANON/★AUTOMATOR/collection/PIC"
    tell my rechercheFichiers(dossier_a_traiter) to if it is not "" then my action9(it) -- si des éléments sont trouvés, execute la fonction action9
    
    -- collection Fin
    
    
    return 30 -- 20 secondes avant la prochaine execution du idle
end idle

on quit
    continue quit
end quit


-- collection PORTRAIT et PAYSAGE DEBUT
on action7(tFiles)
    script ob -- seulement les actions Photoshop
        on PSD_process(this_path)
            set tCollection to "collection-paysage" --****+
            tell application "Adobe Photoshop CS5"
                open alias this_path showing dialogs never
                tell the current document
                    if width < height then set tCollection to "collection-portrait" -- format Portrait--****+
                    do action "MINI" from tCollection--****
                    do action "MED" from tCollection--****
                    do action "MAXI" from tCollection--****
                    do action "PRM" from tCollection--****
                    close saving no
                end tell
            end tell
        end PSD_process
    end script
    
    set ajout to {"_mini", "_med", "_maxi", "_prm"} -- selon l'ordre des dossiers (dans la  ligne suivante)
    set sous_dossiers to {"MINI", "MED", "MAXI", "PRM"}
    set masterFolder to "/Users/monmac/Pictures/RESULTAT" -- le dossier parent des sous dossier "MINI", "MED", "MAXI", "PRM"
    set dossiersDimages to {}
    repeat with f in tFiles -- boucle qui ne traite que les fichiers
        set this_path to (POSIX file f) as string
        if not my isDownloading(this_path as alias) then -- le fichier ou dossier ne se télécharge pas
            if ((alias this_path) as string) ends with ":" then -- c'est un dossier
                set end of dossiersDimages to contents of f -- on met le chemin du dossier dans une liste
            else
                ob's PSD_process(this_path) -- traite le fichier dans Photoshop
                my deplace(f) -- déplace le fichier dans le sous dossier "tempo"
            end if
        end if
    end repeat
    my renomme()
    set d to ""
    my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
    
    repeat with d in dossiersDimages --  boucle qui traite les dossiers d'images
        set tFiles to do shell script "/usr/bin/find " & (quoted form of d) & "  -maxdepth 1 -type f  \\! -name '.*'"
        if tFiles is not "" then
            repeat with f in (get paragraphs of tFiles)
                ob's PSD_process((POSIX file f) as string) -- traite le fichier dans Photoshop
            end repeat
            my deplace(d) -- déplace le dossier dans le sous dossier "tempo"
            my renomme()
            my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
        end if
    end repeat
end action7

-- collection PORTRAIT et PAYSAGE  FIN


Supprime la fonction "on action8(tFiles)" --> end action8

Le reste du script n'est pas modifié.
Go to the top of the page
 
+Quote Post
MacMame
posté 18 Jul 2011, 14:01
Message #10


Adepte de Macbidouille
*

Groupe : Membres
Messages : 109
Inscrit : 11 Jan 2010
Membre no 148 488



Salut !


Houla ! je suis largué sad.gif l'action8 de mon ancien fichier je le colle ou ? dans celui que tu m'a remis ?



sinon si j’exécute en double cliquant dessus (enregitrer en application) et que je met une image dans "PHOTOS" rien ne ce passe.

Code
property ajout : {}
property sous_dossiers : {}
property masterFolder : ""
property dossier_a_traiter : ""

on idle
    
    
    -- collection Debut
    
    set dossier_a_traiter to "/Volumes/Rack-Pro/CANON/★AUTOMATOR/collection/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
    
-- cette ligne qui finit par /PHOTOS-PAYSAGES" + les deux lignes suivantes ont été supprimées --****-

    set dossier_a_traiter to "/Volumes/Rack-Pro/CANON/★AUTOMATOR/collection/PIC"
    tell my rechercheFichiers(dossier_a_traiter) to if it is not "" then my action9(it) -- si des éléments sont trouvés, execute la fonction action9
    
    -- collection Fin
    
    
    return 30 -- 20 secondes avant la prochaine execution du idle
end idle

on quit
    continue quit
end quit


-- collection PORTRAIT et PAYSAGE DEBUT
on action7(tFiles)
    script ob -- seulement les actions Photoshop
        on PSD_process(this_path)
            set tCollection to "collection-paysage" --****+
            tell application "Adobe Photoshop CS5"
                open alias this_path showing dialogs never
                tell the current document
                    if width < height then set tCollection to "collection-portrait" -- format Portrait--****+
                    do action "MINI" from tCollection--****
                    do action "MED" from tCollection--****
                    do action "MAXI" from tCollection--****
                    do action "PRM" from tCollection--****
                    close saving no
                end tell
            end tell
        end PSD_process
    end script
    
    set ajout to {"_mini", "_med", "_maxi", "_prm"} -- selon l'ordre des dossiers (dans la  ligne suivante)
    set sous_dossiers to {"MINI", "MED", "MAXI", "PRM"}
    set masterFolder to "/Users/monmac/Pictures/RESULTAT" -- le dossier parent des sous dossier "MINI", "MED", "MAXI", "PRM"
    set dossiersDimages to {}
    repeat with f in tFiles -- boucle qui ne traite que les fichiers
        set this_path to (POSIX file f) as string
        if not my isDownloading(this_path as alias) then -- le fichier ou dossier ne se télécharge pas
            if ((alias this_path) as string) ends with ":" then -- c'est un dossier
                set end of dossiersDimages to contents of f -- on met le chemin du dossier dans une liste
            else
                ob's PSD_process(this_path) -- traite le fichier dans Photoshop
                my deplace(f) -- déplace le fichier dans le sous dossier "tempo"
            end if
        end if
    end repeat
    my renomme()
    set d to ""
    my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
    
    repeat with d in dossiersDimages --  boucle qui traite les dossiers d'images
        set tFiles to do shell script "/usr/bin/find " & (quoted form of d) & "  -maxdepth 1 -type f  \\! -name '.*'"
        if tFiles is not "" then
            repeat with f in (get paragraphs of tFiles)
                ob's PSD_process((POSIX file f) as string) -- traite le fichier dans Photoshop
            end repeat
            my deplace(d) -- déplace le dossier dans le sous dossier "tempo"
            my renomme()
            my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
        end if
    end repeat
end action7

-- collection PORTRAIT et PAYSAGE  FIN
Go to the top of the page
 
+Quote Post
Guest_EricaL**_*
posté 18 Jul 2011, 14:31
Message #11





Guests






Bonjour,

Citation (MacMame @ 18 Jul 2011, 09:01) *
Houla ! je suis largué sad.gif l'action8 de mon ancien fichier je le colle ou ? dans celui que tu m'a remis ?

Il fallait le supprimer

Citation (MacMame @ 18 Jul 2011, 09:01) *
sinon si j’exécute en double cliquant dessus (enregitrer en application) et que je met une image dans "PHOTOS" rien ne ce passe.

Vérifie que l'action de dossier du dossier "PHOTOS" est bien activé.

Voici le script au complet.
Code
property ajout : {}
property sous_dossiers : {}
property masterFolder : ""
property dossier_a_traiter : ""

on idle
    
    
    -- collection Debut
    
    set dossier_a_traiter to "/Volumes/Rack-Pro/CANON/★AUTOMATOR/collection/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
    
-- cette ligne qui finit par /PHOTOS-PAYSAGES" + les deux lignes suivantes ont été supprimées --****-

    set dossier_a_traiter to "/Volumes/Rack-Pro/CANON/★AUTOMATOR/collection/PIC"
    tell my rechercheFichiers(dossier_a_traiter) to if it is not "" then my action9(it) -- si des éléments sont trouvés, execute la fonction action9
    
    -- collection Fin
    
    
    return 30 -- 20 secondes avant la prochaine execution du idle
end idle

on quit
    continue quit
end quit


-- collection PORTRAIT et PAYSAGE DEBUT
on action7(tFiles)
    script ob -- seulement les actions Photoshop
        on PSD_process(this_path)
            set tCollection to "collection-paysage" --****+
            tell application "Adobe Photoshop CS5"
                open alias this_path showing dialogs never
                tell the current document
                    if width < height then set tCollection to "collection-portrait" -- format Portrait--****+
                    do action "MINI" from tCollection--****
                    do action "MED" from tCollection--****
                    do action "MAXI" from tCollection--****
                    do action "PRM" from tCollection--****
                    close saving no
                end tell
            end tell
        end PSD_process
    end script
    
    set ajout to {"_mini", "_med", "_maxi", "_prm"} -- selon l'ordre des dossiers (dans la  ligne suivante)
    set sous_dossiers to {"MINI", "MED", "MAXI", "PRM"}
    set masterFolder to "/Users/monmac/Pictures/RESULTAT" -- le dossier parent des sous dossier "MINI", "MED", "MAXI", "PRM"
    set dossiersDimages to {}
    repeat with f in tFiles -- boucle qui ne traite que les fichiers
        set this_path to (POSIX file f) as string
        if not my isDownloading(this_path as alias) then -- le fichier ou dossier ne se télécharge pas
            if ((alias this_path) as string) ends with ":" then -- c'est un dossier
                set end of dossiersDimages to contents of f -- on met le chemin du dossier dans une liste
            else
                ob's PSD_process(this_path) -- traite le fichier dans Photoshop
                my deplace(f) -- déplace le fichier dans le sous dossier "tempo"
            end if
        end if
    end repeat
    my renomme()
    set d to ""
    my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
    
    repeat with d in dossiersDimages --  boucle qui traite les dossiers d'images
        set tFiles to do shell script "/usr/bin/find " & (quoted form of d) & "  -maxdepth 1 -type f  \\! -name '.*'"
        if tFiles is not "" then
            repeat with f in (get paragraphs of tFiles)
                ob's PSD_process((POSIX file f) as string) -- traite le fichier dans Photoshop
            end repeat
            my deplace(d) -- déplace le dossier dans le sous dossier "tempo"
            my renomme()
            my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
        end if
    end repeat
end action7

-- collection PORTRAIT et PAYSAGE  FIN

-- collection PIC DEBUT
on action9(tFiles)
    script ob -- seulement les actions Photoshop
        on PSD_process(this_path)
            tell application "Adobe Photoshop CS5"
                open alias this_path showing dialogs never
                tell the current document
                    do action "PIC" from "collection-pic-picmax"
                    do action "PICMAX" from "collection-pic-picmax"
                    close saving no
                end tell
            end tell
        end PSD_process
    end script
    
    set ajout to {"_pic", "_picmax"} -- selon l'ordre des dossiers (dans la  ligne suivante)
    set sous_dossiers to {"PIC", "PICMAX"}
    set masterFolder to "/Users/monmac/Pictures/RESULTAT" -- le dossier parent des sous dossier "PIC", "PICMAX"
    set dossiersDimages to {}
    repeat with f in tFiles -- boucle qui ne traite que les fichiers
        set this_path to (POSIX file f) as string
        if not my isDownloading(this_path as alias) then -- le fichier ou dossier ne se télécharge pas
            if ((alias this_path) as string) ends with ":" then -- c'est un dossier
                set end of dossiersDimages to contents of f -- on met le chemin du dossier dans une liste
            else
                ob's PSD_process(this_path) -- traite le fichier dans Photoshop
                my deplace(f) -- déplace le fichier dans le sous dossier "tempo"
            end if
        end if
    end repeat
    my renomme()
    set d to ""
    my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
    
    repeat with d in dossiersDimages --  boucle qui traite les dossiers d'images
        set tFiles to do shell script "/usr/bin/find " & (quoted form of d) & "  -maxdepth 1 -type f  \\! -name '.*'"
        if tFiles is not "" then
            repeat with f in (get paragraphs of tFiles)
                ob's PSD_process((POSIX file f) as string) -- traite le fichier dans Photoshop
            end repeat
            my deplace(d) -- déplace le dossier dans le sous dossier "tempo"
            my renomme()
            my deplace_images_creer("/Users/monmac/Pictures/RESULTAT/★ REGROUPEMENT/collection_recup", d) --<-- mettre ici le chemin du dossier de destination
        end if
    end repeat
end action9

-- collection_rouge PIC FIN



on renomme()
    set n to 1
    repeat with ceDossier in sous_dossiers --  chaque nom de dossier de la liste sous_dossiers
        set t_folder to quoted form of (masterFolder & "/" & ceDossier)
        do shell script "ajout=" & (quoted form of (item n of ajout)) & "
cd " & t_folder & " &&  /usr/bin/find . -type f -maxdepth 1 \\! -name  \"*$ajout.*\" \\! -name  \"*$ajout\" \\! -name '.*' -print0  | while read -d $'\\0' f;
do
  nom=${f%.*}; ext=${f##*.};
  if [ \"$nom\" = \"\" ]; then  /bin/mv -f  \"$f\" \"$f$ajout\"; else  /bin/mv -f  \"$f\" \"$nom$ajout.$ext\"; fi
done"
        
        set n to n + 1
    end repeat
end renomme

on isDownloading(f)
    set s to size of (info for f)
    delay 6
    return (size of (info for f)) < s
end isDownloading

on rechercheFichiers(d) -- recherche fichiers et dossiers
    set tFiles to do shell script "/usr/bin/find " & (quoted form of d) & "  -maxdepth 1 -mindepth 1 \\! -name '.*' \\! -name 'tempo'"
    if tFiles is not "" then return paragraphs of tFiles
    return ""
end rechercheFichiers

on deplace(f) -- déplace le (fichier original ou le dossier contenant les fichiers originaux) dans le sous dossier "tempo"
    -- si un élément du meme nom existe deja dans le dossier de destination, un nombre sera ajouté au nom
    set destPath to quoted form of (dossier_a_traiter & "/tempo")
    do shell script "dest=" & destPath & ";f=" & (quoted form of f) & "; name=${f##*/}; i=\"\"
if [[ \"$name\" != *.* ]]; then  ext=\"\"; base=\"$name\"; else base=${name%.*}; ext=.${name##*.};fi
while [ -e \"$dest/$base$i$ext\" ]; do
((i++)); done;
/bin/mv  \"$f\"  \"$dest/$base$i$ext\""
end deplace

on deplace_images_creer(d, dossier) -- déplace les images dans le  dossier spécifié
    -- si un élément du meme nom existe deja dans le dossier spécifié, un nombre sera ajouté au nom
    if dossier is "" then -- ce sont des images qui ont été déposées
        set destPath to quoted form of d
        set thisFolder to (POSIX file d) as string
    else -- c'est dossier qui a été déposée
        set r to do shell script "d=" & (quoted form of dossier) & "; nom=${d##*/}; i=\"\"
cd " & (quoted form of d) & ";while [ -e \"$nom$i\" ];do
  ((i++))
done
/bin/mkdir  \"$nom$i\"; echo \"$nom$i\"" -- création du dossier
        set destPath to quoted form of (d & "/" & r)
        set thisFolder to (POSIX file (d & "/" & r)) as string
    end if
    
    repeat with ceDossier in sous_dossiers --  chaque nom de dossier de la liste sous_dossiers
        set t_folder to quoted form of (masterFolder & "/" & ceDossier)
        do shell script "dest=" & destPath & "
/usr/bin/find " & t_folder & " -type f -maxdepth 1 \\! -name '.*' -print0  | while read -d $'\\0' f; do
name=${f##*/};
if [ -e \"$dest/$name\" ];then
    i=1; if [[ \"$name\" != *.* ]]; then  ext=\"\"; base=\"$name\"; else base=${name%.*}; ext=.${name##*.};fi
    while [ -e \"$dest/$base$i$ext\" ];do
      ((i++))
    done
    name=\"$base$i$ext\"
fi
/bin/mv  \"$f\"  \"$dest/$name\"
done"
    end repeat
    
    tell application "Finder" to try --  étiquette verte
        set label index of document files of folder thisFolder whose name extension is in {"gif", "png"} and (name contains "_mini." or name contains "_pic.") and it's label index is not 6 to 6
    end try
end deplace_images_creer


Ce message a été modifié par EricaL** - 18 Jul 2011, 14:34.
Go to the top of the page
 
+Quote Post
MacMame
posté 18 Jul 2011, 15:08
Message #12


Adepte de Macbidouille
*

Groupe : Membres
Messages : 109
Inscrit : 11 Jan 2010
Membre no 148 488



Oui mais, il n'y à pas besoin d'action de dossier non ? car il s'agit bien d'un script que tu exécute à partir du finder, ce derniers détecte un ajout de fichiers images ou répertoire comportant une/des images et il s’exécute.

C'est ce qui ce passe avec mon script de base. smile.gif

J'ai tout faux je parie rolleyes.gif

Ce message a été modifié par MacMame - 18 Jul 2011, 15:08.
Go to the top of the page
 
+Quote Post
MacMame
posté 18 Jul 2011, 15:24
Message #13


Adepte de Macbidouille
*

Groupe : Membres
Messages : 109
Inscrit : 11 Jan 2010
Membre no 148 488



ah ok merci , j'ai repris ton code au complet et cela fonctionne, je sais pas ce que tu as fait , merci !

Il faut maintenant que je fasse de même pour mes autres collections d'image, soit je regroupe tous sur un seul fichiers script ou je fait plusieurs exécutable pour chaque collection, cela me semble plus facile, non ? la seconde solution me permettrait de les activer seulement si j'en aurait besoin.

Le seul inconvénient ce serait peut être un embouteillage si je mettait une image dans plusieurs collections différentes biggrin.gif
Go to the top of the page
 
+Quote Post
Guest_EricaL**_*
posté 18 Jul 2011, 15:26
Message #14





Guests






Citation (MacMame @ 18 Jul 2011, 10:08) *
Oui mais, il n'y à pas besoin d'action de dossier non ?

Je me suis mêlé avec d'autres sujets laugh.gifbiggrin.gif de ce matin, oui, c'est bien un script Application qu'on lance dans le Finder biggrin.gif
Go to the top of the page
 
+Quote Post
MacMame
posté 18 Jul 2011, 15:58
Message #15


Adepte de Macbidouille
*

Groupe : Membres
Messages : 109
Inscrit : 11 Jan 2010
Membre no 148 488



WWAHOO !!, en plus tu es multitâche !! smile.gif

Merci !
Go to the top of the page
 
+Quote Post
Guest_EricaL**_*
posté 18 Jul 2011, 20:12
Message #16





Guests






Bonjour,

Citation (MacMame @ 18 Jul 2011, 10:24) *
Il faut maintenant que je fasse de même pour mes autres collections d'image, soit je regroupe tous sur un seul fichiers script ou je fait plusieurs exécutable pour chaque collection, cela me semble plus facile, non ? la seconde solution me permettrait de les activer seulement si j'en aurait besoin.

Le seul inconvénient ce serait peut être un embouteillage si je mettait une image dans plusieurs collections différentes biggrin.gif

J'aurais besoin de détails pour te donner la meilleure solution.

Est-ce que les autres collections d'images seront dans le même dossier source ou dans un autre dossier, ou les deux ?

Est-ce que Photoshop est capable d'exécuter simultanément des actions différentes dans deux documents ou il faut attendre que les actions se termine dans le premier document  ?
EX : tu exécute les actions ""collection-portrait" dans le document "x", tu sélectionnes le document "y", et tu exécutes les actions ""collection-paysage"


Est-ce que Photoshop est capable d'exécuter deux droplets en même temps ?
EX : tu déposes 10 images sur le droplet "X" et tu déposes 10 images différentes sur le droplet "y", Photoshop alterne les images des droplets ou Photoshop ouvre deux documents à la fois.

-- Si oui, est ce que ça fonctionne sans erreur (c'est à dire qu'il ne mélange pas les actions, le fichier d'un droplet ne doit pas être traité avec les actions de l'autre droplet.)

-- Si non, esr-ce que le deuxième droplet est exécuté après que le premier se termine ou il n'est jamais lancé.
Go to the top of the page
 
+Quote Post
MacMame
posté 30 Sep 2011, 23:15
Message #17


Adepte de Macbidouille
*

Groupe : Membres
Messages : 109
Inscrit : 11 Jan 2010
Membre no 148 488



Salut ErikaL,



J'avais réussi à faire ce script, le hic , c'est que je n'arrive plus à le refaire, en fait j'ai sauvé le script en application, résultat je n'arrive plus à l'éditer sad.gif

Y'a moyen de le récupérer ??

Car la je suis dégoutté, j'ai repris l'intégralité de ton script et çà ne fonctionne plus..?? je fait exécuter ou je l'enregistre en application , rien ne se passe, l'icon il ne reste même pas dans le dock.... comme c'était le cas avant....


Merci pour ton aide.

Ce message a été modifié par MacMame - 1 Oct 2011, 00:12.
Go to the top of the page
 
+Quote Post
Guest_EricaL**_*
posté 1 Oct 2011, 01:10
Message #18





Guests






Citation (MacMame @ 30 Sep 2011, 18:15) *
J'avais réussi à faire ce script, le hic , c'est que je n'arrive plus à le refaire, en fait j'ai sauvé le script en application, résultat je n'arrive plus à l'éditer sad.gif

Y'a moyen de le récupérer ??
Si tu as enregistré ton application avec l'option "Exécutable uniquement", tu ne pourras plus l'éditer et je ne connais personne qui est capable de le décoder.

Est-ce que tu as essayé d'ouvrir le contenu du paquet de l'application et d'ouvrir le script dans
le dossier "/Resources/Scripts/" ?

Est-ce que tu as changé quelque chose dans ta configuration (disques, système vers Lion ou changement de session) ?


Citation (MacMame @ 30 Sep 2011, 18:15) *
Car la je suis dégoutté, j'ai repris l'intégralité de ton script et çà ne fonctionne plus..?? je fait exécuter ou je l'enregistre en application , rien ne se passe, l'icon il ne reste même pas dans le dock.... comme c'était le cas avant....


Merci pour ton aide.
Est-ce que tu as cochée l'option "Rester en arrière plan", c'est nécessaire pour le on idle ?

Si le copier/coller du script dans le message #11 ne fonctionne pas, il est inutile de restaurer ton (script application) par "Time machine" ou le remplacer par celui d'une sauvegarde.

Sinon :
il reste à déboguer le script dans l'éditeur :
Copie/colle le script du message #11 dans l'éditeur AppleScript.
Copie/colle ces lignes avant la ligne on idle
Code
on run
    repeat
        idle
        -- le return 30 dans le idle ne fonctionnera pas si on execute le script dans l'éditeur
        delay 30 -- 30 secondes avant la prochaine execution du idle
    end repeat
end run


1- Presse le bouton "Exécuter"
2- Si tu as un message d'erreur, Il suffit de corriger le problème selon le message.
3- Refaire le 1 et le 2 tant qu'il y aura des erreurs.

Après que les erreurs seront corrigés, supprime le bloc on run .... end run.
Enregistre le script en application avec l'option "Rester en arrière plan" cochée.

Ce message a été modifié par EricaL** - 1 Oct 2011, 01:13.
Go to the top of the page
 
+Quote Post
MacMame
posté 1 Oct 2011, 01:28
Message #19


Adepte de Macbidouille
*

Groupe : Membres
Messages : 109
Inscrit : 11 Jan 2010
Membre no 148 488



Ouf ! c'est bon j'ai trouvé l'erreur.... biggrin.gif
Go to the top of the page
 
+Quote Post
MacMame
posté 21 Aug 2020, 14:54
Message #20


Adepte de Macbidouille
*

Groupe : Membres
Messages : 109
Inscrit : 11 Jan 2010
Membre no 148 488



Bonjour à tous et toute !

alors, je sais que cela va faire une paire d’années, certains vont dire que ce script est maintenant obsolète, et ils auront raison, depuis que je suis passé sur SIERRA et El Capitaine, les script indique plein de messages d'erreur. "erreur de syntaxe, fin de ligne prévu mais indicateur trouvés".

« fin de ligne » ne peut pas se trouver après « propriété ».

Du coup, j'ai une question faut, il réécrire ce script ou y a t'il moyen de le "convertir" ?? biggrin.gif

Merci encore A EricaL pour son superbe script !

Ce message a été modifié par MacMame - 21 Aug 2020, 15:01.
Go to the top of the page
 
+Quote Post
PBell
posté 22 Aug 2020, 08:05
Message #21


Adepte de Macbidouille
*

Groupe : Membres
Messages : 203
Inscrit : 7 Dec 2013
Lieu : Ile de France
Membre no 188 169



Bonjour,
Effectivement, depuis 9 ans des chemins d'accès et des autorisations ont été changés.

Pour être franc, le script d'EricaL sur la partie shell dépasse un peu mes compétences en shell mais avec mes connaissances limitées en shell et en reprenant son action de dossier, j'ai repris une fonction que j'ai écrite il y a longtemps (qui fonctionne toujours) et permet de connaître l'orientation d'une image.

Ma fonction peut renvoyer 0, 1, ou 2.
Le 0 correspond simplement au fait que le fichier à traité n'est pas une image..donc n'est pas à transférer.

Pour l'action de dossier, j'ai simplement repris la partie d'EricaL: merci à lui.

CODE
property dossier_portrait : quoted form of "déposerLeDossierIci"
property dossier_paysage : quoted form of "déposerLeDossierIci"

on adding folder items to this_folder after receiving added_items
    repeat with aItem in added_items
        set UnixItem to quoted form of (POSIX path of aItem)
        set Ftype to ImagePortrait(UnixItem)
        if Ftype > 0 then
            if Ftype = 1 then
                set Dest to dossier_portrait
            else
                set Dest to dossier_paysage
            end if
            try
                do shell script "mv " & UnixItem & " " & Dest
            end try
        end if
    end repeat
end adding folder items to


on ImagePortrait(localUpath) -- renvoie 0 ce n'est pas une image, 1 si mode portrait et 2 si mode paysage
    -- test si le type de fichier contient image
    if not ((do shell script "file -b " & localUpath) contains "image") then return 0
    -- lit les dimensions de l'image
    set Dim to do shell script "sips -g pixelWidth -g pixelHeight " & localUpath & " | awk ' /pixel/ { print $2 }'"
    try
        if ((paragraph 1 of Dim) as integer) > ((paragraph 2 of Dim) as integer) then
            return 2 -- largeur > hauteur donc paysage
        else
            return 1 -- largeur <= hauteur donc portrait
        end if
    on error
        return 0
    end try
end ImagePortrait


Tu commences par mettre tes dossiers portrait et paysage dans les 2 variables déclarées en lignes 1 et 2: il suffit de faire un glissé/déposé.
Tu enregistres ce script dans ton dossier des actions de dossier : bibliothèque/scripts/Folder Actions Scripts
Tu paramètres le dossier dans lequel tu vas ajouter les images comme étant lié à cette action de dossier.

Une fois cela fait, à chaque fois que tu déposeras un ou plusieurs fichiers dans ce dossier, ils seront déplacés dans le dossier adéquat,...sauf si ce ne sont pas des images !

Cordialement


--------------------
iMac 27 i7 2,8GHz 8Go/1To 10.6.8 /10.10 / 10.11
iMac 20 C.Duo 2,6Ghz 8Go/350Go 10.6.8 / 10.11
Mini C.Duo 2,0Ghz 2Go/500Go 10.6.8
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 utilisateur(s) sur ce sujet (2 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 1st November 2020 - 03:11