Gonzague

Tak suka wanita gemuk ! le blog de Gonzague.

Archive pour juillet 2014

Dev compulsif #471

Mardi 29 juillet 2014

Une fois de temps en temps, il me prend une envie de créer un logiciel souvent parce que je trouve pas ce que je veux, ou tout simplement parce que j’ai découvert un nouveau framework/technologie. Coup de bol ce coup-ci les deux options étaient validées.

Ma simple installation informatique  se résume à ça:

  • Un mac mini qui sert de serveur / HTPC / téléchargements
  • Couch potato / sickbeard sur le mini
  • Un ampli

Le tout relié à une TV évidemment. Tout ce beau monde à plein de fonctionnalités sympa qui par chance se contrôlent la plus part via des applications ou sites web.

Usages communs:

  • Je me lève le matin, pour mettre un peu de musique depuis mon lit je dois lancer l’application de l’ampli, l’allumer, lancer l’application iTunes Remote et choisir ma musique.
  • Je veux ajouter un téléchargement, lancer la version web de transmission, entrer mot de passe coller le lien.
  • Voir quand le prochain épisode de ma super série préférée, je dois aller sur sickbeard, m’identifier, clicker sur le lien pour voir la liste des prochains épisodes.
  • Ma copine veut regarder ses series en streaming mais je télécharge donc il faut réduire la vitesse des téléchargements, lancer site web, identification, cliquer bouton.
  • etc…

Le problème: Il faut changer 30 fois d’application pour arriver à faire ce qu’on veut.

La solution: On est jamais mieux servis que par soi-même.

Ce week-end étant un long week-end dans le coin je me suis lancé. J’ai découvert playframework il y a quelques temps et il m’intriguais beaucoup donc voila l’occasion rêvée de s’en servir.

Le but que je me suis fixé est d’avoir tous ce dont je me sers régulièrement sur un seul écran avec les fonctions que j’utilise le plus en accès très rapide.

Après quelques heures de recherches et de bricolages:

Et c’est également compatible avec les plateformes mobiles vu que c’était mon but principal:

Je suis encore loin de tout avoir terminé, mais l’essentiel est la. Il me reste surtout le plugin pour iTunes.

Chanque plugin peut s’afficher en grand si il le permet, on peut le voir a droite de “Transmission” il y a deux petites flèches, un clic plus tard on est sur la version détaillée du plugin:

Évidemment il est possible de changer la largeur des modules ainsi que leur position.

Le tout tourne donc en java/scala avec PlayFramework qui est vraiment simple et plaisant à utiliser tout coule plus ou moins de source.

Pour éviter d’envoyer des requêtes toutes les secondes vers le serveur, j’utilise un serveur WebSocket pour tout ce qui est acquisition des données, ainsi que pour envoyer des commandes. Le principe est relativement simple un WebSocket est ouvert en permanence côté serveur, dès qu’un client s’y connecte l’acquisition des données commence. Chaque plugin dispose de son propre taux de rafraichissement… Inutile de rafraîchir la liste des épisodes  à venir toutes les secondes.

S’il n’y a plus de client sur le WebSocket évidemment tout s’arrête en attendant qu’un nouveau se connecte.

La communication se fait aussi du client vers le serveur toujours en passant par le websocket en envoyant l’id du plugin, une méthode et des paramètres, le serveur va rediriger tout ça vers le plugin adéquate qui va exécuter la commande et envoyer la réponse aux clients.

Ce qu’il me reste à faire:

  • Plugin pour iTunes qui s’annonce relativement compliqué
  • Plugin pour couchpotato (j’ai pas trop regardé s’il y avait une API)
  • Améliorer sickbeard pour pouvoir ajouter des séries facilement.
  • Ajouter tout ce à quoi je peux penser

Pour conclure PlayFramework c’est cool, les Websocket aussi, le tout marche plutôt très bien et ce fut assez facile à mettre en place !