Synology Video Station et Bugs sur certains films

Aujourd’hui, un lecteur fidèle de Cachem, Éric, nous propose son tuto. Ce dernier utilise avec plaisir son NAS Synology au quotidien, c’est un habitué des outils du constructeur. Il utilise notamment Video Station. L’outil de gestion de vidéothèque utilise les données depuis l’excellent site The Movie Database (TMDb), mais souvent il s’emmêle les pinceaux. Éric nous propose une série de commandes pour résoudre tous vos tracas avec Video Station.

Problèmes Synology Video Station

Éric a constaté plusieurs problématiques dans Video Station. En effet, de nombreuses informations manquent sur certains films : absence d’acteur ou du synopsis, etc. Pour remédier à cela, il nous propose aujourd’hui « quelques commandes qui permettent d’extraire la base de données de Video Station et modifier ensuite les données« . Il ajoute « ces commandes ne sont centralisées nulle part, et j’ai dû faire quelques recherches pour les trouver un peu partout, sur des forums, des blogs…« . Il nous propose donc aujourd’hui de nous expliquer sa méthode.
Tout d’abord, il faut se connecter en SSH sur le NAS, puis de passer en admin :

sudo su

Pour chaque ligne de commande ci-dessous, il faudra remplacer /volume1/Video/ par le dossier suivant votre configuration /MON_NUMERO_DE_VOLUME/NOM_DU_VOLUME/

Sauvegarder (dump) la base directement, puis la lire sur du PostgreSQL

 pg_dump -U postgres -Fc -b -f /volume1/Video/NOM_DE_MON_DUMP.dump video_metadata

Restaurer un dump

 pg_restore -U postgres -c -d video_metadata /volume1/Video/NOM_DE_MON_DUMP.dump
Attention, le dump nécessite de stopper le service Video Station

Se connecter à la base de Video Station

sudo su
psql video_metadata –user postgres

Lister les tables de la base Video Station

\dt

Listes les utilisateurs

\du

Extraire les tables principales de la base de données de Video Station

