Centraliser les bases de données

De Wiki Mpdb.tv
Aller à : navigation, rechercher

Avantages et inconvénients

A chaque film, Kodi associe des méta-données, qu'il récupère lors du scrap : titre, genre, url de la jaquette (image), résumé etc... Ces données, il faut les stocker quelque part, en étant capable de faire des recherches dessus (par exemple, "tous les films non vus étant de genre "Animation", par ordre croissant de titre"). Les développeurs Kodi n'ont pas réinventé la roue, il existe des outils très puissants pour ça: les bases de données. Par défaut, Kodi utilise un fichier (au format SQLite3). Malheureusement, ce format ne peut être manipulé par plusieurs utilisateurs en même temps, il ne peut donc pas convenir pour une utilisation centralisée. On passe donc à MySQL (MariaDB pour les NAS Synology) qui est parfaitement capable de gérer les accès en parallèle. A noter que pour l'instant, seul le moteur MySQL/MariaDB est supporté par Kodi, pas de PosgreSQL, Oracle, Access ou SQL Server.

Avantages

Les principaux avantages sont :

  • une vidéo (série / épisode / film / ...) ou une musique (artiste / album / chanson) ajoutée sur un des Kodi sera automatiquement disponible sur tous les Kodi connectés à la BDD
  • une vidéo visionnée sur un Kodi sera automatiquement marquée comme Vue sur tous les Kodi connectés à la BDD
  • une vidéo commencée sur un Kodi pourra être reprise sur un autre Kodi à l'endroit exact de l'arrêt

Inconvénients

La mise en place de cette mécanique implique certains inconvénients (ou du moins désagréments) :

  • il faut que tous les Kodi connectés à la BDD utilisent la même version majeure : on peut avoir des Kodi 16.0 avec des Kodi 16.1 mais on ne peut pas avoir des Kodi 16.1 avec des Kodi 15.2 ou 17.0)
  • il faut que le chemin du fichier vidéo ou audio stocké dans le BDD soit accessible par tous les Kodi : si on a un Kodi Windows et un Kodi Linux (OpenELEC ou LibreELEC par exemple), on ne peut pas utiliser un chemin avec une lettre de lecteur réseau Windows. Le chemin de la vidéo Z:\\Films\Avatar\Avatar.mkv sera impossible à trouver pour le Kodi Linux. Il faut donc modifier les sources pour que les chemins utilisent des protocoles connus de tous (NFS, SMB)
  • il faut exporter les médiathèques avant de connecter Kodi à sa BDD si on veut récupérer les informations sur les vidéos Vues/Non vues / En cours / jaquettes / fonds d'écran / ...
  • le fait de changer les chemins dans les sources implique qu'il faudra aussi modifier vos Listes de Lecture Intelligentes si les règles s'appuient sur le chemin
  • certains habillages (skins) utilisent aussi les chemins dans leurs options (pour les illustrations musicales par exemple), il faudra là aussi modifier les paramètres

Export des médiathèques

Comme mentionné plus haut, si vous voulez garder vos films /épisodes / séries Vus / Non vus ou En cours mais aussi les jaquettes, fond d'écran, informations, il faut exporter la médiathèque vidéo en fichiers séparés.

Export import des médiathèques

Dans le cas contraire, Kodi utilisera le scraper déclaré pour la source et vous perdrez toutes vos informations.

Il faut aussi noter que les illustrations des sagas ne sont pas gérées par cet export et que vous devrez les réaffecter avec la reconstruction de la médiathèque par Kodi.

Configuration de MySQL et de Kodi

Cet article ne va pas traiter de la manière d'installer MySQL (ou MariaDB pour les NAS Synology) sur votre serveur. Cela dépend de votre architecture (Windows, Linux, Mac OS, ...) et le sujet est déjà traité sur les sites spécialisés (Google est votre ami).

Nous partons donc du principe que votre base de données MySQL est installée et que l'interface graphique de gestion PHPMyAdmin l'est aussi. les instructions ci-dessous peuvent se faire via la ligne de commande sur le moteur MySQL mais c'est plus simple de passer par PHPMyAdmin.

Des informations détaillées sont fournies sur le WiKi de Kodi : http://kodi.wiki/view/MySQL/Setting_up_MySQL

MySQL

  • se connecter sur l'interface de gestion de PHPMyAdmin
  • créer l'utilisateur kodi avec le mot de passe kodi (vous pouvez bien sur changer ces valeurs mais il faudra rester cohérent lors des prochaines étapes)

Saisir le texte suivant dans la fenêtre SQL et appuyer sur le bouton Exécuter.

Vous pouvez vérifier que l'utilisateur a bien été créé dans l'onglet Comptes utilisateurs :

  CREATE USER 'kodi' IDENTIFIED BY 'kodi';
  GRANT ALL ON *.* TO 'kodi';
KodiMySQL001.png
KodiMySQL002.png

Kodi

