# Premier Script sous MacOs Leopard



## corrs78 (16 Août 2009)

Ayant switché cette année, je n'ai que peu de connaissance en ce qui concerne les scripts sous Macos. Je developpe qq programme sous Windows (Vbscript, Autoit...)

là j'aurais besoin d'automatiser quelques opérations manuelles :

je dois lancer plusieurs commandes et un logiciel pour streamer de la video sur JustinTV.
Dans une de ces commandes j'aurais besoin de pouvoir choisir une variable avant de générer et executer cette commande shell dans le terminal.

Dans l'ordre :
1-> selection du chemin de ma variable (video source)
2-> Executer une application .app précise (quelle sera la commande ?)
3-> Executer
	
	



```
/Applications/VLC.app/Contents/MacOS/vlc "/Users/steeve/Movies/Hauppauge_HD_PVR/[COLOR="Red"]ma_variable[/COLOR]" -vvv input_stream --sout='#duplicate{dst="transcode{venc=x264,vcodec=h264,vb=640,width=320,height=240,fps=15,acodec=mp4a,ab=128,channels=2,samplerate=44100}:rtp{dst=127.0.0.1,port=1234,sdp=file:///Users/steeve/Movies/vlc.sdp}"}'
```
4 -> Executer une 2e commande (constante) : 
	
	



```
jtvlc.app/Contents/MacOS/jtvlc corrs78 /Users/steeve/Movies/vlc.sdp
```

Concréètement j'aimerais un petit script qui me propose de saisir/selectionner quel fichier streamer et ensuite execute automatiquement les commandes.

Merci à vous.


----------



## Didier Guillion (16 Août 2009)

Oui, et ? 
Tu en es où ?

Tu as essayé en AppleScript ?

Cordialement


----------



## corrs78 (16 Août 2009)

Didier Guillion a dit:


> Oui, et ?
> Tu en es où ?
> 
> Tu as essayé en AppleScript ?
> ...


bha non, je vois pas du tout comment le réaliser. A vrai dire je n'ai pas de notion en ce qui concerne les commandes shell sur Mac. Je maitrise les Batch sur windows c'est tout.


----------



## corrs78 (17 Août 2009)

Personne pour un petit coup de main ?

j'ai récupéré de la doc sur le web...je me lance dans l'apprentissage d'apple script.


----------



## ntx (17 Août 2009)

La commande pour ouvrir une application ou un document d'une application est "open".
"man open" pour le mode d'emploi.


----------



## corrs78 (17 Août 2009)

ntx a dit:


> La commande pour ouvrir une application ou un document d'une application est "open".
> "man open" pour le mode d'emploi.


ok, merci là je vais pouvoir avancer... j'essai ça dès ce soir.


----------



## Didier Guillion (17 Août 2009)

corrs78 a dit:


> ok, merci là je vais pouvoir avancer... j'essai ça dès ce soir.



Pour lancer une commande shell depuis AppleScript c'est 'do shell script'

http://developer.apple.com/technotes/tn2002/tn2065.html

Cordialement


----------



## corrs78 (24 Août 2009)

bon j'avance à petit pas. Maintenant j'ai un problème, je n'arrive pas à formater ma commande pour qu'elle soi executée. La commande est remplie de paramètre et contient plein de cotes et guillemets, ce qui pose problème.

```
set video to choose file
set video to the POSIX path of video

tell application "Terminal"
    do shell script "/Applications/VLC.app/Contents/MacOS/vlc " & video & "" -vvv input_stream --sout='#duplicate{dst="transcode{venc=x264{keyint=20,hurry-up,vt=80000},vcodec=h264,vb=600,width=320,height=240,fps=15,threads=2,acodec=mp4a,ab=128,channels=2,samplerate=44100}:rtp{dst=127.0.0.1,port=1234,sdp=file:///Users/steeve/Movies/vlc.sdp}"}'
end tell
```
le but est de récupérer le chemin d'une video dans une variable afin de formater la commande de stream VLC. seulement à partir de "-vvv" ça pose problème à AppleScript.