Voici quelques commandes d’extraction en csv :
\copy actor to ‘/volume1/Video/actor.csv’ DELIMITER ‘;’ csv header
\copy video_file to ‘/volume1/Video/video_file.csv’ DELIMITER ‘;’ csv header
\copy director to ‘/volume1/Video/director.csv’ DELIMITER ‘;’ csv header
\copy gnere to ‘/volume1/Video/genre.csv’ DELIMITER ‘;’ csv header
\copy mapper to ‘/volume1/Video/mapper.csv’ DELIMITER ‘;’ csv header
\copy movie to ‘/volume1/Video/movie.csv’ DELIMITER ‘;’ csv header
\copy writer to ‘/volume1/Video/writer.csv’ DELIMITER ‘;’ csv header
\copy summary to ‘/volume1/Video/summary.csv’ DELIMITER ‘;’ csv header
\copy plus_info to ‘/volume1/Video/plus_info.csv’ DELIMITER ‘;’ csv header
\copy collection to ‘/volume1/Video/collection.csv’ DELIMITER ‘;’ csv header
\copy poster to ‘/volume1/Video/poster.csv’ DELIMITER ‘;’ csv header
\copy tv_show to ‘/volume1/Video/tv_show.csv’ DELIMITER ‘;’ csv header
\copy tv_show_episode to ‘/volume1/Video/tv_show_episode.csv’ DELIMITER ‘;’ csv header
\copy library to ‘/volume1/Video/library.csv’ DELIMITER ‘;’ csv header
\copy collection_has_library to ‘/volume1/Video/collection_has_library.csv’ DELIMITER ‘;’ csv header
\copy collection_map to ‘/volume1/Video/collection_map.csv’ DELIMITER ‘;’ csv header
\copy config to ‘/volume1/Video/config.csv’ DELIMITER ‘;’ csv header
\copy collection_sharing to ‘/volume1/Video/collection_sharing.csv’ DELIMITER ‘;’ csv header
\copy collection_smart to ‘/volume1/Video/collection_smart.csv’ DELIMITER ‘;’ csv header
\copy library_privilege to ‘/volume1/Video/library_privilege.csv’ DELIMITER ‘;’ csv header
\copy tv_record to ‘/volume1/Video/tv_record.csv’ DELIMITER ‘;’ csv header
\copy backdrop to ‘/volume1/Video/backdrop.csv’ DELIMITER ‘;’ csv header
\copy vsuser to ‘/volume1/Video/vsuser.csv’ DELIMITER ‘;’ csv header;
Voici un schéma simplifié de la base de données (uniquement pour les films, remplacer la table « movie » par « tv_record » ou « tv_show »).La table « mapper » permet de lier les autres tables.  Personnellement, j’utilise ensuite l’outil Tableau (payant), mais on peut tout à fait utiliser Excel ou importer ces données dans une base de données pour faire ses requêtes ensuite.
Tout ça permet de faire un suivi de la base de données de films du NAS. Ensuite, on peut tout à fait imaginer des scripts/requêtes sql de renommage de masse ou de mise à jour des metadata.
  1. Et en 2020 l’auteur découvre que vidéo et music station sont bugués ?
    Il suffit de passer sur Plex pour que cela fonctionne.

    1. Bonjour,
      Pas la peine de faire le hater. L’idée, ce que tout le monde n’apprécie pas plex (obligation de créer un compte, features payants, régressions fréquentes lors d’upgrade…), ni sqllite, ni la consommation en ressources supérieure à videostation dès lors que le catalogue dépasse les 15000 titres. L’aspirateur de RAM, très peu pour moi, même si en termes d’UX Plex est largement supérieure à videostation. Ma proposition de tuto partait d’une bonne intention: mettre à dispo, sur un site Français que j’apprécie, des commandes de base pour se dépatouiller avec Videostation.
      Après, la plupart des bugs de videostation sont dus à tmbdb et son référencement pourri, mais ça s’améliore grandement. Pour music station, je n’utilise pas, donc je ne sais pas.
      Enfin pour répondre à la première question, l’idée c’était de pouvoir centraliser des commandes pour accéder à la BDD de videostation. Derrière, non seulement, ça permet de faire des stats, de repérer les doublons, d’ajouter en masse des tags, mais aussi de corriger en faisant des requêtes du type:
      Update actor set actor’Coluche’ where actor’Michel Colucci’;

      Ou pour insérer un tag, par exemple, en masse, pour tous les films primés aux oscars. Mais l’idée n’était pas de faire un tuto SQL.

    2. J’avoue que le ton est ultra pédant, tout est dit dans le commentaire d’Eric, je vous suggère d’aller voir ailleurs.

    3. Un grand classique : on te file une info gratos et, sous prétexte qu’elle ne te concerne pas tu dénigres l’auteur.
      Essaye de *NE PAS* répondre la prochaine fois, tu verras ça fait du bien. Et aux autres aussi.

  2. Merci pour ces infos.
    Mais ensuite tu fais l’update directement sur le Nas en commande ou alors tu corriges ta base exportée et tu la re import ?
    Sans faire un cours de SQL.
    Tu pourrais donner 1 exemple comme celui de Coluche mais avec les étapes ?

    Un grand merci.

  3. Merci pour ton tuto.
    Au lieu de critiquer vous devriez prendre exemple les haters et partager vos connaissances.
    Merci Éric.

  4. Bonjour,
    @Matt: En fait ça dépend.
    Pour les noms d’acteurs, de réalisateurs, en général, je fais l’update directement sur le nas avec la même requête que celle pour Coluche en une seule fois (d’ailleurs il manquait le signe « = »). J’ai aussi updaté le champ genre, parce que parfois, il est en anglais, d’autres en français. J’ai donc mis à jour le champ « gnere » (il y a une faute dans la base du syno) pour transformer ‘Drama’ en ‘Drame’ ou ‘Horror’ en ‘Horreur’ :

    update gnere set gnere=’Drame’ where gnere=’Drama’;
    update gnere set gnere=’Horreur’ where gnere=’Horror’;
    update gnere set gnere=’Documentaire’ where gnere=’Documentary’;

    Pour ajouter des tags, par exemple films oscarisés, Manga, ou les palmes d’or à Cannes, je passe par un fichier excel qui va écrire les requêtes « en dynamique » (plus ou moins).

    Je mets dans un premier onglet de mon fichier excel la liste des films primés au oscars (wikipedia).
    Dans un deuxième onglet, je joins avec la fonction recherchev les fichiers « gnere.csv », « movie.csv ».
    Ensuite, toujours avec un recherchev, je compare les noms de films et je mets un flag avec une colonne qui prend la valeur « 1 » quand ça correspond.
    3ème onglet, je créé ma requête sql avec un recherchev sur les films qui matchent sur la valeur 1.
    Ensuite j’insère dans la table gnere, les tags « Palme d’Or Canne » comme ceci
    Insert into gnere (id, mapper_id,gnere, create_date, modify_date)
    values (‘UN_CHIFFRE_INCREMENTAL_SUPERIEUR_A_LID_MAXIMUM’,
    ‘MAPPER_ID_RECUPERE_EN_RECHERCHEV’,
    ‘Palme dOr Cannes’,’2020-11-01 12:00:00.930338′,’2020-11-01 12:00:00.930338′);
    Jefais glisser sur excel ces cellules vers le bas pour qu’elle fonctionne pour tous les films.
    Ensuite je copie/colle l’ensemble du code des requêtes et en 5 minutes, j’ai ajouté un tag ‘Palme Dor Cannes’ à tous les films que je souhaitais.
    Le plus long est de créer le fichier excel. Mais après, il n’y a plus qu’à faire quelques modifs, et on peut faire des mises à jour en masse.
    Dernière chose: j’utilise aussi Tableau pour faire rapidement des requêtes sur les fichiers csv. C’est mon outil de travail, qui peut être remplacé par excel. Grace à excel, en joignant avec un recherchev les fichier movie, mapper et video_file, j’ai sorti rapidement, grâce à un tableau croisé dynamique, les films en doublon (la table video_file contient toutes les infos sur le ficher physique sur le nas). J’ai supprimé ceux de moins bonne qualité, ou j’ai renommé les films dont le nom de fichier est écrit en anglais.
    Pour ce qui est du dump et restore:
    Dernièrement, j’ai fait 2/3 bêtises avec les fichiers metadata et des requêtes qui m’ont donné des résultats incorrects (mettre tous les tags des films en Science Fiction…). J’étais bien content de pouvoir restaurer juste après 🙂 🙂
    Malgré tout, ça reste fastidieux, et il faut aimer bidouiller, mais avec ça, on arrive à une bilbiothèque « propre ».

  5. Merci Eric pour tes infos.

    As tu une solution pour pouvoir faire une recherche globale, c’est à dire toutes catégories confondues sur DS VIDEO? C’est possible sur la barre de recherche Vidéo Station, mais pas sur DS Vidéo qui ne propose qu’une recherche par catégorie.

    Aussi, quelqu’un a t-il une solution au problème de DS Vidéo sur Apple TV? Les commandes ne fonctionnent plus lorsque le film est lancé.

    Merci d’avance.

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.