J'ai besoin d'aide en AppleScript, merci !

Publié : 15.10.2006 - 16h11 par Jacques 971

Bonjour,

J'aurais besoin d'un peu d'aide en AppleScript.

En effet, je cherche à créer un script de dossier qui, à chaque fois que l'on ajoute un ou des fichiers à un dossier (ces fichiers sont des images jpg contenant des ressources), exécute les actions suivantes :

Supprimer les ressources
mettre la date de modification et la date de dernier accès à la valeur de la date de création
optionnellement mettre le "filetype" à "JPEG", et le "créateur" à "GKON"

J'ai fait plein d'essais, mais je n'y arrive pas. Pourtant je ne dois pas être très loin, mais j'avoue que je bloque. Pour le moment, j'en suis à quelque chose de ce genre là :

on adding folder items to this_folder after receiving added_items
try
tell application "GraphicConverter"
launch
repeat with i from 1 to number of items in added_items
set this_item to item i of added_items
open this_item
remove resourcefork
save this_item
end repeat
quit
end tell
end try
end adding folder items to


Alors, si quelqu'un a un peu de courage pour m'expliquer ce qui cloche, ça serait avec grand plaisir que je recevrais des suggestions !

Merci d'avance.


Publié : 16.10.2006 - 7h59 par Fabien

Perso, je le ferais grâce à un script shell et en m'aidant de

ExifUtils

Je n'ai pas le temps de faire ça maintenant, mais je peux regarder ce soir.

Au fait, si tu veux supprimer les ressources et ajouter le type et créateur, tu vas avoir un problème. C'est soit l'un, soit l'autre, mais pas les deux.


Publié : 16.10.2006 - 13h32 par Jacques 971

Merci de ta réponse, Fabien.

Je me suis probablement mal exprimé, mais je n'ai pas l'impression que ce que je voudrais faire soit du domaine de ExifUtils.

Pour le moment, j'utilise un "droplet" que je me suis créé avec FileBuddy, et j'arrive tout à fait à mes fins (Suppression ressources, correction date et heure du fichier -pas date et heure Exif- et Créateur + FileType).

Mais ce "Droplet" a deux inconvénients :

Je dois le lancer manuellement,
et je dois cliquer "Ok" à un message de FileBuddy qui me signale que la suppression des ressources peut rendre mon fichier inutilisable, ce qui n'est pas le cas présentement !

Tout ça fonctionne très bien, mais j'ai les deux mêmes clics à faire une douzaine de fois chaque jour, et ça, c'est carrément insupportable, de nos jours :lol:

C'est pourquoi j'avais pensé à un "script de dossier" ...


Publié : 24.10.2006 - 13h37 par Jacques 971

Bonjour !

Mon problème ne semble pas passionner beaucoup de monde (111 lectures, et 1 seule réponse -Merci, Fabien !-).

Je tente, néanmoins, une nouvelle fois ma chance. À vot'bon cœur, Messieurs-Dames.


Publié : 24.10.2006 - 19h17 par Fabien

Jacques_971 a écrit :Je me suis probablement mal exprimé, mais je n'ai pas l'impression que ce que je voudrais faire soit du domaine de ExifUtils.

Pour le moment, j'utilise un "droplet" que je me suis créé avec FileBuddy, et j'arrive tout à fait à mes fins (Suppression ressources, correction date et heure du fichier -pas date et heure Exif- et Créateur + FileType).


ExifUtils permet effectivement d'utiliser la date Exif comme date de modification du fichier.

Maintenant, si ton droplet fonctionne, le script de dossier devrait fonctionner aussi... le code est très très similaire, non ?


Publié : 24.10.2006 - 20h26 par Jacques 971

Fabien a écrit :Maintenant, si ton droplet fonctionne, le script de dossier devrait fonctionner aussi... le code est très très similaire, non ?


Merci (re :oops: ) Fabien, pour ta réponse. Décidément, je crois vraiment que je m'explique mal.

Je récapitule donc :

Le code qui figure en bleu dans mon premier message est de l'AppleScript, destiné à devenir un script de dossier, mais ce code, dans l'état où il est écrit, ne fonctionne pas !

Le droplet FileBuddy ce ne sont que quelques "cases" à cocher dans FileBuddy, pour lancer manuellement une action répétitive.

Ça fonctionne très bien, MAIS je dois donc le lancer manuellement à chaque fois que j'insère une nouvelle image (qui n'a pas de données Exif) dans mon dossier, soit 12 à 15 fois par jour, multiplié par 2 dossiers … et cliquer "Ok" sur un message d'info de FileBuddy :cry:

Je voudrais automatiser tout ça et c'est pourquoi j'ai pensé à AppleScript et aux scripts de dossier …

Suis-je clair, cette fois-ci :?:


Publié : 24.10.2006 - 22h35 par jacques v

et si tu changeais de forum ? ici :


http://forum.cuk.ch/viewforum.php?f=4

c'est fait pour ce genre de problèmes, tu aurais certainement plus de succès

jacques


Publié : 24.10.2006 - 22h46 par Jacques 971

jacques_villars a écrit :et si tu changeais de forum ? i


Je me suis posé la question en postant sur ce forum ci, et puis je me suis dit que celui-ci était plus lu … Mais tu as probablement raison. :oops:

:idea: [HELP] un administrateur : Ça peut se faire, de déplacer ce sujet :?:


Publié : 25.10.2006 - 13h48 par Jacques 971

Merci, ô administrateur adoré pour ce déplacement, mon message est maintenant sagement rangé dans "Zone programmation".

Je vais donc crouler, tout de suite sous les réponses :lol:


Publié : 25.10.2006 - 18h35 par Fabien

Jacques_971 a écrit :Merci, ô administrateur adoré pour ce déplacement, mon message est maintenant sagement rangé dans "Zone programmation".



de rien :D

Ceci dit, je persiste et signe, un shell script ferait l'affaire:

- suppression des ressources avec:

Code : Tout sélectionner

cp /dev/null MonFichier.jpg/..namedfork/rsrc
SetFile -a c MonFichier.jpg


- utilisation de Exifutils, plus précisément exiffile pour la date. Voici ce que fait exiffile:
Changes the “Last Modified” date of image files to match the date/time the image was taken, and renames image files based on meta data values


Tiré de là: http://www.hugsan.com/EXIFutils/html/features.html

Je ne peux malheureusement pas essayer ExifUtils car il n'est pas Intel-compatible.


Publié : 25.10.2006 - 18h41 par Fabien

MIEUX !

Utilise jhead plutôt que ExifUtils, il est gratuit, lui:

Code : Tout sélectionner

jhead -ft MonFichier.jpg


c'est par là:

http://www.sentex.ca/~mwandel/jhead/


Publié : 26.10.2006 - 15h34 par Jacques 971

Merci (re) Fabien !

Je n'ai, à priori, rien contre un "shell script" si on peut faire tout ce que je souhaite (je pense que oui !), et si il peut se lancer automatiquement.

Par contre, je confirme que les images que je range dans ces dossiers ne possèdent pas de données Exif. Tout ce que je souhaite faire, côté "dates", c'est mettre la date de modification du fichier à la valeur de la date de création du fichier

On récapitule donc :

1°) Retirer les ressources
2°) Mettre la date de modification du fichier à la valeur de la date de création
3°) Mettre "GKON" en créateur du fichier, et "JPEG" en FileType

Le tout lancé automatiquement à chaque fois que j'ajoute un (ou plusieurs) élément(s) dans le(s) dossier(s) idoine(s).

Si tut ça est possible, je suis le plus heureux des hommes
:lol:


Publié : 27.10.2006 - 7h21 par Fabien

Jacques_971 a écrit :Merci (re) Fabien !

Je n'ai, à priori, rien contre un "shell script" si on peut faire tout ce que je souhaite (je pense que oui !), et si il peut se lancer automatiquement.

Par contre, je confirme que les images que je range dans ces dossiers ne possèdent pas de données Exif. Tout ce que je souhaite faire, côté "dates", c'est mettre la date de modification du fichier à la valeur de la date de création du fichier

On récapitule donc :

1°) Retirer les ressources
2°) Mettre la date de modification du fichier à la valeur de la date de création
3°) Mettre "GKON" en créateur du fichier, et "JPEG" en FileType

Le tout lancé automatiquement à chaque fois que j'ajoute un (ou plusieurs) élément(s) dans le(s) dossier(s) idoine(s).

Si tut ça est possible, je suis le plus heureux des hommes
:lol:


Mince ! J'ai vraiment pas les yeux en face des trous.

Donc, je résume:

1°) Voir ma réponse ci-dessus (peut être appelé avec un "do shell script" dans Applescript)
2°) Aucune idée comment faire ça
3°) Impossible si tu veux pouvoir faire 1°)