Pour que Kodi utilise la BDD centralisée et non ses BDD locales, il faut créer (ou modifier si ce dernier existe) le fichier advancedsettings.xml dans votre dossier utilisateur (Cf. http://kodi.wiki/view/Userdata_folder)

Le contenu du fichier est donc, à minima, le suivant :

 <advancedsettings>
   <videodatabase>
     <type>mysql</type>
     <host>***.***.***.***</host>
     <port>3306</port>
     <user>kodi</user>
     <pass>kodi</pass>
   </videodatabase> 
   <musicdatabase>
     <type>mysql</type>
     <host>***.***.***.***</host>
     <port>3306</port>
     <user>kodi</user>
     <pass>kodi</pass>
   </musicdatabase>
   <videolibrary>
     <importwatchedstate>true</importwatchedstate>
     <importresumepoint>true</importresumepoint>
   </videolibrary>
 </advancedsettings>

La chaîne ***.***.***.***doit être remplacée par l'adresse IP de la machine qui héberge le serveur MySQL (veillez ce que cette adresse ne change pas donc pensez à attribuer une adresse fixe ou mettre en place un bail DHCP permanent).

Le port 3306 est le port de connexion par défaut au moteur MySQL.

User et pass sont l'utilisateur et le mot de passe créés dans MySQL à l'étape précédente.

Le bloc videodatabase permet de configurer Kodi pour qu'il utilise le moteur MySQL pour sa BDD vidéo (films, séries, vidéos, ...).

Le bloc musicdatabase permet de configurer Kodi pour qu'il utilise le moteur MySQL pour sa BDD audio (artistes, albums, chansons).

Le bloc videolibrary permet de récupérer l'état des vidéos (status Vue / Non vue) depuis les fichiers exportés (étiquette importwatchedstate) et le point de reprise des vidéos en cours (étiquette importresumepoint)

Première connexion

Quand tout semble OK, vous pouvez démarrer Kodi et être un peu patient car le premier démarrage est long.

Lorsque Kodi rend la main, vous constatez que vos médiathèques sont vides et que les menus Films et Séries TV ont disparus. C'est normal car Kodi a initialisé ses BDD MySQL mais n'a pas migré les informations depuis les précédentes BDD locales.

Vous pouvez vérifier en vous connectant à PHPMyAdmin que 2 nouvelles BDD ont été créées :

KodiMySQL003.png

Les numéros changent à chaque version mineure et/ou majeure de Kodi. Actuellement, myvideos99 / mymusic56 correspondent aux BDD de Kodi 16.1

Si les BDD ne sont pas créées, cela peut avoir plusieurs raisons :

  • Kodi n'a pas pris en charge votre fichier advancedsettings.xml

Vous pouvez vérifier dans le fichier kodi.log que le fichier est bien pris en compte :

11:51:51 T:5812  NOTICE: Loaded settings file from special://profile/advancedsettings.xml
11:51:51 T:5812  NOTICE: Contents of special://profile/advancedsettings.xml are...
                                            <advancedsettings>
                                              <videodatabase>
                                                <type>mysql</type>
                                                <host>172.27.161.7</host>
                                                <port>3306</port>
                                                <user>kodi</user>
                                                <pass>kodi</pass>
                                              </videodatabase>
                                              <musicdatabase>
                                                <type>mysql</type>
                                                <host>172.27.161.7</host>
                                                <port>3306</port>
                                                <user>kodi</user>
                                                <pass>kodi</pass>
                                              </musicdatabase>
                                              <videolibrary>
                                                <importwatchedstate>true</importwatchedstate>
                                                <importresumepoint>true</importresumepoint>
                                              </videolibrary>
                                            </advancedsettings>
  • Kodi n'a pas accès au moteur MySQL

Toujours dans le fichier kodi.log :

11:51:53 T:5812   ERROR: Unable to open database: MyMusic56 [2003](Can't connect to MySQL server on '172.27.161.7' (10061))
11:52:18 T:5812   ERROR: Unable to create new database
11:52:19 T:5812   ERROR: Unable to open database: MyVideos99 [2003](Can't connect to MySQL server on '172.27.161.7' (10061))
11:52:44 T:5812   ERROR: Unable to create new database

Il faut alors vérifier dans le fichier de configuration de MySQL que le moteur ne serait pas uniquement à l'écoute des connexions internes (même machine).

Pour autoriser toutes les machines du réseau à accéder au moteur, il faut modifier la valeur bind-address pour la passer à 0.0.0.0 :

bind-address = 0.0.0.0

Modification des sources

Maintenant que Kodi est capable d'accéder à ses BDD sur MySQL, il va falloir les remplir.

Pour cela, il est conseillé d'utiliser la machine la plus puissante disponible (la reconstruction des médiathèques est plus rapide avec Kodi tournant sur un PC que Kodi tournant sur un Rapsberry Pi) : le Maître.

La première chose à faire est de vérifier que les emplacements stockant les fichiers vidéo ou audio seront accessibles depuis toutes les machines Kodi. Cette opération étant dépendante de votre architecture, nous n'abordons pas ce point ici.

Si vos partages réseaux sont protégés par mot de passe, il faudra répliquer le fichier password.xml sur toutes les machines Kodi au même titre que le fichier advancedsettings.xml

Lors de la déclaration des chemins dans les sources, il faut utiliser un chemin accessible par toutes les machines Kodi. Donc pas de lecteur réseau (sauf si toutes les machines sont sous Windows et que les lettres des lecteurs sont identiques sur toutes les machines).

Si vous passez par un chemin SMB, il est conseillé d'utiliser l'adresse IP du serveur hébergeant les fichiers et non son nom réseau car certaines machines peuvent avoir du mal à résoudre ce nom.

Utiliser le choix Ajouter un emplacement réseau en bas de la liste et dans la fenêtre suivante, remplir les informations concernant l'adresse du serveur, le dossier partagé et le couple utilisateur / mot de passe (si l'authentification est nécessaire).

KodiMySQL004.png

Une fois toutes ces contraintes assimilées, vous pouvez éditer chaque source sur l'instance Kodi Maître, modifier le chemin et, lorsque Kodi vous le propose, refaire un scan de la source pour importer les fichiers exportés précédemment et ainsi remplir les BDD.