• Bonjour Visiteur. Bienvenue sur les nouveaux forums de MacGeneration. La peinture est encore fraiche, quelques boulons doivent être resserrés, plus d’informations demain !

Très débutant AppleScript à questions

Nathalex

Membre d’élite
Club MacG
8 Juin 2001
2 380
253
46
Dans l'Ain, pas trop loin de Lyon
Salut,
J'ai touché pour la première fois à AppleScript ce soir en tentant de scripter QuickTime.
J'ai des DVD musicaux que je veux mettre sur mon iPod et donc faire des mp3. Avec les outils usuels, je me retrouve avec un long mp3 de la durée de mon concert que je veux donc couper avec QuickTime Pro.

Le script que j'ai bidouillé demande le nombre de pistes, la "date" de la fin de chaque piste, copie, colle et sauve. Sauf que :
- existe-t-il des boites de dialogue avec deux champs textes ? Là, je suis obligé d'en faire une pour les minutes et une pour les secondes, je trouve que c'est pas terrible
- comment préciser le chemin de sauvegarge de mon fichier en termes Unix (avec les /) et pas avec les : usuels du Mac ? J'ai l'impression que je pourrais faire un truc du style ~/Desktop qui serait valable sur mes différentes machines, en étant indépendant de mon nom d'utilisateur...

J'aurais sûrement d'autres questions ensuite mais je commencerai par celles-là


Merci d'avance
 

Nathalex

Membre d’élite
Club MacG
8 Juin 2001
2 380
253
46
Dans l'Ain, pas trop loin de Lyon
Aïe, c'est la que l'on voit le novice : incapable de donner les infos pertinentes !


J'utilise juste l'éditeur. C'est vraiment différent Apple Script Studo ?
 

Didier Guillion

Membre d’élite
Club MacG
20 Juillet 2001
3 244
164
57
Toulouse
www.myriad-online.com
Bonjour,

Oui, car Apple Script Studio te permet relativement aisèment de créer une interface élaborée en utilisant Cocoa.

Par exemple, un dialogue avec plusieurs champs de saisie, des cases à cocher, des boutons, des listes, des images, etc...
Ce qui répondrait à une des tes questions ci-dessus.

Sinon la structure du langage reste la même.

Cordialement
 

ionah

Membre junior
21 Novembre 2002
78
0
AS Studio demande plus d'apprentissage.

Ne peux-tu pas saisir l'heure sous la forme "10:30" dans une seule zone de dialogue ? Quicktime te demande une heure ou un entier (integer) ?

Tu peux aussi utiliser l'instruction 'set AppleScript's text item delimiters to' pour récupérer les chiffres de chaque côté du ":".

Sinon il y a des 'OSAX' (complément de pilotage) comme "24U Appearance osax" qui te permettent d'interfacer Applescript avec peu de connaissances recquises.

Montre-nous ton script, on pourra mieux t'aider.
 

Nathalex

Membre d’élite
Club MacG
8 Juin 2001
2 380
253
46
Dans l'Ain, pas trop loin de Lyon
ionah a dit:
Ne peux-tu pas saisir l'heure sous la forme "10:30" dans une seule zone de dialogue ? Quicktime te demande une heure ou un entier (integer) ?
Tu peux aussi utiliser l'instruction 'set AppleScript's text item delimiters to' pour récupérer les chiffres de chaque côté du ":".
Intéressant ! Il faudrait que je regarde ça ! Parce que la "fonction" select que j'utilise veut un entier...

Montre-nous ton script, on pourra mieux t'aider.
Un script préliminaire d'un scripteur débutant ?
Tu l'auras voulu !


