Comment synchroniser plusieurs XBMC

7

Il y a quelques temps je vous ai expliqué comment vous faire un Media Center pour 40€, à base d’un Raspberry Pi et de XBMC.

Finalement cette solution est tellement pratique et abordable que j’ai eu envie d’en mettre au moins un second, notamment dans notre chambre. Comme ca quand nous ne sommes pas d’accord sur le programme TV avec madame, on peut regarder ce qu’on veut, que ce soit dans le salon ou dans la chambre.

Seulement, je ne voulais pas gérer deux vidéothèques indépendantes: avec une installation de XBMC classique, si je regarde par exemple un épisode de ma série préférée dans la chambre, celui ci se retrouve marqué comme « Vu » sur le Media Center de la chambre, mais pas sur celui du salon, et vice versa :/ L’idéal est donc que tout cela soit synchronisé. Et avec XBMC, c’est possible, même si cette fonctionnalité n’est pas  tellement mise en avant.

Le principe est simple: toute la vidéothèque est centralisée dans une base de données MySQL.

Nous allons voir comment mettre cela en place.

 

I. Installation d’une base MySQL

 

Je ne vais pas détailler ici l’installation d’une base MySQL, c’est relativement simple. Pour ma part, j’avais installé Wamp sur mon serveur WHS 2011. Wamp est une distribution complète sous Windows qui installe un serveur Web Apache, PHP, et MySQL. A la base, j’en avais besoin surtout pour pouvoir exécuter des scripts PHP, pour par exemple pouvoir éteindre mon serveur via une requête HTTP.

Bref, ce package étant déjà installé, je vais donc m’en resservir. Mais la base MySQL pourrait tout aussi bien être installée par exemple sur un NAS, comme un Synology. On évitera de l’installer sur un Raspberry avec XBMC, l’ensemble risquant de ralentir le système.

Sur mon serveur WHS, Wamp est donc visible dans la barre des taches. Il suffit de lancer la console MySQL:

 

 

Là, nous allons lancer quelques commandes pour créer un utilisateur XBMC et lui donner les droits sur les bases qu’il doit piloter:

 

 

Ces commandes sont:

 

CREATE USER ‘xbmc’ IDENTIFIED BY ‘xbmc';

GRANT ALL ON `MyMusic%`.* TO ‘xbmc’@’%’ IDENTIFIED BY ‘xbmc';

GRANT ALL ON `MyVideos%`.* TO ‘xbmc’@’%’ IDENTIFIED BY ‘xbmc';

 

Validez chaque commande par « ENTER ». Selon les distributions XBMC, les bases MyMusic et MyVideos peuvent être suivies d’un numéro différent, d’où le % à la fin pour lui donner les droits quelque soit cette extension.

Maintenant, si votre base MySQL est sous Windows, il faudra ouvrir un port sur le pare-feu de Windows. Dans le panneau de configuration, Pare feu, paramètres avancés, on crée une nouvelle règle entrante basée sur un port:

 

 

Il faudra en fait créer deux règles, une en TCP l’autre en UDP, toutes deux sur le port 3306:

 

 

Autorisez la connexion, donnez un nom à chaque règle, et validez:

 

 

Voilà, à partir de maintenant il sera possible à XBMC de se connecter à la base MySQL de votre serveur.

 

II. Configuration de XBMC

 

Si vous aviez déjà configuré votre vidéothèque dans XBMC, on va commencer par l’exporter. Pour cela, dans le menu Système / Paramètres / Vidéo / Médiathèque, sélectionnez « Exporter la Médiathèque vidéo ». Sélectionnez « plusieurs fichiers », et répondez oui pour l’export des images de films, acteurs, etc…

 

 

Toutes les données de vos films vont être exportées sous forme de petits fichiers dans les répertoires de vos films. Selon la taille de votre collection, ca peut prendre plus ou moins de temps. Pour ma part j’ai lancé l’opération un soir avant de me coucher.

Il va falloir maintenant indiquer à XBMC qu’il faut utiliser une base de données distante. Pour cela, si comme dans le tutorial précédent votre XBMC est installé sur un Raspberry, on va s’y connecter en SSH (avec un logiciel comme Putty, pare exemple). Une fois connecté, tapez

 

cd $HOME/.xbmc/userdata/

 

pour vous rendre dans le bon répertoire, puis

 

nano advancedsettings.xml

 

pour créer un fichier de paramètres avancés s’il n’existe pas. Là, copiez y ces lignes, en remplacant l’adresse IP (***.***.***.***) par celle du serveur où se trouve votre base MySQL:

 

<advancedsettings>

<videodatabase>

<type>mysql</type>

<host>***.***.***.***</host>

<port>3306</port>

<user>xbmc</user>

<pass>xbmc</pass>

</videodatabase>

<musicdatabase>

<type>mysql</type>

<host>***.***.***.***</host>

<port>3306</port>

<user>xbmc</user>

<pass>xbmc</pass>

</musicdatabase>

<videolibrary>

<importwatchedstate>true</importwatchedstate>

</videolibrary>

</advancedsettings>

 

Faites Ctrl + O pour enregistrer puis Ctrl + X pour quitter le fichier.

Vous pouvez redémarrer votre Raspberry pour qu’il prenne en compte les changements.

