AppleScript iTunes pour PHP

Combo

Membre actif
11 Octobre 2004
383
8
44
Le Gosier (Guadeloupe)
Salut.

Je suis en train de monter mon site perso dans lequel j'aimerais y inclure un petit module "gadget" qui affiche ce que je suis en train d'écouter en ce moment dans iTunes avec si possible l'affichage de l'artwork.

Il faut donc que je récupère le nom de l'artiste et le nom de la piste ainsi que la pochette de l'album pour les envoyer à un script PHP présent sur mon serveur Web.

Pour le PHP pas de blème, mais pour l'AppleScript je rame un peu.

Une idée de comment je pourrais faire cela?

Merci beaucoup! :up:
 
Salut.

Je connais très bien le site que tu m'as indiqué, ça a été une base pour commencer. Ensuite j'ai aussi découvert l'excellent site de Doug Adams sur les AppleScripts pour iTunes. J'ai même fait appel à son aide mais il est assez occupé, ou peut-être que mon script ne l'intéresse pas... :p

Malheureusement, je cherche encore donc.

En bidouillant des scripts récupérés, je pense pouvoir obtenir le nom de l'artiste ainsi que le nom de la piste. Par contre, ça reste un mystère quant à l'artwork et la marche à suivre pour envoyer ce joli monde à mon script PHP.

Merci de votre aide! :zen:
 
Je pense que tu peux t'inspirer de ce script pour enregistrer dans un dossier de ton choix l'image de la pochette du morceau en cours. J'imagine qu'ensuite tu sauras quoi en faire. ;)

Tu noteras qu'AppleScript permet de récupérer la plage de données d'une image d'un morceau d'iTunes, mais pas l'image elle-même. Il convient donc de l'enregistrer dans un nouveau fichier avant de pouvoir l'utiliser. De même fais bien attention : chaque morceau peut contenir plusieurs images. C'est pourquoi, par exemple, pour n'obtenir que la première image du morceau en cours, il convient d'invoquer "artwork 1 of current track" (sans le "1" cette commande produit une erreur). J'espère avoir été assez clair. ;)
 
Merci pour vos réponses.

Etant donné que je gère et je lis ma musique avec iTunes, je préfère adopter la solution AppleScript/OS intégré et ne pas rajouter de greffons pour arriver à mes fins. Je voudrais que la solution finale soit totalement transparente, avec un petit soft autonome facilement activable/désactivable.

J'ai étudié l'AppleScript pour enregistrer un artwork dans un dossier et en effet ça peut m'aider. J'ai lu dans ce script qu'il est possible d'exécuter un shell mais je ne connais pas la routine pour transmettre mes variables et mon fichier JPG à mon PHP. Aussi, je ne trouve pas d'évènement "onChange" ou similaire qui déclencherait l'exécution du script à chaque fois qu'un morceau est lancé dans iTunes.

J'ai commandé un bouquin de programmation AppleScript récemment mais si quelqu'un est doué en shell/AppleScript et s'il désire m'aider, qu'il se fasse connaitre! Les infos seront bien entendu partagées ici et je mettrai à dispo mon script PHP une fois rédigé. ;)

Merci beaucoup! :zen:
 
Combo a dit:
Merci pour vos réponses.

Etant donné que je gère et je lis ma musique avec iTunes, je préfère adopter la solution AppleScript/OS intégré et ne pas rajouter de greffons pour arriver à mes fins.

lastfm est parfaitement adapté à une lecture via itunes.... mais tu fais comme tu veux ;)
 
Salut.

J'ai reçu mon bouquin sur la programmation en AppleScript et j'ai du nouveau par rapport à ma demande mais ça me fait partir dans d'autres domaines.

Il est tout à fait possible de réaliser ce que je veux faire. AppleScript possède un mécanisme de communication avec les services Web s'ils sont en SOAP ou s'ils utilisent le XMLRPC.

Par exemple, tapez ceci dans l'éditeur de script et exécutez :
Bloc de code:
tell application "http://superhonker.userland.com/rpc2"
   call xmlrpc {method name:"examples.getStateName", parameters:30} -- affiche "New Jersey"
end tell

Ce service est simple et accèpte 2 paramêtres : le nom de la méthode à appeler et le numéro de l'état aux USA à afficher. Mais il retourne une réponse alors que moi j'aimerais soumettre des infos concernant la piste en cours dans iTunes et que je récupère sans problème sous forme de liste {nom_de_lartiste, nom_de_morceau, nom_dalbum, nom_dun_chien :rateau: , etc...} pour les enregistrer dans une base MySQL.

PHP5 possède l'extension RPC en standard. J'ai trouvé des infos là-dessus très convaincante expliquant l'avantage de cette techno mais pas de script en pratique pour réaliser un tel service.

Je relance donc ce post pour savoir si quelqu'un pouvait m'éclairer sur ce point.

Aussi, je ne trouve pas l'évènement déclenché par iTunes lorsqu'un morceau est terminé et qu'un suivant est lu. Est-ce un AppleEvent? Si oui, comment savoir lequel et comment l'intercepter?

