# [AppleScript] Lancer un enregistrement QT



## Didjo (5 Juillet 2006)

Bonjour bonjour !

Je d&#233;bute totallement en AppleScript mais j'ai pas mal de connaissances HTML, PHP, AS, etc..., c'est pourquoi je m'essaye &#224; l'AppleScript...

J'ai un peu consulter iscript.fr mais il n'est pas tr&#232;s riche en explications...

Alors ce que je veux faire c'est lancer QuickTime &#224; une certaine heure, tout les jours, qu'il ouvre un nouveau document d'enregistremen audio et qu'il enregistre...

Pour &#231;a j'ai d&#233;j&#224; tap&#233; ceci :


```
tell application "QuickTime Player"
    activate
    new audio recording
end tell
```
Ce qui ouvre QT et lance un fichier d'enregistrement, mais ne lance pas l'enregistrement...
J'ai vu que pour le lancer il y avait la fonction START mais je ne sais pas du tout commen l'utiliser...
Et surtout comment lancer ce script &#224; une certaine heure...

Si vous pouviez m'aider... Merci !


----------



## Anonyme (5 Juillet 2006)

Didjo a dit:
			
		

> Alors ce que je veux faire c'est lancer QuickTime à une certaine heure, tout les jours, qu'il ouvre un nouveau document d'enregistremen audio et qu'il enregistre...
> 
> Pour ça j'ai déjà tapé ceci :
> 
> ...


Pour lancer un nouvel enregistrement de séquence :

```
tell application "QuickTime Player"
	activate
	new audio recording
	start recording 1
end tell
```
Pour lancer le script au moment voulu, enregistre-le en tant qu'application (sans écran de démarrage) et utilise iCal pour l'exécuter au jour et à l'heure désirés.


----------



## Anonyme (5 Juillet 2006)

Salut.

Après un ( new audio recording ) l'objet devient un ( recording ).
Et tu fais un ( *start* ) pour commencer l'enregistrement.

```
tell application "QuickTime Player"
	new audio recording
	tell front recording to start
end tell
```
Pour arrêter l'enregistrement, tu fais*:* tell front recording to stop*

Pour exécuter le script tous les jours, tu fais un événement dans l'application "iCal".

Pomme + I , pour ouvrir la fenêtre d'information.
Dans répéter, tu sélectionnes "*Tous les jours*".
Dans alarme, tu sélectionnes "*Exécuter un script*".
En dessous de "Exécuter un script " tu choisis ton script.
Après tu modifies le "15 minutes avant" à   "0 minutes avant".

On peut le faire aussi avec l'application  "Cronnix".


----------



## Didjo (6 Juillet 2006)

Merci ! Je vais essayer ça...


----------



## aCLR (4 Octobre 2008)

Salut,

novice en applescript, je cherche à faire de la capture de vidéo avec Quicktime.
Une capture de quelques secondes répétée à intervalles réguliers.

Est-ce que mon code (inspiré par celui du dessus) est juste.


```
tell application "QuickTime Player"
	new movie recording
	tell front recording to start
	duration ()
	tell front recording to stop
	save new movie recording
	in file : /Users/monNOM/Movies/mondossier
	as : mov
end tell
```

Le () sur la ligne _*duration*_ doit-il s'exprimer en secondes ou en images par secondes ?

Et sur la ligne _*as*_, comment faire une numérotation automatique afin de d'enregistrer plusieurs fichiers mov dans le même dossier ?


Dernier point, est-il aisé de faire en sorte qu'il tourne en tâche de fond, sans venir perturber le premier plan de l'écran ? Ainsi qu'une commande de répétition, je ne comprends pas bien le _looping_, à défaut je ferais un événement récurent dans iCal (6 fois par heure, ça peut se faire).





> ()Pour exécuter le script tous les jours, tu fais un événement dans l'application "iCal".
> 
> Pomme + I , pour ouvrir la fenêtre d'information.
> Dans répéter, tu sélectionnes "*Tous les jours*".
> ...


----------



## aCLR (8 Octobre 2008)

J'ai tenté de compiler le code qui suit pensant qu'il m'indiquerait comment définir la durée de l'enregistrement et il a bloqué sur la parenthèse. Pareil avec les crochets.

Mon code n'est pas bon ?


```
tell application "QuickTime Player"
	new movie recording
	tell front recording to start
	duration ()
	tell front recording to stop
	save new movie recording
	in file : /Users/monNOM/Movies/mondossier
	as : mov
end tell
```


----------



## da capo (8 Octobre 2008)

je ne sais quasiment rien de applescript, mais il me semble que duration est une propriété et n'est pas en écriture mais en lecture seule.

Il faut je pense :
- connaitre l'heure actuelle lui ajouter la durée d'enregistrement voulue pour déterminer l'heure de fin d'enregistrement.
1 - lancer l'enregistrement (pas certain que cela fonctionne comme tu l'as écrit)
2 - vérifier si l'heure actuelle a dépassé l'heure limite (boucle avec temporisation pour pas que ça tourne en rond à toute allure)
3 - arrêter l'enregistrement 
4 - passer à l'enregistrement.

ps : plutôt que réinventer la roue, il doit exister une petite application qui fait ça, non ?

ps2 : zut, j'ai pas laissé estomak répondre&#8230;


----------



## aCLR (8 Octobre 2008)

da capo a dit:


> je ne sais quasiment rien de applescript, mais il me semble que duration est une propriété et n'est pas en écriture mais en lecture seule.