1 ou 3, il va falloir choisir !

Pour 2, je sèche...


Publié : 27.10.2006 - 15h35 par Jacques 971

Bon, ben … si personne n'a d'autre idée, je crois que je vais rester avec mon droplet FileBuddy lancé manuellement, alors.

Encore merci pour t'être "décarcassé" pour moi, Fabien :lol:

Jacques


Publié : 18.11.2006 - 16h03 par Tom25

Je n'ai pas Graphic Converter et donc ne peut pas tester. Mais essayes peut-être de mettre :

Code : Tout sélectionner

set MonImage to open this_item
save MonImage


Sinon j'en ai fait un qui utilise le Finder, mais je n'ai pas trouvé l'instruction qui enlève les ressource, je pense qu'il faudrait passer par une commande terminal qui fait ça mais je ne connais pas (je suis reparti, comme toi, di script présent dans le dossier de la bibliothéque) :

Code : Tout sélectionner

property type_list : {"JPEG", "TIFF", "GIFf", "PNGf", "PICT"}
-- since file types are optional in Mac OS X,
-- check the name extension if there is no file type
-- NOTE: do not use periods (.) with the items in the name extensions list
-- eg: {"txt", "text", "jpg", "jpeg"}, NOT: {".txt", ".text", ".jpg", ".jpeg"}
property extension_list : {"jpg", "tif", "tiff", "gif", "png", "pict", "pct"}


on adding folder items to this_folder after receiving these_items
   try
      repeat with i from 1 to number of items in these_items
         set this_item to (item i of these_items)
         set the item_info to the info for this_item
         -- if (alias of the item_info is false and the file type of the item_info is in the type_list) or (the name extension of the item_info is in the extension_list) then
         if (alias of the item_info is false) and ((the file type of the item_info is in the type_list) or (the name extension of the item_info is in the extension_list)) then
            tell application "Finder"
               set file type of this_item to "JPEG"
               set creator type of this_item to "GKON"
            end tell
            (* tell application "Image Events"
               unembed this_item
            end tell *)
            -- tell application "GraphicConverter" to remove resourcefork
            
         end if
      end repeat
   on error error_message number error_number
      if the error_number is not -128 then
         tell application "Finder"
            activate
            display dialog error_message buttons {"Cancel"} default button 1 giving up after 120
         end tell
      end if
   end try
end adding folder items to


Publié : 19.11.2006 - 14h23 par Jacques 971

Merci beaucoup pour ta réponse, Tom …

Je vais faire des essais à partir de ça, et je reviens ici dès que possible …

Jacques


Publié : 19.11.2006 - 21h44 par Jacques 971

Bonjour,

Après "moult" tests, je n'y arrive toujours pas … J'en suis là :

Code : Tout sélectionner

on adding folder items to this_folder after receiving added_items
   beep 1
   try
      tell application "GraphicConverter"
         launch
         activate
         beep 2
         repeat with i from 1 to number of items in the added_items
            beep 3
            set MonImage to item i of added_items
            open MonImage
            remove resourcefork
            save MonImage
            tell application "Finder"
               activate
               beep 4
               set file type of MonImage to "JPEG"
               set creator type of MonImage to "GKON"
            end tell
         end repeat
         beep 5
         quit
      end tell
   end try
end adding folder items to


J'ai bien le "beep 1", GraphicConverter se lance, puis j'ai le "beep 2", et ensuite… RIEN :evil: … , et aucun résultat non plus, évidemment, au niveau de "MonImage".
Finder ne s'active pas, GraphicConverter ne quitte pas

Une idée ? :idea: Merci d'avance


Jacques


Publié : 22.11.2006 - 16h41 par Tom25

Essayes de déplacer

Code : Tout sélectionner

set MonImage to item i of added_items
au niveau du Beep1 afin que ce soit le FDinder qui éxécute cette instruction. Sinon, toujours au niveau du Beep1 , essayes de mettre

Code : Tout sélectionner

set MonImage to (item i of added_items) as alias


Publié : 23.11.2006 - 13h57 par Jacques 971

Le fait est que ça fonctionne mieux, après la réorganisation des commandes entre Finder et GC …

J'en suis là :

Code : Tout sélectionner

on adding folder items to this_folder after receiving added_items
   try
      repeat with i from 1 to number of items in the added_items
         tell application "Finder"
            activate
            set MonImage to item i of added_items
            set file type of MonImage to "JPEG"
            set creator type of MonImage to "GKON"
         end tell
         tell application "GraphicConverter"
            launch
            activate
            open MonImage
            remove resourcefork
            save MonImage
            close MonImage
         end tell
      end repeat
      quit
   end try