(pour info, la commande passe très bien si je l'execute dans le terminal)

merci pour votre aide :rose:


----------



## Diablovic (24 Août 2009)

ça ressemble à une mauvaise utilisation des doubles quotes.
ex: pourquoi le "" ? A part que ca fonctionne dans le terminal ?
Je me serais d'avantage attendu à quelque chose du genre (sans garantie, je fais pas d'applescript):
do shell script "/Applications/VLC.app/Contents/MacOS/vlc " & video & "-vvv input_stream --sout='#duplicate{dst=\"transcode{venc=x264{keyint=20,hurry-up,vt=80000},vcodec=h264,vb=600,width=320,height=240,fps=15,threads=2,acodec=mp4a,ab=128,channels=2,samplerate=44100}:rtp{dst=127.0.0.1,port=1234,sdp=file:///Users/steeve/Movies/vlc.sdp}\"}'"

Regarde donc la réponse à "Q: I need to put double quotes and backslashes in my shell command, but AppleScript gives me a syntax error when I try." dans le lien donné par Didier Guillion.


----------



## ceslinstinct (24 Août 2009)

corrs78 a dit:


> bon j'avance à petit pas. Maintenant j'ai un problème, je n'arrive pas à formater ma commande pour qu'elle soi executée. La commande est remplie de paramètre et contient plein de cotes et guillemets, ce qui pose problème.
> 
> ```
> set video to choose file
> ...


Il faut que le premier et dernier caractère de la commande do shell script soit "

Et tous les " qui se trouve dans ce code précédés par un anti-slash \"\", etc&#8230;

La compilation doit être alors accepté.

*PS:* AppleScript demande souvent le chemin complet:

"Volumes/monDD/Applications/VLC.app/
@+


----------



## corrs78 (24 Août 2009)

Super merci , ça fonctionne.
....

maintenant j'ai une 2e commande à lancer, seulement il ne veut pas car la 1ère est en cours d'execution donc applescript ne passe pas à la suite du programme. Comment lancer les 2 commandes indépendament dans un seul et meme script.
?
Merci


----------



## ceslinstinct (25 Août 2009)

corrs78 a dit:


> Super merci , ça fonctionne.
> ....
> 
> maintenant j'ai une 2e commande à lancer, seulement il ne veut pas car la 1ère est en cours d'execution donc applescript ne passe pas à la suite du programme. Comment lancer les 2 commandes indépendament dans un seul et meme script.
> ...


Bonjour

Pour faire simple teste, avec une temporisation entre les 2 lignes de code.
Tu exécutera la première ligne puis la suivante.

delay 5 (5 secondes)

@+


----------



## corrs78 (25 Août 2009)

Je vous donne mon code, cela aidera peut-etre d'autres novices en AppleScript comme moi, et après tout c'est le but d'un forum : s'entraider. 


```
set video to choose file
set video to the POSIX path of video

tell application "Terminal"
	ignoring application responses
		do script with command "/Applications/VLC.app/Contents/MacOS/vlc " & video & " -vvv input_stream --sout='#duplicate{dst=\"transcode{venc=x264{keyint=20,hurry-up,vt=80000},vcodec=h264,vb=640,scale=0.5,width=320,height=240,fps=15,threads=2,acodec=mp4a,ab=128,channels=2,samplerate=44100}:rtp{dst=127.0.0.1,port=1234,sdp=file:///Users/steeve/Movies/vlc.sdp}\"}'"
		
		delay 5
		do script with command "/Users/steeve/jtvlc.app/Contents/MacOS/jtvlc corrs78 live_6863729_EPiAQ9b3 /Users/steeve/Movies/vlc.sdp"
		
	end ignoring
end tell
```

maintenant j'aimerais bien qu'une fois le streaming achevé, que les 2 fenetres Terminal et Vlc se ferment.
Ou alors j'aurais voulu executer ces commandes en "mode silence" mais j'ai essayé avec :
do shell script mais cela ne fonctionne plus.

Merci


----------



## ceslinstinct (25 Août 2009)

corrs78 a dit:


> Je vous donne mon code, cela aidera peut-etre d'autres novices en AppleScript comme moi, et après tout c'est le but d'un forum : s'entraider.
> 
> maintenant j'aimerais bien qu'une fois le streaming achevé, que les 2 fenetres Terminal et Vlc se ferment.
> Ou alors j'aurais voulu executer ces commandes en "mode silence" mais j'ai essayé avec :
> ...


Tu veut les quitter?


```
Tell application "Terminal" to quit
Tell application "vlc" to quit[code]

@+
```


----------



## corrs78 (25 Août 2009)

ceslinstinct a dit:


> Tu veut les quitter?
> 
> 
> ```
> ...


----------



## ceslinstinct (25 Août 2009)

corrs78 a dit:


> ok, mais comment faire pour attendre que le stream arrive à sa fin pour fermer ces trois fenetres.


