Aller au contenu


Photo

Aide écriture d'un script


  • Please log in to reply
12 replies to this topic

#1 Keydam

Keydam

    Membre

  • Membres
  • Pip
  • 3 Messages :
  • Configuration:MacBookPro 15' - 2,4 GHz Intel Core i7 - 8 Go 1333 MHz DDR3 - AMD Radeon HD 6770M 1024 MB -Mac OS X Lion 10.7.5
  • Sexe:Masculin
  • Localisation:Bruxelles

Posté 14 janvier 2013 - 15:44

Bonjour,

Je suis novice en Applescript et j'ai bricolé un petit script que je veux utliser pour une performance artistique, il s'agit de produire des erreurs dans des fichiers d'image en y insérant du texte, ça marche plus ou moins...

Dans ce script donc l'image est modifiée par un morceau de texte, le morceau de texte (choisi aléatoirement) s'affiche. Ensuite je dois clicker sur ok dans la boite de dialogue puis et là je ne comprend pas pourquoi, je dois aller dans le dock et cliquer sur l'icone du finder pour que le script continu et m'affiche le résultat de l'image dans aperçu..

qqun a une idée?

voila le script :

set MyImage to choose file --choisir un fichier d'image
set MyText to "/Users/damien/Documents/DATA_ME/textdam.txt" --choisir un fichier texte
set n to random number from 1 to 15
set m to random number from 2 to 150
tell application "TextEdit"
open MyText
tell document 1
  set Myline to paragraph n
  close
  open MyImage
  activate front window
  set paragraph m to Myline
  get Myline
  save
  close
end tell
end tell
tell application "Finder" -- cette partie me sert à positionner mes fenêtre où je veux
activate
set c to (count windows)
ignoring application responses
  display dialog Myline
end ignoring
end tell
tell application "System Events"
tell application process "Finder"
  repeat until ((count windows) > c)
   delay 0.5
  end repeat
  set position of window 1 to {1000, 22}
end tell
end tell
tell application "Finder"
activate
open MyImage using application file "preview.app" of folder "Applications" of startup disk
tell application process "Preview"
  set position of window 1 to {20, 22}
end tell
end tell


merci pour votre aide

Damien

Ce message a été modifié par Keydam - 14 janvier 2013 - 15:46 .


#2 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 695 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 14 janvier 2013 - 17:47

Salut et bienvenue parmi nous !

Tu vas avoir une réponse très rapidement et très certainement de notre spécialiste AppleScript : Fredo, car en plus de bien connaître AS, il dégaine très vite :zz-big-candidat:
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#3 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 14 janvier 2013 - 22:15

Salut à tous et bienvenu Damien sur MacFr :)

Bon, hélas, cette fois je vais devoir faire mentir ZeKiller, car étant en plein bouclage, je n'aurais malheureusement pas assez de temps pour me pencher sur ton script, normalement mercredi soir ça devrait se calmer, si ton projet peut attendre deux petits jours, je regarderai tout ça avec grand plaisir.

Promis, je regarde ça dès que je serai un peu plus disponible... désolé Damien de devoir te faire attendre...

:)
Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#4 Keydam

Keydam

    Membre

  • Membres
  • Pip
  • 3 Messages :
  • Configuration:MacBookPro 15' - 2,4 GHz Intel Core i7 - 8 Go 1333 MHz DDR3 - AMD Radeon HD 6770M 1024 MB -Mac OS X Lion 10.7.5
  • Sexe:Masculin
  • Localisation:Bruxelles

Posté 14 janvier 2013 - 22:39

A l'aise, merci beaucoup!
y a pas d'urgence
c'est très sympa en tout cas!

#5 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 695 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 15 janvier 2013 - 10:52

Non je n'ai pas menti, Keydam a bien eu une réponse rapide, j'ai jamais parlé de solution :zz-big-content:
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#6 tinou

tinou

    Maniaque du clavier

  • Membres
  • PipPipPipPip
  • 604 Messages :
  • Configuration:MacPro 8x3Ghz
    8 Go
    2x500 Go
    Nvidia 8800GT
    BT-AP
    2x20" cinema display
  • Sexe:Masculin
  • Localisation:Nantes
  • Passions:trop

Posté 15 janvier 2013 - 12:43

Salut,

Alors moi comme ça sans tester... je dirais que ça vient de "ignore" !

Sinon tu peux toujours insister avec un "tell application Finder to activate" (du coup pas besoin de end tell)
A modern paradox is that : it's simpler to create complex interface because it's so complex to simplify them

