Très débutant AppleScript à questions

Nathalex

Membre expert
Club iGen
8 Juin 2001
2 385
254
50
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à
wink.gif


Merci d'avance
 
Aïe, c'est la que l'on voit le novice : incapable de donner les infos pertinentes !
wink.gif


J'utilise juste l'éditeur. C'est vraiment différent Apple Script Studo ?
 
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
 
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.
 
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 !
wink.gif


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