Deux solutions:

Des temporisations un peut longues (totalement nulles).

La deuxième que je testerais à ta place c'est une boucle *Repeat* qui surveille que le fichier est terminé en enregistrement et passe au code suivant.

@+


----------



## corrs78 (3 Septembre 2009)

j'ai de nouveau une question, est ce que l'on peut "donner une priorité"  à l'execution du script ou d'une des commandes lancée avec do script with command ?

j'ai besoin que le script s'execute en priorité "haute". 
merci


----------



## corrs78 (12 Septembre 2009)

cette commande fonctionne :
do script with command "/Users/steeve/jtvlc.app/Contents/MacOS/jtvlc corrs78 live_6863729_XXX /Users/steeve/Movies/vlc.sdp"

mais j'aimerais ne pas voir le terminal alors j'ai essayé cette commande :
do shell script "/Users/steeve/jtvlc.app/Contents/MacOS/jtvlc corrs78 live_6863729_XXX /Users/steeve/Movies/vlc.sdp"

mais il visiblement je n'ai pas de retour et ça ne fonctionne pas.

vous pouvez m'aiguiller ?

merci


----------



## ceslinstinct (12 Septembre 2009)

corrs78 a dit:


> cette commande fonctionne :
> do script with command "/Users/steeve/jtvlc.app/Contents/MacOS/jtvlc corrs78 live_6863729_XXX /Users/steeve/Movies/vlc.sdp"
> 
> mais j'aimerais ne pas voir le terminal alors j'ai essayé cette commande :
> ...


Bonjour

Teste ça pour voir avec nomVolume par le nom du DD

do shell script "*Volumes/nomVolume*/Users/steeve/jtvlc.app/Contents/MacOS/jtvlc corrs78 live_6863729_XXX /Users/steeve/Movies/vlc.sdp"

Si tu as lue le *PS* du message 10, j'indique qu'AppleScript aime bien d'avoir les chemins complets.

En mode Mac le chemin est lue comme ça:
"nomVolume:Users:steeve:jtvlc.app:Contents:MacOS:jtvlc corrs78 live_6863729_XXX"

En mode UNIX c'est comme ça le plus souvent:
"Users/steeve/jtvlc.app/Contents/MacOS/jtvlc corrs78 live_6863729_XXX"

@+


----------



## corrs78 (13 Septembre 2009)

ça ne fonctionne toujours pas, et comme j'ai pas de retour, je ne sais pas ce qui ne va pas. Je pense que ce sont  les "espaces" qui posent soucis à "Do shell Script"

merci qd meme


----------



## ceslinstinct (13 Septembre 2009)

corrs78 a dit:


> ça ne fonctionne toujours pas, et comme j'ai pas de retour, je ne sais pas ce qui ne va pas. Je pense que ce sont  les "espaces" qui posent soucis à "Do shell Script"
> 
> merci qd meme


Bonjour

Le terminal je connaît pas.

Ce que je ne comprend pas c'est ça: 
	
	



```
do shell script "/Users/steeve/jtvlc.app/Contents/MacOS/jtvlc corrs78 live_6863729_XXX /Users/steeve/Movies/vlc.sdp"
```

2 chemins qui se suivent sans indiquer le résultat qu'on attend du deuxième chemin.


```
do shell script "/Users/steeve/jtvlc.app/Contents/MacOS/jtvlc corrs78 live_6863729_XXX [B][SIZE="4"]??????[/SIZE][/B] /Users/steeve/Movies/vlc.sdp"
```

@+


----------



## corrs78 (13 Septembre 2009)

ceslinstinct a dit:


> Bonjour
> 
> Le terminal je connaît pas.
> 
> ...


Ca c'est ma commande "jtvlc" ( un streamer vlc) ell doit etre formatée ainsi, je pense que je ne peut pas la changer, d'ailleurs elle fonctionne trés bien dans le Terminal


----------



## ceslinstinct (13 Septembre 2009)

corrs78 a dit:


> Ca c'est ma commande "jtvlc" ( un streamer vlc) ell doit etre formatée ainsi, je pense que je ne peut pas la changer, d'ailleurs elle fonctionne trés bien dans le Terminal


Je doute que le Terminal et AppleScript utilisent le même style de code.

Donc je ne peu plus être d'aucune aide pour toi.

Si l'Anglais est une langue très utilisée par toi, pose la question sur ce site: http://macscripter.net/

Cordialement


----------