Merci beaucoup! :zen:
 
Salut.

Je suis toujours à la recherche d'infos concernant l'envoie de mes données récupérées sous forme de liste en AppleScript vers mon script PHP pour enregistrement dans une base de données.

Si quelqu'un a de l'info là-dessus ça serait super de m'en faire part. Merci beaucoup!
 
Combo a dit:
Salut.

Je suis toujours à la recherche d'infos concernant l'envoie de mes données récupérées sous forme de liste en AppleScript vers mon script PHP pour enregistrement dans une base de données.

Si quelqu'un a de l'info là-dessus ça serait super de m'en faire part. Merci beaucoup!
tu peux pas écrire un fichier contenant tes données avec AppleScript dans /tmp et le faire lire par PHP ? Ou ecrire ce fichier et faire un wget sur l'url de ton script d'importation avec les bonnes données en POST ou en GET ? Y'a aussi un autre moyen, un peu grouik à mon avis, c'est de créer des variables d'environnement. Ou encore les paramètres sur la ligne de commande. Ou SOAP/ XMLRPC si t'as vraiment envie de sortir l'artillerie lourde.

ex:
- recup des données iTunes via Applescript
- ecriture de /tmp/itunesdata.txt ou creation des variables d'environnement.
- lancer dans ton AppleScript de ~/exportation.php
- dans exportation.php, tu lis ton fichier /tmp/itunesdata.txt ou tes vars d'environnement.
- toujours dans exportation.php, tu fais tous les traitements nécessaires en local, si ton serveur web est sur ta machine. Si c'est sur un serveur distant, tu te crées un script importation.php sur le serveur distant qui sera appelé via curl ou wget par exportation.php sur ta machine locale.
- exportation.php se finit, tu fais le menage, et l'AppleScript se finit.

on doit même pouvoir se passer de exportation.php et tout faire avec l'applescript et importation.php sur le serveur distant (via un script custom ou via SOAP et XMLRPC comme le propose un message précédent). Je ne sais pas si cela vaut vraiment le coup par contre.
 
En fait j'ai pas mal avancé depuis mon dernier message et j'arrive à poster toutes mes infos vers un PHP de mon serveur web grace à une commande de CURL dans mon applescript.

Il ne me reste plus qu'à trouver la commande/syntaxe exacte pour uploader l'artwork mais je lute un peu comme expliqué ici. Je n'arrive pas à exécuter la commande ftp put dans mon applescript.

Si quelqu'un peut m'aider ça serait super sympa. Merci!
 
Salut.

Après quelques recherches, je suis tombé sur une doc qui explique que ce n'est pas possible d'utiliser la commande FTP en AppleScript et qu'il vaut mieu utiliser CURL à la place.

J'ai donc adapté mon code en fonction comme ceci :

set artwork_folder to "/Users/Naico/Desktop/Temporaire/mdn/" as string
set artwork_file to "red_hot_chili_peppers-stadium_arcadium.jpg\0\0b\0\0Š XîË\0\0\0\0 XÛ°‹€ S¿ ^·À\0\0\0\0 ]Apagestarttime\0ofollow">\0‹¢*\0\0">
ÝÆ[ VQ€‹¢*\0\0 <mode=hybrid&t=78922">Choisir le mode hybride</a></td>
\0g\0x \0\0\0\0\0\0\0\0 \0 <\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \Ê \0\0\0\0 \ÿp\0\0\0 Xî Xèp\0\0\0G\0\0Š'2503885568b8d7da6eb27dbbe9563bf8'\0wthread.php(1916) : eval()'d code\0/>\0‹¢*\0\0 -\0ì‹ Vf ^¿Ð\0\0lt\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 ]¡`\0\0\0\0\0\0\0
Xé0{\0\0\0\0Ÿ\0 <p=889981&mode=threaded#post889981">C
 
Bon je retape mon message car ça bug sévère ci-dessus...

Salut.

Après quelques recherches, je suis tombé sur une doc qui explique que ce n'est pas possible d'utiliser la commande FTP en AppleScript et qu'il vaut mieu utiliser CURL à la place.

J'ai donc adapté mon code en fonction comme ceci :

set artwork_folder to "/Users/Naico/Desktop/Temporaire/mdn/" as string
set artwork_file to "red_hot_chili_peppers-stadium_arcadium.jpg
 
Bon ça part en ******* ce truk... Macgé arrétez de tout bidouiller là! :)

Bon je retape mon message car ça bug sévère ci-dessus...

Salut.

Après quelques recherches, je suis tombé sur une doc qui explique que ce n'est pas possible d'utiliser la commande FTP en AppleScript et qu'il vaut mieu utiliser CURL à la place.

J'ai donc adapté mon code en fonction comme ceci :

set artwork_folder to "/Users/Naico/Desktop/Temporaire/mdn/" as string
set artwork_file to "red_hot_chili_peppers-stadium_arcadium.jpg