end adding folder items to


Mais les commandes que doit effectuer GC, à part le "open" ne fonctionnent pas …

J'ai donc mis un message au créateur de GC … Sa gentillesse, sa "responsivité" proverbiale feront sans doute le reste … merci pour ton aide, Tom :lol:


Publié : 25.11.2006 - 14h23 par Tom25

Code : Tout sélectionner

on adding folder items to this_folder after receiving added_items
   try
      repeat with i from 1 to number of items in the added_items
         tell application "Finder"
            activate
            set MonFichier to item i of added_items
            set file type of MonFichier to "JPEG"
            set creator type of MonFichier to "GKON"
         end tell
         tell application "GraphicConverter"
            launch
            activate
            set MonImage to open (MonFichier as alias)
            -- remove resourcefork
            save MonImage in (Fich as alias)
            close MonImage
            quit
         end tell
      end repeat
   end try
end adding folder items to

Ensuite, il faut faire des essais pour le remove resourcefork :
Peut-être :
remove resourcefork of MonImage
ou :
Tell Document MonImage ou Tell MonImage
remove resourcefork
end tell

ATTENTION, c'est le FINDER que tu quittais non ? :?


Publié : 26.11.2006 - 14h17 par Jacques 971

Bonjour,

Voici quelques nouvelles :

Discussion en cours avec Thorsten Lemke (le créateur de GraphicConverter)

1°) la syntaxe correcte est : "remove resourcefork MonImage" SANS faire un "open" au préalable
2°) Par contre,il semble que le script "quitte" après avoir fait ce "remove resourcefork MonImage" C'est le but de ma discussion avec Thorsten Lemke

État actuel du script :

Code : Tout sélectionner

on adding folder items to this_folder after receiving added_items
   try
      tell application "GraphicConverter"
         launch
      end tell
      repeat with i from 1 to number of items in the added_items
         tell application "Finder"
            activate
            set MonImage to item i of added_items
            -- "file type" + "creator type" change via Finder is useless since GraphicConverter can do this automatically upon saving file
            -- set file type of MonImage to "JPEG"
            -- set creator type of MonImage to "GKON"
         end tell
         tell application "GraphicConverter"
            -- launch
            remove resourcefork MonImage
            beep 1
            save MonImage
            beep 2
         end tell
         tell application Finder
            beep 3
            set NewDate to the value of creation date of MonImage
            beep 4
            set modification date of MonImage to NewDate
            -- set accessed date of MonImage to NewDate
         end tell
      end repeat
      tell application "GraphicConverter"
         beep 5
         quit
      end tell
   end try
end adding folder items to



La suite ultérieurement ! :lol:


Publié : 01.12.2006 - 15h09 par Jacques 971

Bon, eh bien, après "moult" essais, je vais renoncer à écrire cet AppleScript … malgré l'aide de Tom, (Encore big remerciements à lui.) :lol:

Est-ce dû à mon "vieux" Mac, je l'ignore, mais le script de dossier est beaucoup trop lent à s'exécuter. En effet, dès que j'active les scripts de dossier, via "Config. actions de dossier", l'application "System Events" se lance, ce qui me semble logique, mais … en utilisant en permanence entre 40 et 70 % de CPU … et ça, c'est complètement insupportable ! ':mrgreen:'

Donc, j'en reste à l'utilisation manuelle et fréquente de mon "Droplet" FileBuddy.

Encore merci à Tom :!:


Publié : 03.12.2006 - 8h57 par Tom25

J'avais moi aussi activé les scipts d'actions de dossier mais comme toi, j'avais vite arrêté. Mark Allan, pour son logiciel d'antivirus ClamXav que je localise en Français, avait lui aussi utilisé les scripts de dossiers pour activer le scan d'un dossier quand on y ajouter quelques chose. Le but étant de "surveiller" le dossier de téléchargement, et quand on copie un truc sur son Mac depuis une disquette et qu'on ne veut pas scanner toute la disquette, on fait passer le truc par ce dossier de téléchargement (sorte de SAS test).

Bref, il a vite abandonné également et passe maintenant directement avec XCode. mais comment fait-il ? :shock: Mystère. Pour dire qu'il y a d'autres moyens, plus rapide, mais qui demandent des compétences que je n'ai pas :?