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

Prochaine révision
Révision précédente
informatique:libretime:auto-dj [2024/12/20 10:52] – création de la page raphminformatique:libretime:auto-dj [2025/01/10 20:52] (Version actuelle) – [Localisation des fichiers] ajout playlist raphm
Ligne 3: Ligne 3:
 L'auto-dj est le "logiciel" qui définit la diffusion de la musique pendant tous les "trous" de la grille (lorsqu'aucune émission, en direct ou pré-enregistrée, n'est diffusée). L'auto-dj est le "logiciel" qui définit la diffusion de la musique pendant tous les "trous" de la grille (lorsqu'aucune émission, en direct ou pré-enregistrée, n'est diffusée).
  
-Notre auto-dj est construit avec un script Liquidsoap dont le principe général est le suivant :+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).
  
-  - le script prend deux sources sonores en entrée : +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.
-    le flux qui sort de Libretime (les émissions en direct ou pré-enregistrées) +
-    - le flux provenant de la lecture d'une playlist musicale prédéfinie +
-  - le script diffuse prioritairement le flux de Libretime +
-  - si le flux de Libretime est vide, alors il diffuse le flux de la playlist+
  
-===== Sript Liquidsoap =====+===== Localisation des fichiers =====
  
-Notre script liquidsoap est documenté via des commentaires au sein du script pour expliquer le fonctionnement de chaque section.+Les fichiers permettant de faire fonctionner l'auto-DJ se trouvent dans le dossier ''autoDJ'' dans ''/home/radiodragon''.
  
-++++ Script Liquidsoap complet - màj 20/12/2024 (cliquer pour afficher le script) |+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]].
  
-<file liquidsoap radio.liq>+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 =====
  
-#!/usr/bin/liquidsoap+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.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) |
  
 +<file liquidsoap extrait_ls_script.liq>
  
-#####!!!!! +################ DEBUT AJOUT POUR L'AUTODJ
-Lancer le script depuis son dossier sinon create_playlist.py ne marche pas +
-#path="~/liquidsoap-daemon/script"+
  
 ########################### INIT PLAYLIST ################################## ########################### INIT PLAYLIST ##################################
  
-ignore(run_process("python3 ~/liquidsoap-daemon/script/create_playlist.py"))+ignore(run_process("python3 /home/radio-dragon/autoDJ/scripts/create_playlist.py"))
  
  
Ligne 34: Ligne 37:
  
 exec_at(freq=1800., pred={ 23h00-23h50 }, exec_at(freq=1800., pred={ 23h00-23h50 },
-  fun() -> ignore(run_process("python3 ~/liquidsoap-daemon/script/create_playlist.py"))+  fun() -> ignore(run_process("python3 /home/radio-dragon/autoDJ/scripts/create_playlist.py"))
 ) )
  
Ligne 64: Ligne 67:
 end end
  
-########################### LIBRETIME ################################## 
- 
-libretime = input.http("http://192.168.1.105:8000/libretime",max=20.) 
-libretime = strip_blank(max_blank=3.,libretime) 
  
 ########################### AUTODJ ################################## ########################### AUTODJ ##################################
  
-autodj = playlist(reload_mode="watch","~/liquidsoap-daemon/script/playlist_autodj.txt",mode="normal")+autodj = playlist(reload_mode="watch", "/home/radio-dragon/autoDJ/playlist_autodj.txt",mode="normal")
  
 # 780 = au moins 13 minutes de délai entre les jingles # 780 = au moins 13 minutes de délai entre les jingles
Ligne 88: Ligne 87:
 ########################### COMBINING SOURCES ################################## ########################### COMBINING SOURCES ##################################
  
-grille = fallback(track_sensitive=false,transitions=[to_libretime,back_to_playlist,to_libretime], +default = fallback(track_sensitive=false,transitions=[back_to_playlist,to_libretime], 
- [libretime,autodj_avec_jingle,secours], id="grille")+ [autodj_avec_jingle,secours], id="default")
  
  
-########################### OPTIONAL : NORMALIZATION ##################################+######################################################## FIN AJOUT POUR L'AUTODJ  
 +   
 +</file>
  
-# remove the # at the beginning of next line to enable normalization+++++
  
-# grille = normalize(target=-13., lufs=true, gain_max=12., gain_min=-12., down=0.1, up=1., window=1., grille)+**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''.
  
-This is one of the many ways to normalize with liquidsoap +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. 
-# see https://www.liquidsoap.info/doc-dev/reference.html#normalize + 
-you may apply it to only on source : live, show(s), jingles... +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). 
-# Or tag tracks with replay gain information.+ 
 +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 ===== 
 + 
 +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) | 
 + 
 +<file liquidsoap radiodragon.liq> 
 + 
 +#!/usr/bin/liquidsoap 
 + 
 + 
 +########################### LIBRETIME ################################## 
 + 
 +libretime = mksafe(input.http("http://192.168.1.105:8000/libretime",max=10.))
  
 ########################### OUTPUT ################################## ########################### OUTPUT ##################################
  
-#output.pulseaudio(id="pulseaudio", grille+output.alsa(libretime
-output.alsa(grille)+ 
 +#configuration possible de sortie sur serveur icecast
 output.icecast(%opus, output.icecast(%opus,
   host="localhost",   host="localhost",
Ligne 112: Ligne 130:
   mount="main.ogg",   mount="main.ogg",
   password= "aUukHdPiAkX2yjUTPTUO0PcNlKdkmsi4",   password= "aUukHdPiAkX2yjUTPTUO0PcNlKdkmsi4",
-  grille+  libretime
-  + 
 </file> </file>
  
 ++++ ++++
  
-**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`.+===== Daemon scripts qui fonctionnent en arrière-plan =====
  
-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.+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.
  
-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).+Malheureusement un bug de Libretime nous empêche de sortir correctement le flux audio sur la carte sonjustement car c'est un daemon **système**.
  
-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`.+Nous utilisons donc un deuxième script liquidsoap afin de pallier à ce problèmeCe 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.
  
-==== Règles de rotation de la playlist ====+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> 
 + 
 +++++ 
 + 
 +===== Règles de rotation de la playlist =====
  
 À 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.1734691962.txt.gz · Dernière modification : de raphm