Précédent   Forum Mac > Création sur Mac - iLife et Pro > Développement sur Mac



Développement sur Mac XCode, Cocoa et Carbon, AppleScript ou Java ; le forum des développeurs Mac.

Publicité

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 23/05/2010, 23h15
Applescript "genre dans itunes" : 2 "bugs"
  #1
two
Membre émérite
 
Avatar de two
 
Date d'inscription: 06/11/05
Localisation: Namur
Messages: 248
Disco: two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'
Bonjour, j'ai écrit un petit applescript qui me pose encore deux petits soucis...
Code:
tell application "iTunes"
    set mem_genre to "aa"
    repeat while player state is not stopped
        try
            set genre_actuel to (get current track's genre)
            set index_courant to (get index of current track)
            set in_play to current playlist
            if mem_genre is not genre_actuel then
                do shell script "/usr/local/bin/growlnotify -a iTunes  -m iTunesDMX! " & genre_actuel
                set mem_genre to genre_actuel
            else
                set en_cours to ((current track's duration) - player position)
                if (en_cours is less than 20) then
                    delay (en_cours - 8)
                    set genre_suivant to (genre of track (index_courant + 1) of in_play)
                    if genre_suivant is not genre_actuel then
                        do shell script "/usr/local/bin/growlnotify -a iTunes -m iTunesDMX " & genre_suivant
                    end if
                    set mem_genre to genre_suivant
                end if
            end if
            delay 10
        end try
    end repeat
end tell
Cet applescript me permet de vérifier régulièrement le genre du morceau en lecture et ce de manière a engendrer une action au plus tard 10 secondes après le changement de merceau si le changement est fait de manière manuelle et au moment du fondu enchainé si le morceau est lu jusqu'à la fin.
L'action, pour le moment, c'est l'affichage d'un bezel growl (do shell script "/usr/local/bin/growlnotify..."). Par la suite ce sera une intervention sur une application tierce.


Mon premier souci : quand je veux mettre fin à l'exécution du script autrement qu'en arrêtant la lecture sur iTunes; je ne peux le faire avec la fonction quitter et je suis obligé de passer par un forcer à quitter... Un remède docteur?


Mon second, un peu moins génant : la ligne suivante prends le genre du morceau suivant dans la liste de lecture.
Code:
set genre_suivant to (genre of track (index_courant + 1) of in_play)
Comment faire pour qu'il prenne le genre du premier morceau coché après celui en cours de lecture?


Le Try englobant une bonne partie du code est là pour ne pas afficher les messages d'erreurs quand le morceau en lecture est le dernier de la liste (à ce moment là mon script ne m'est de toute façon plus utilité).


infos qui peuvent être utiles: Mac OSX 10.6.3 - Itunes 9.1.1 - Editeur applescript 2.3
--------------------
Citation:
Envoyé par Ma môman
T'es assez grand pour savoir ce que tu fais...

Dernière modification par two ; 23/05/2010 à 23h26.
two est déconnecté   Réponse avec citation
Publicité
Vieux 24/05/2010, 06h42   #2
Mac_Jac
Anonyme
 
Messages: n/a
Bonjour,

La solution pour tes deux soucis:
Code:
property mem_genre : ""

on run
	set mem_genre to "aa"
end run

on idle
	if application "iTunes" is running then
		tell application "iTunes"
			if player state is not stopped then
				try
					set genre_actuel to (get current track's genre)
					set index_courant to (get index of current track)
					set in_play to current playlist
					if mem_genre is not genre_actuel then
						my notification(genre_actuel)
						set mem_genre to genre_actuel
					else
						set en_cours to ((current track's duration) - player position)
						if (en_cours is less than 20) then
							delay (en_cours - 8)
							if running then
								set i to index_courant + 1
								repeat
									tell track i of in_play to if enabled then --**vérifie si le morceau est coché **--
										set genre_suivant to genre
										exit repeat
									end if
									set i to i + 1
								end repeat
							else
								tell me to quit --  iTunes a  quitté
							end if
							if genre_suivant is not genre_actuel then my notification(genre_suivant)
							set mem_genre to genre_suivant
						end if
					end if
				end try
			else
				tell me to quit -- le lecteur est stopped
			end if
		end tell
	else
		tell me to quit -- iTunes a  quitté
	end if
	return 10 -- 10 secondes avant l'execution du prochain idle
end idle

on quit
	continue quit
end quit

on notification(t_genre) --- quoted form : si le genre contient un  ' 
	do shell script "/usr/local/bin/growlnotify -a iTunes  -m iTunesDMX! " & quoted form of t_genre
end notification
Il suffit de cocher "Rester en arrière-plan" lors de l'enregistrement du script au format Application.
  Réponse avec citation
Vieux 24/05/2010, 23h35   #3
two
Membre émérite
 
Avatar de two
 
Date d'inscription: 06/11/05
Localisation: Namur
Messages: 248
Disco: two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'
Testé et adopté
Merci Mac_Jac

Juste une question supplémetaire pour pas mourir con:
j'avais mis dans mon code
Code:
set mem_genre to "aa"
là ou j'aurais pu mettre
Code:
set mem_genre to ""
dès lors n'y a t'il pas redondance dans ces lignes ci?
Code:
property mem_genre : ""

on run
    set mem_genre to "aa"
end run
...
Ne peut on pas mettre ceci?
Code:
on run
    set mem_genre to ""
...
end run
--------------------
Citation:
Envoyé par Ma môman
T'es assez grand pour savoir ce que tu fais...
two est déconnecté   Réponse avec citation
Vieux 25/05/2010, 01h38   #4
Mac_Jac
Anonyme
 
Messages: n/a
Citation:
Envoyé par two Voir le message
dès lors n'y a t'il pas redondance dans ces lignes ci?
Code:
property mem_genre : ""

on run
    set mem_genre to "aa"
end run
...
Toutes les variables qui sont définis dans l'événement "on run" doivent être déclaré au début du script comme (global ou property), parce que chaque fois que le idle est exécutée les variables locales ne seront pas définies.
EX: set mem_genre to "aa" sans une déclaration comme global, à la première exécution du idle (erreur la variable mem_genre n'est pas défini.)

Dans un événement "on idle", même chose pour les variables qui seront utilisées dans la prochaine exécution du 'on idle"


Citation:
Envoyé par two Voir le message
Ne peut on pas mettre ceci?
Code:
on run
    set mem_genre to ""
...
end run
Oui, on peut mettre ceci, mais en gardant la ligne property mem_genre : ""

Si on ne réinitialise pas la variable mem_genre dans le "on run" le contenu de la variable sera celle lors de la fermeture de l'application.
  Réponse avec citation
Vieux 25/05/2010, 10h27   #5
two
Membre émérite
 
Avatar de two
 
Date d'inscription: 06/11/05
Localisation: Namur
Messages: 248
Disco: two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'two ne paye plus sa bouteille de Champ'
ok, compris. Merci a toi
--------------------
Citation:
Envoyé par Ma môman
T'es assez grand pour savoir ce que tu fais...
two est déconnecté   Réponse avec citation

Réponse
Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non





Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 
Outils de la discussion
Modes d'affichage

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Xcode Tools 3.2: Pas d'onglet "AppleScript" dans "inspector" Irving Bartowski Développement sur Mac 7 03/02/2010 16h53
quand je tape "a" cela ecrit "a&", z "zé" et ainsi de suite. ticomis Périphériques et Accessoires 2 24/11/2008 07h01
Comment ouvrir une image genre "console" sur laquelle est inscrit "exec" en haut ? Bobicheted Mac OS X 17 08/01/2007 15h51
Action "Afficher/Masquer" de GoLive impossible dans navigateur "Safari" vivie54 Développement web 0 12/10/2005 10h49
Petit "soucis" avec "le meilleur des astuces" vol.1 de "A vos macs!" Huvelin À propos de MacGeneration 0 27/12/2004 16h06


Fuseau horaire GMT +1. Il est actuellement 00h27.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.6.0
Version française #20 par l'association vBulletin francophone
CNIL N°1009176viagra