Une fois XBMC redémarré, il n’y a plus qu’à ajouter de nouveau les répertoires partagés où se trouvaient vos films et musiques (ou juste éditer la source, si ces répertoires sont toujours disponibles quand vous allez dans la partie Vidéo. Le fait de la valider de nouveau va forcer la mise à jour). Cette fois, XBMC va aller beaucoup plus vite, puisqu’il va lire les fichiers qu’il a exporté pour chaque film, et les enregistrer en base de données MySQL. Ce n’est à faire qu’une seule fois, rassurez vous.

Une fois votre vidéothèque reconstituée, à l’usage ce sera totalement transparent. Pour ma part, je trouve même que l’ensemble est plus réactif sur mon Rapsberry.

Maintenant, sur les autres installations XBMC, que ce soit sur Rapsberry, PC, Mac, etc… il suffit de recréer le même fichier advancedsettings.xml, puis ensuite d’ajouter dans XBMC les répertoires partagés où se trouvent vos films et musiques. Deux points à noter cependant:

  • les versions de XBMC doivent être les mêmes (même numérotation, par exemple actuellement 12.1)
  • les chemins des répertoires partagés doivent être indiqués de la même facon sur les différents XBMC

Cette fois, aucun scan des répertoires n’est exécuté: vous ajoutez les répertoires, les films sont disponibles immédiatement avec toutes leurs informations et images, puisque XBMC s’est connecté directement à la base de données MySQL où tout est déjà enregistré. Du coup, vous récupérez également l’état des films, s’ils ont été vus ou nom, et l’endroit où vous vous êtes arrêté. Prenons un exemple: vous commencez à regarder un film dans le salon, puis vous décidez de l’arrêter au bout de 45 min pour finir de le regarder tranquillement dans votre chambre. Et bien le XBMC dans votre chambre saura que le film s’est arrêté à 45 min et vous proposera de reprendre la lecture à cet endroit. A l’usage, c’est vraiment très pratique ! Mes enfants sont encore jeunes pour avoir la TV dans leur chambre, mais plus agés, ils auraient sans doute eu aussi un Raspberry synchronisé de cette façon :p



A propos de l'auteur

Je me suis essayé à la domotique il y a quelques années avec quelques modules X10, quelques softs gratuits, etc… pour équiper la maison que j'avais en location. Puis j'ai eu la chance de pouvoir faire construire, et c'est là que mes projets domotiques ont explosé, la construction neuve me permettant de prévoir une installation complète, et intégrée à la maison. Aujourd'hui, quasiment toute mon installation repose sur le Z-Wave.

  • Olivier Juilland

    Bonjour,

    J’ai suivi avec beaucoup de précaution votre guide, ainsi que ses équivalents anglais, mais je me retrouve avec un problème:

    dès que je mets le fichier advancedsettings.xml dans « userdata », les modifications de catégories des dossiers vidéos ne sont plus pris en compte. En gros, mes vidéos ne sont plus réparties dans « Séries TV » et « Films ». Je peux par contre y accéder normalement sur les différentes machines (2 win, 1 linux et 1 Raspberry) si j’utilise la navigation dans les fichiers. Le problème, c’est que je ne peux pas voir lesquels ont été vus, où j’en étais, etc (soit le principe même de ce guide).

    Auriez vous une idée de mon erreur? Est-ce par rapport à la base de donnée SQL? J’ai fait uniquement ce que vous décrivez, mais je ne comprends pas où se retrouve la base et comment les autres machines sont sensées y accéder..

    Au plaisir de vous lire.

    Olivier.

    • Olivier Juilland

      (Je viens de voir que mon problème ressemble un peu à celui de Lolo.). Je précise que lors de l’importation sur les machines cliente, le scan n’est de loin pas immédiat.

      EDIT: Je me suis aperçu que la base de donnée SQL n’était pas accessible, pour des raisons de droits. Pour vérifier ça, vous pouvez télécharger un client SQL (Comme HeidiSQL) et essayer de vous connecter à l’ip du serveur SQL. Après vérification, changement des droits (j’ai tout simplement retapé les commandes décrites ci-dessus et ça a marché.).

      Une étape de passée, je peux maintenant de nouveau voir mes fichiers classés. La synchro « vus » ne fonctionne toujours pas, je mettrai la solution ici même si je la trouve.

  • Tanguy LE LOCH

    Bonjour,
    Déjà merci pour ce tuto.
    Juste quelques questions :
    Après je ne peux plus modifier les films mais du coup si je modifie un film à moins d’exporter de nouveau la biblio les infos ne seront pas partagées??
    Même si la base est partagée il rapatrie tout en local? (je parle de sinfos de base, le répertoire thumbail grossit sur tous mes postes).
    Dommage que tout même les images ne soient stockées en BD, j’aimerais bien virer les NFO, jpeg de mes partages SMB.
    Que ce passe t’il si lors de l’export on dit de le faire dans un seul fichier et pas un fichier par entrée.
    Merci

  • Guest

    …..

    • Guest

      Rajouter aussi dans le fichier advancedsettings.xml :

      true

      au meme niveau que true

  • TuRn3r

    Rajouter aussi dans le fichier advancedsettings.xml :
    true

    au même niveau que true

  • tmike22

    Merci bcp bcp pour ce tuto.

    Je souhaite avoir des User différents sur chaque Xbmc (openelec pour ma part) De manière à ce que la mention « vu » ne le soit que sur le Rasp ou le fichier a été lu, tout en ayant la base SQL.

    Une Idée?