Ok, voilà ce qui bloque. 


> Il faut je pense :
> - connaitre l'heure actuelle lui ajouter la durée d'enregistrement voulue pour déterminer l'heure de fin d'enregistrement.
> 1 - lancer l'enregistrement (pas certain que cela fonctionne comme tu l'as écrit)
> 2 - vérifier si l'heure actuelle a dépassé l'heure limite (boucle avec temporisation pour pas que ça tourne en rond à toute allure)
> ...


Le point 1 est juste, ça ne fonctionne pas du tout. 


> ps : plutôt que réinventer la roue, il doit exister une petite application qui fait ça, non ?


Je vais faire une petite recherche 


> ps2 : zut, j'ai pas laissé estomak répondre


Mais tu m'as bien aidé.


----------



## aCLR (8 Octobre 2008)

Grâce à ce post, j'ai trouvé deux applications shareware à même de le faire.

EvoCam et Iris.

Je vais donc tester ça à défaut de faire un applescript


----------



## aCLR (8 Octobre 2008)

Je viens d'en trouver une autre d'appli,  BTVpro



Quand à l'applescript, ça avance. Avec le code suivant, j'appelle, j'ouvre et j'enregistre un fenêtre vidéo.



```
tell application "QuickTime Player"
	activate
	new movie recording
	tell front recording to start
end tell
```

Il faut encore que j'insère la durée et le stop.


----------



## da capo (8 Octobre 2008)

pour la durée, tu peux créer un timestamp avec un script shell


```
set dureeensecondes to 300
set heuredefin to (do shell script "date +%s") + dureeensecondes
```

on peut surement faire plus "propre" mais bon ça marche

il ne reste plus qu'à comparer heuredefin avec l'heure courante de façon cyclique (toutes les 10/15 s) pour déclencher la fin de l'enregistrement et la sauvegarde.


----------



## Anonyme (9 Octobre 2008)

Bonjour,



aCLR a dit:


> Salut,
> 
> novice en applescript, je cherche à faire de la capture de vidéo avec Quicktime.
> Une capture de quelques secondes répétée à intervalles réguliers.


Voici le script qui fait cela.

```
property dossierdestination : "/Users/monNOM/Movies/mondossier" -- le chemin du dossier doit être un dossier existant.

on run
	tell application "System Events" to exists process "QuickTime Player"
	if the result then tell application "QuickTime Player"
		close documents saving no
		quit
	end tell
	if (do shell script "/usr/bin/defaults read com.apple.quicktimeplayer CapturePreferenceDefaultSaveToLocation") is not dossierdestination then
		do shell script "/usr/bin/defaults write com.apple.quicktimeplayer CapturePreferenceDefaultSaveToLocation " & quoted form of dossierdestination
	end if
end run

on idle
	tell application "QuickTime Player"
		if not (exists recording 1) then
			new movie recording
			start first recording
			set duree to 60 -- durée de l'enregistrement en secondes, modifie le temps  selon vos besoins.
		else
			stop first recording
			close front document saving no
			set duree to 600 -- =10 minutes, temps d'attente en secondes avant de lancer un nouvel enregistrement, modifie le temps  selon vos besoins.
		end if
	end tell
	return duree
end idle
```

"*Quicktime playe*r" enregistre et numérote automatiquement le fichier *.mov* dans le dossier désiré, donc ce n'est pas nécessaire de le faire par script.

Enregistre le script comme *application* et tu coches "Rester en arrière plan", décoches "Ecran de démarrage".
La seule différence dans *iCal* est l'alarme : C'est "*Ouvrir un fichier*" au lieu de "*Exécuter un script*".

Oui, le script fonctionne en tache de fond sauf que l'application est au premier plan lors de son lancement.

La syntaxe fonctionne pour  les dernières versions de *Quicktime*.
Pour une version plus ancienne, il se peut que la syntaxe 
	
	



```
close front document saving no
```
, ne fonctionne pas, il faut le remplacer par  close front movie saving no


----------



## aCLR (9 Octobre 2008)

Mac_Jac a dit:


> Bonjour,
> 
> 
> Voici le script qui fait cela.
> ...


 Ça marche à merveille :style:

Voilà une heure que cela tourne en tâche de font

Comme je souhaite enregistrer à intervalle fixe (15h00, 15h10, 15h20), je pense qu'il faut pour une durée d'enregistrement de 10 secondes un intervalle de 590 secondes.

Parce que pour le moment, avec 600 secondes cela décale l'enregistrement de 10 secondes.



> "*Quicktime playe*r" enregistre et numérote automatiquement le fichier *.mov* dans le dossier désiré, donc ce n'est pas nécessaire de le faire par script.


J'ai vu 



> Enregistre le script comme *application* et tu coches "Rester en arrière plan", décoches "Ecran de démarrage".
> La seule différence dans *iCal* est l'alarme : C'est "*Ouvrir un fichier*" au lieu de "*Exécuter un script*".
> 
> Oui, le script fonctionne en tache de fond sauf que l'application est au premier plan lors de son lancement.


Je ne passe pas par iCal.
Il fonctionne très bien comme cela. 


> La syntaxe fonctionne pour  les dernières versions de *Quicktime*.
> Pour une version plus ancienne, il se peut que la syntaxe
> 
> 
> ...


J'ai la dernière version de QuickTime (version 7.5.5)

Merci beaucoup Mac_Jac


----------

