Pour ce nouvel article je vais m’adresser à un public assez restreint puisqu’il est dédié aux utilisateurs de SABnzbd+ (le gestionnaire de téléchargements pour Usenet) et possesseurs de lapin électronique Karotz. Ça peut également intéresser ceux qui souhaitent faire une application Karotz en Python. Aujourd’hui, je vais donc vous montrer comment être notifié de la fin d’un téléchargement sur SABnzbd+ grâce au text-to-speech de Karotz. Je vais vous présenter comment créer une application privée sur le Karotz Lab, créer un script Python pour utiliser l’API Web de Karotz et enfin, configurer SABnzbd+ pour exécuter automatiquement un script Python à la fin d’un téléchargement.
Architecture
Pour ceux qui souhaitent vraiment comprendre le fonctionnement du système. Voici une petite explication. Pour les autres, passez à la section suivante, suivez juste les instructions même si vous ne comprenez pas tout ce que vous faites et ça ira bien :)
Lorsque l’on souhaite faire exécuter une action à un Karotz, il existe deux moyens. Le mode embarqué (hosted), où le code de l’application est installé sur le Karotz ou le mode distant (external), où l’on va passer par une API web qui va piloter le Karotz à distance. En mode embarqué, une action peut être exécutée uniquement grâce aux triggers prévus par le appz store. A savoir, la commande vocale, le déclenchement planifié, le déclenchement répété ou encore à l’aide d’un Nanoz (la puce RFID Karotz). Etant donné ce que l’on souhaite que ce soit SABzbd+ qui déclenche une action sur le Karotz, c’est la méthode distante qui s’impose à nous. Afin d’utiliser l’API web, nous avons besoin d’une API Key et d’une Secret Key. Pour cela, on doit créer un profil d’application dans le Karotz Lab. La Secret Key, comme son nom l’indique, doit rester secrète, on ne peut pas se permettre de l’afficher aux yeux de tout le monde dans un script Python, c’est pour ça que vous devez créer votre propre application Karotz qui restera privée. Afin d’identifier le Karotz cible et de s’assurer que vous avez autorisé l’application à utiliser votre Karotz, vous avez également besoin d’un InstallId. C’est lorsque l’on installe une application sur un Karotz que le Appz Store retourne un InstallId. C’est donc avec ces 3 éléments (API Key + Secret Key + InstallId) que le script Python va pouvoir se connecter à l’API Web afin d’exécuter des actions sur un Karotz ciblé. Etant donné qu’un schéma vaut mieux qu’un long discours, jetez un oeil à ceci :

Création de l’application Karotz
Vous devez d’abord créer votre propre application Karotz sur le Karotz Lab, rendez-vous donc sur http://www.karotz.com/lab/app/dashboard. Lorsque vous créez une application vous devez remplir un petit formulaire. Les champs Application name, Category, Short description, Description, Icon et Ztore sont obligatoires. Au passage, je trouve ça plutôt dommage que l’on ne puisse pas publier son application sur tous les Ztores. Mais bon, dans notre cas, le problème ne se pose pas étant donné que notre application restera privée. Si tout s’est bien passé vous devriez voir s’afficher une API key et une Secret key pour votre application. Ce jeux de clés va vous permettre d’accéder à l’API Web.

Vous devez ensuite créer une archive ZIP contenant 2 fichiers.
Le premier est le fichier descriptor.xml qui, comme son nom l’indique, décrit l’application. On indique le numéro de version que l’on souhaite utiliser, le tex-to-speech (‘tts’), qu’on utilise l’API Web, qu’on ne possède pas de profil de configuration et que l’on souhaite afficher l’InstallId sur la page de configuration.
<descriptor>
<version>1.0</version>
<accesses>
<access>tts</access>
</accesses>
<editor>Magetys</editor>
<deployment>external</deployment>
<multiConf>false</multiConf>
<parameters>
<parameter key="showInstallUuid" value="true"/>
</parameters>
</descriptor>
Le second fichier est le fichier screen.xml qui permet de décrire la page de configuration de l’application. Ici, nous désactivons toutes les configurations possibles.
<screen
nanoTrigger="false"
permanentTrigger="false"
scheduledTrigger="false"
scheduledDateTrigger="false"
voiceTrigger="false" >
</screen>
Une fois l’archive ZIP créée contenant ces deux fichiers, il suffit de la mettre en ligne en cliquant sur Add a new version.

Maintenant, il ne vous reste plus qu’à cliquer sur Make private, ainsi, seules les personnes possédant le lien de l’application peuvent installer l’application, puis Test !. Vous êtes alors redirigé vers la fiche de l’application et vous pouvez ainsi l’installer sur votre Karotz.

Comme spécifié dans le fichier screen.xml, la page de configuration de l’application contient uniquement l’InstallId. L’installId va également nous être utile pour accéder à l’API Web.

Sur le Karotz Lab, vous pouvez voir que l’application est installée sur un Karotz.

La partie concernant Karotz est maintenant terminée ! On va pouvoir communiquer avec le Karotz depuis un script Python.
Configuration de SABnzbd+
Commencez par Télécharger le script Python que Magetys vous partage avec plaisir.

TELECHARGERCopiez ce script dans un répertoire, par exemple dans
/home/_your_login_/scripts. Vous devez modifier le script pour renseigner votre
API Key, votre
Secret Key et votre
installId. Une fois fait, il faut rendre ce script exécutable (commande
chmod a+x).
Dans l’interface SABnzbd+, vous devez spécifier le dossier par défaut qui contient vos scripts grâce au menu Configuration ? Répertoires. Bien entendu, on indique le répertoire où l’on a copié notre script.

Je vous conseille également de désactiver Ne post-traiter que les fichiers vérifiés dans Configuration ? Options afin d’être notifié également lorsqu’il y a eu une erreur de téléchargement.

Dernière étape, il est intéressant d’activer l’exécution du script par défaut dans Configuration ? Catégories en sélection le script pour la catégorie Défaut et toutes les catégories que vous avez déjà pu configurer.

Voilà ! La configuration est terminée. Maintenant, à la fin de chaque téléchargement, vous devriez entendre votre Karotz vous le dire haut et fort ! Etant donné la complexité de cette installation, je réfléchis à une autre solution pour distribuer l’application à travers le Ztore en tant qu’application publique.