Outils pour utilisateurs

Outils du site


informatique:libretime:auto-dj

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:libretime:auto-dj [2025/01/10 20:15] – ajout script liquidsoap secondaire raphminformatique:libretime:auto-dj [2025/01/10 20:52] (Version actuelle) – [Localisation des fichiers] ajout playlist raphm
Ligne 5: Ligne 5:
 Notre auto-dj est construit avec bout de script Liquidsoap qui est inséré au milieu du script Liquidsoap de libretime. Un deuxième script Liquidsoap  est nécessaire afin de récupérer en entrée un flux audio `http` provenant de Libretime pour le fournir en sortie sur la carte son de l'ordinateur (en direction de la table de mixage). Notre auto-dj est construit avec bout de script Liquidsoap qui est inséré au milieu du script Liquidsoap de libretime. Un deuxième script Liquidsoap  est nécessaire afin de récupérer en entrée un flux audio `http` provenant de Libretime pour le fournir en sortie sur la carte son de l'ordinateur (en direction de la table de mixage).
  
-Ce deuxième script est nécessaire car Libretime est lancé en tant que "daemon system" et dans ce cas n'a pas pas les bons droits pour accéder correctement à la carte son. Le deuxième script liquidsoap est donc lancé lui en tant que "daemon user" afin de pouvoir envoyer le flux correctement sur la carte son. Cette configuration est un bidouillage qui pallie à un défaut de Libretime.+Ce deuxième script est nécessaire car Libretime est lancé en tant que "daemon system" (voir [[informatique:libretime:auto-dj#daemonscripts_qui_se_relancent_au_demarrage|section Daemon plus bas]]) et dans ce cas n'a pas pas les bons droits pour accéder correctement à la carte son. Le deuxième script liquidsoap est donc lancé lui en tant que "daemon user" (voir [[informatique:libretime:auto-dj#daemonscripts_qui_se_relancent_au_demarrage|section Daemon plus bas]]) afin de pouvoir envoyer le flux correctement sur la carte son. Cette configuration est un bidouillage qui pallie à un défaut de Libretime.
  
 +===== Localisation des fichiers =====
 +
 +Les fichiers permettant de faire fonctionner l'auto-DJ se trouvent dans le dossier ''autoDJ'' dans ''/home/radiodragon''.
 +
 +Le fichier ''playlist_autodj.txt'' est un simple fichier texte contenant une liste suffisantes de chemins vers des titres pour diffuser de la musique pendant au moins 24h. Cette playlist est recréée chaque jour selon des [[informatique:libretime:auto-dj#regles_de_rotation_de_la_playlist|règles de rotation précisées plus bas]].
 +
 +Le sous-dossier ''scripts'' contient les scripts suivants :
 +  * ''radiodragon.liq'' : script liquidsoap secondaire
 +  * ''radiodragon-run.liq'' : configuration permettant de faire fonctionner ''radiodragon.liq'' en deamon **user**
 +  * ''create_playlist.py'' : script python permettant de générer une nouvelle playlist musicale tous les jours
 ===== Sript Liquidsoap dans Libretime ===== ===== Sript Liquidsoap dans Libretime =====
  
 Le script liquidsoap inséré dans Libretime est documenté via des commentaires au sein même du script pour expliquer le fonctionnement de chaque section. Le script liquidsoap inséré dans Libretime est documenté via des commentaires au sein même du script pour expliquer le fonctionnement de chaque section.
  
-Le script en question est le fichier `ls_script.liqsitué dans `/opt/libretime/lib/python3.8/site-packages/libretime_playout/liquidsoap/1.4/ls_script.liq`.+Le script en question est le fichier ''ls_script.liq'' situé dans ''/opt/libretime/lib/python3.8/site-packages/libretime_playout/liquidsoap/1.4/ls_script.liq''.
  
 ++++ Extrait inséré dans le script Liquidsoap - màj 10/01/2025 (cliquer pour afficher le script) | ++++ Extrait inséré dans le script Liquidsoap - màj 10/01/2025 (cliquer pour afficher le script) |
Ligne 87: Ligne 97:
 ++++ ++++
  
-**Remarque :** Les deux premières sections du script sont spéciales. Elles ont pour but d'exécuter la création (lors du lancement du script) ou la mise à jour (chaque jour entre 23h et 23h50) du fichier `playlist_autodj.txt`.+**Remarque :** Les deux premières sections du script sont spéciales. Elles ont pour but d'exécuter la création (lors du lancement du script) ou la mise à jour (chaque jour entre 23h et 23h50) du fichier ''playlist_autodj.txt''.
  
-L'objectif est de générer (selon des règles précisées ici [LIEN À AJOUTER]) un fichier qui contient une playlist (liste de titres) qui dure au moins 24h.+L'objectif est de générer ([[informatique:libretime:auto-dj#regles_de_rotation_de_la_playlist|selon des règles précisées ici]]) un fichier qui contient une playlist (liste de titres) qui dure au moins 24h.
  
 La création du fichier playlist n'est pas faite directement dans le script liquidsoap. Elle est effectuée par un script écrit en //python// (pour des raisons de commodités, car le language //liquidsoap// est un peu particulier). La création du fichier playlist n'est pas faite directement dans le script liquidsoap. Elle est effectuée par un script écrit en //python// (pour des raisons de commodités, car le language //liquidsoap// est un peu particulier).
  
-Le script liquidsoap lance donc le script python `create_playlist.pyqui lors de son exécution va générer le fichier `playlist_autodj.txt`.+Le script liquidsoap lance donc le script python ''create_playlist.py'' qui lors de son exécution va générer le fichier ''playlist_autodj.txt''.
  
 ===== Deuxième script Liquidsoap ===== ===== Deuxième script Liquidsoap =====
Ligne 99: Ligne 109:
 Le deuxième script liquidsoap est très simple, il prend un flux audio au format http (fournit par Libretime) pour le fournir à la carte son (pour l'envoyer à la table de mixage). Le deuxième script liquidsoap est très simple, il prend un flux audio au format http (fournit par Libretime) pour le fournir à la carte son (pour l'envoyer à la table de mixage).
  
-++++ script liquidsoap secondaire - màj 10/01/2025 (cliquer pour afficher le script) |+++++ Script liquidsoap secondaire - màj 10/01/2025 (cliquer pour afficher le script) |
  
 <file liquidsoap radiodragon.liq> <file liquidsoap radiodragon.liq>
Ligne 122: Ligne 132:
   libretime)   libretime)
    
 +</file>
 +
 +++++
 +
 +===== Daemon : scripts qui fonctionnent en arrière-plan =====
 +
 +Libretime est configuré comme un "daemon" system, ce qui veut dire que c'est un script qui fonctionne en arrière plan  et qui se lance automatiquement au démarrage de l'ordinateur, et qu'il est lancé **par le système** et non par un utilisateur.
 +
 +Malheureusement un bug de Libretime nous empêche de sortir correctement le flux audio sur la carte son, justement car c'est un daemon **système**.
 +
 +Nous utilisons donc un deuxième script liquidsoap afin de pallier à ce problème. Ce deuxième script est aussi un daemon (script qui fonctionne en arrière-plan) mais lancé par **l'utilisateur**, ce qui permet de fonctionner correctement avec la carte son. L'inconvénient est que ce script ne se relance pas tout seul au démarrage de l'ordinateur. Une solution est en cours de recherche pour corriger ce problème.
 +
 +Afin que le script ''radiodragon.liq'' (voir plus haut) fonctionne comme un daemon, il faut créer et configurer correctement le script ''radiodragon-run.liq'' ci-dessous.
 +
 +++++ Script pour faire un daemon liquidsoap - màj 10/01/2025 (cliquer pour afficher le script) |
 +
 +<file liquidsoap radiodragon-run.liq>
 +
 +#!/usr/bin/liquidsoap
 +
 +set("log.file",true)
 +set("log.file.path","/home/radio-dragon/autoDJ/log/radiodragon-run.log")
 +set("init.daemon",true)
 +set("init.daemon.change_user",true)
 +set("init.daemon.change_user.group","radio-dragon")
 +set("init.daemon.change_user.user","radio-dragon")
 +set("init.daemon.pidfile",true)
 +set("init.daemon.pidfile.path","/home/radio-dragon/autoDJ/pid/radiodragon-run.pid")
 +set("init.daemon.pidfile.perms",0o640)
 +%include "/home/radio-dragon/autoDJ/scripts/radiodragon.liq"
 +
 </file> </file>
  
Ligne 129: Ligne 170:
  
 À DOCUMENTER À DOCUMENTER
 +
 +===== Relancer l'auto-DJ en cas de problème =====
 +
 +Listes de commandes a exécuter depuis un terminal afin de résoudre un problème d'exécution du script :
 +  * ''systemctl --user status radiodragon-liquidsoap.service''
 +    * permet de vérifier l'état du script liquidsoap secondaire
 +  * ''systemctl --user start radiodragon-liquidsoap.service''
 +    * permet de démarrer le daemon s'il est arrêté
informatique/libretime/auto-dj.1736540104.txt.gz · Dernière modification : de raphm