#7 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 16 janvier 2013 - 12:55

Non je n'ai pas menti, Keydam a bien eu une réponse rapide, j'ai jamais parlé de solution :zz-big-content:


Remarque, moi idem, je promet de regarder mais pour ce qui est de la solution... :huh: ... on verra ;)
Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#8 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 695 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 16 janvier 2013 - 13:19

Tu apprends vite :zz-big-smile:
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#9 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 17 janvier 2013 - 01:08

Tu apprends vite :zz-big-smile:


Quand on a un bon maître... :zz-big-candidat:

Bon, sinon, j'ai un peu regardé rapidement ton script Damien, ok, je crois comprendre ce que tu cherches à faire, des images aux rendus aléatoires et chaotiques, ça a l'air bien sympa suivant mes petits tests, même si ça ne donne pas toujours forcément des bons résultats, mais je n'ai pas bien compris pourquoi (peut-être une histoire de longueur des paragraphes... :huh:)

Ok, voci la proposition que je te fais, elle n'utilise aucun logiciel, hormis "Preview" à la fin du processus pour afficher l'image résultante, tous les autres traitements se font en interne directement en AppleScript natif, voici ce que donne le code :


-- Choix d'un fichier texte de type "txt"
set sTextFile to (choose file of type {"txt"} with prompt ("Choisissez un fichier texte :")) as alias

-- Choix d'un fichier image de type "jpg", "png" ou "gif"
set sImageFile to (choose file of type {"jpg", "png", "gif"} with prompt ("Choisissez une image :")) as alias

-- Lecture des fichiers texte et image
set sText to read sTextFile
set sImage to read sImageFile

-- Numeros aléatoires pour le choix des paragraphes texte et image à utiliser
-- suivant le nombre de paragraphes contenus dans chaque fichier
set nText to random number from 1 to (count every paragraph of sText)
set
nImage to random number from 2 to (count every paragraph of sImage)

-- On extrait les paragraphes texte et image
set sTextPar to paragraph nText of sText
set sImagePar to paragraph nImage of sImage

-- On remplace le paragraphe image par le paragraphe texte
set text item delimiters of AppleScript to sImagePar
set aImageList to text items of sImage
set text item delimiters of AppleScript to sTextPar
set sImage to aImageList as string
set text item delimiters of AppleScript to ""

-- On enregistre la nouvelle image
set rImage to open for access sImageFile with write permission
set eof of rImage to 0
write sImage to rImage
close access rImage

-- On affiche la nouvelle image avec Preview
tell application "Preview" to open sImageFile


Le code est brièvement commenté, si tu as des questions, n'hésites pas :)

;)

Ce message a été modifié par FredoMkb - 17 janvier 2013 - 01:09 .

Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#10 Keydam

Keydam

    Membre

  • Membres
  • Pip
  • 3 Messages :
  • Configuration:MacBookPro 15' - 2,4 GHz Intel Core i7 - 8 Go 1333 MHz DDR3 - AMD Radeon HD 6770M 1024 MB -Mac OS X Lion 10.7.5
  • Sexe:Masculin
  • Localisation:Bruxelles

Posté 17 janvier 2013 - 17:44

Merci Fredo pour ce script, c'est vraiment bien!

J'ai ajouté un petit display dialog pour voir le texte qui est sélectionné (avec un bout de script que j'ai trouvé pour placer ma fenêtre ou je veux)

voila le code :

-- Choix d'un fichier texte de type "txt"
set sTextFile to "/Users/damienpetitot/Documents/DATA_ME/textdam.txt"
-- Choix d'un fichier image de type "jpg", "png" ou "gif"
set sImageFile to (choose file of type {"jpg", "png", "gif"} with prompt ("Choisissez une image :")) as alias
-- Lecture des fichiers texte et image
set sText to read sTextFile
set sImage to read sImageFile
-- Numeros aléatoires pour le choix des paragraphes texte et image à utiliser
-- suivant le nombre de paragraphes contenus dans chaque fichier
set nText to random number from 1 to (count every paragraph of sText)
set nImage to random number from 2 to (count every paragraph of sImage)
-- On extrait les paragraphes texte et image
set sTextPar to paragraph nText of sText
set sImagePar to paragraph nImage of sImage
-- On remplace le paragraphe image par le paragraphe texte
set text item delimiters of AppleScript to sImagePar
set aImageList to text items of sImage
set text item delimiters of AppleScript to sTextPar
set sImage to aImageList as string
set text item delimiters of AppleScript to ""
-- On enregistre la nouvelle image
set rImage to open for access sImageFile with write permission
set eof of rImage to 0
write sImage to rImage
close access rImage
-- On affiche la nouvelle image avec Preview
tell application "Preview" to open sImageFile
tell application "Finder"
activate
set c to (count windows)
ignoring application responses
  display dialog sTextPar
