Premier Script sous MacOs Leopard

corrs78

Membre actif
9 Janvier 2009
147
2
45
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
Bloc de code:
 /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) :
Bloc de code:
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.
 
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.
 
La commande pour ouvrir une application ou un document d'une application est "open".
"man open" pour le mode d'emploi.
 
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.
Bloc de code:
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:
 
ç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.
 
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.
Bloc de code:
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:
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…

La compilation doit être alors accepté.

PS: AppleScript demande souvent le chemin complet:

"Volumes/monDD/Applications/VLC.app/
@+
 
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
 
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
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)

@+
 
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.

Bloc de code:
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
 
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 :
do shell script mais cela ne fonctionne plus.

Merci
Tu veut les quitter?

Bloc de code:
Tell application "Terminal" to quit
Tell application "vlc" to quit[code]

@+
 
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.

@+
 
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
 
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
 
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
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"

@+
 
ç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