display dialog "Combien de pistes sur le disque" default answer "10"
set Nbpist to text returned of the result
set deb to 1
tell application "QuickTime Player"
activate
repeat with compt from 1 to Nbpist
display dialog "Minutes de fin du morceau " & compt default answer "" buttons {"OK", "Annuler"} default button 1
set minfin to text returned of the result
display dialog "Secondes de fin du morceau" default answer "" buttons {"OK", "Annuler"} default button 1
set secfin to text returned of the result
set fin to (60 * minfin + secfin) * 600
select movie 1 at deb to fin
set deb to fin + 1
copy movie 1
make new movie
paste movie 1
set nomfich to "Piste " & compt
save movie 1 in file nomfich as self contained
close movie 1
end repeat
end tell
 

ionah

Membre junior
21 Novembre 2002
78
0
Ton script n'est pas si mal. Tu es trop modeste.

Puisque QT te demande un 'integer', voici une solution pour faire avec un seul dailogue:

-----------------
set oldDelims to AppleScript's text item delimiters
set AppleScript's text item delimiters to {"h"}
set x1 to text returned of (display dialog "Fin du morceau" default answer "1h30" buttons {"OK", "Annuler"} default button 1)
set minfin to (text item 1 of x1) * hours
set secfin to (text item 2 of x1) * minutes
set fin to (minfin + secfin)
set AppleScript's text item delimiters to oldDelims
-----------------

Prends l'habitude de "nommer" tes variables avec des termes qui ne seront jamais en conflit avec aucun 'terme' d'aucune appli ou d'AS soi-même. ex: myFin, theFin ou autre.
 

Nathalex

Membre d’élite
Club MacG
8 Juin 2001
2 380
253
46
Dans l'Ain, pas trop loin de Lyon
Je n'ai pas eu le temps de creuser davantage la question aujourd'hui mais merci infiniment tout de même !!

Et pour les chemins de fichier, on est obligés de passer par :
Macintosh HD:users:.....

On peut pas faire un truc du style
~/Desktop ?

Et enfin, le fin du fin serait de lancer le script en glissant mon fichier Quicktime original sur l'icone du script. Si j'ai bien compris la terminologie, ce serait un droplet mais en pratique, ça marche comment ?

En tout cas, je découvre un nouveau monde bien passionnant. Si au moins j'avais des idées !!!!
 

ionah

Membre junior
21 Novembre 2002
78
0
Ne t'inquiètes pas, les idées te viendront vite.

On ne peut pas passer un chemins d'accès sous la forme unixienne à un script AppleScript.
La commande 'Posix path' est une propriété d'élément (dossier, fichier, volume, etc.). Elle permet, par exemple, d'envoyer au Terminal une commande qui contient un chemin d'accès sous la forme qu'il est capable d'interpréter.

Pour les chemins d'accès, une première chose à faire est de se référer au dictionnaire des 'Standard additions'. La commande 'path to' te permet de récupérer le chemin de beaucoup de dossiers.
Comme c'est une commande venant d'une OSAX, tu peux t'en servir à n'importe quel endroit de ton script.
Un exemple :
set myPath to path to desktop -- renvoi le bureau de l'utilisateur actuel
ou bien :
set myPath to path to scripting additions from local domain as alias -- renvoi le dossier des compléments de pilotage du dossier 'Bibliothèque' au niveau 'local'.

Et si les dossiers référencés dans la commande 'path to' ne te suffisent pas, tu peux télécharger un petit script sur le site MacScripter.net (dans la section "ScriptBuiders") qui s'appelle "Show Path Codes ". Tu y trouveras plus de 80 chemins différents.
le site : http://macscripter.net/
le script : http://files.macscripter.net/scriptbuilders/ScriptTools/Show_Path_Codes.sit

Pour ce qui est du 'droplet', ça fonctionne de la manière suivante :
- Tu dois mettre dans ton script un 'gestionnaire' ('handler' in english) 'on open'.
Voici un exemple :
on open listFile
repeat with aFile in listFile
set aliasFile to aFile as alias
display dialog name of (info for aliasFile)
end repeat
end open

- Puis il te faut 'enregistrer sous' ton script en tant qu'application.

Voilà. J'espère avoir été complet.