end ignoring
end tell
tell application "System Events"
tell application process "Finder"
  repeat until ((count windows) > c)
   delay 0.5
  end repeat
  set position of window 1 to {40, 22}
 
end tell
end tell



Maintenant est ce que c'est possible de faire ça sur une suite de fichier, en série? j'image faire un truc avec item i mais je cpate pas trop bien comment ça marche!

Encore merci pour l'aide!

#11 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 17 janvier 2013 - 20:57

J'ai ajouté un petit display dialog pour voir le texte qui est sélectionné


Ok, cependant, cette action on peut la simplifier en remplaçant tout ça :

tell application "Finder"
activate
set c to (count windows)
ignoring application responses
display dialog sTextPar
end ignoring
end tell

Par seulement ça :

display dialog sTextPar

Si jamais le dialogue ne s'affiche pas au premier plan, utilise cette autre solution :

tell me to activate
display dialog sTextPar

(avec un bout de script que j'ai trouvé pour placer ma fenêtre ou je veux)


Bon, là je n'ai pas bien compris ce que tu cherches à faire, car le code que tu utilises est un peu confus, voire carrément lourd pour le simple positionnement d'une fenêtre... si tu pouvais m'expliquer en deux mots quel est le comportement que tu souhaites scripter, je pourrai éventuellement te proposer quelque chose d'un peu plus simple...

Maintenant est ce que c'est possible de faire ça sur une suite de fichier, en série? j'image faire un truc avec item i mais je cpate pas trop bien comment ça marche!


Oui, sur le principe cela ne pose pas de soucis particulier, il faut néanmoins que tu m'en dises d'avantage sur le mode de fonctionnement du script, comme par exemple :

- Faut-il choisir toutes les images manuellement avant de lancer le traitement ?
- Le script doit-il travailler avec les images contenues dans un dossier ?
- Les images doivent s'affiche en même temps ou l'une après l'autre ?
- Le choix du fichier est séquentiel ou aléatoire ?
- Faut-il toujours utiliser la même source pour le choix des textes ?

Bref, toutes les infos sur le traitement que tu cherches à faire et de son mode opératoire, après, on verra ensemble quelles peuvent être les meilleures solutions pour ton projet.

Tiens-moi au courant Stp... :)
Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb

#12 Amarok II

Amarok II

    NeoAdmin

  • Administrateurs
  • PipPipPipPipPipPip
  • 1 473 Messages :
  • Configuration:Un petit truc en alu avec un grand rectangle lumineux qui affiche des choses qui bougent quand je chatouille un autre truc en alu, là... tout plat.
  • Sexe:Mystère
  • Localisation:Perpignan, France
  • Passions:MacFr bien sûr !

Posté 17 janvier 2013 - 21:08

Ne jamais copier du code qu'on ne comprend pas. (© Yoda ou un autre)

non, non, ne vous occupez pas de moi, je vois la porte :P

MacBook Pro (13", fin 2012)
8Go RAM - 256Go SSD - 1To HD

Technicien certifié ACMT et plein d'autres trucs...

"On peut voir de bien des façons. On peut être aveugle de bien des façons." (Frank Herbert, Dune)

"Tu ne feras point de machine à l'esprit de l'homme semblable." (Frank Herbert, Dune)


#13 FredoMkb

FredoMkb

    ...bosseigne...

  • Membres
  • PipPipPipPipPipPipPip
  • 2 645 Messages :
  • Configuration:iMac-SowLeopard
  • Sexe:Masculin
  • Localisation:StÉ
  • Passions:À part rien, absolument tout le reste !

Posté 17 janvier 2013 - 21:50

Ne jamais copier du code qu'on ne comprend pas. (© Yoda ou un autre)


D'accord de chez d'accord ! :up:

Enfin, le copier, c'est déjà contestable... mais l'utiliser, c'est presque suicidaire :huh:

;)
Fredo
"Un pas à la fois me suffit..." Gandhi
"Il n'y a rien de plus inutile que quelque chose d'inexistant. Il n'y a rien de plus utile que de tenter de le créer." FredoMkb




1 utilisateur(s) en train de lire ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)