Scripts pypad

98 views
Skip to first unread message

Nico Galtier (Radio Larzac)

unread,
Mar 29, 2022, 6:22:36 AM3/29/22
to Rivendell FR
Salut à tous ;)

Je voulais savoir si certains d'entre vous utilise les scripts pypad pour envoyer le noms des carts diffusés par rdrplay vers le site web de votre radio ? Et si oui, quel script utilisez-vous ?

Serait-il possible de partager votre config coté machine de diff et coté serveur ?

Ça m'éviterait d'y passer quelques heures ;)

Merci d'avance pour ce partage et bonne journée à vous !!!

Julien Weiss

unread,
Mar 29, 2022, 10:08:18 AM3/29/22
to rivend...@googlegroups.com

Oui, je fais ça à campus orléans. J’essaye de t’envoyer ma config en fin de journée voir début de matinée demain.

 

 

Julien WEISS

Chargé de développement à Radiocampus Orléans

4 rue de Tours

"le Cône"

45100 Orleans

0238691742

0767263183

 

De : Nico Galtier (Radio Larzac)
Envoyé le :mardi 29 mars 2022 12:22
À : Rivendell FR
Objet :[Rivendell-FR] Scripts pypad

--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "Rivendell FR".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse rivendell-fr...@googlegroups.com.
Cette discussion peut être lue sur le Web à l'adresse https://groups.google.com/d/msgid/rivendell-fr/e69a84f1-32a4-4fee-b7f4-f0d92bbef927n%40googlegroups.com.

 

ininow

unread,
Mar 29, 2022, 11:41:21 AM3/29/22
to rivend...@googlegroups.com

Ce serait super que envoie les config sur cetrte liste, comme ça d'autres pourraient s'en inspirer :D On pourrait même les documenter en ligne, sur un wiki par exemple ;)

Merciii d'avance en tous cas

Clement

Florent Peyraud

unread,
Mar 29, 2022, 11:46:12 AM3/29/22
to rivend...@googlegroups.com
Sur https://wiki.rivendell-fr.org par exemple 😉
Comptes dispo sur simple demande.

Nicolas Galtier

unread,
Mar 29, 2022, 12:13:31 PM3/29/22
to rivend...@googlegroups.com
Super, merci Julien  et oui comme le dit Clément tu si tu peux l'envoyer sur cette mailing list, ça profiterait à d'autres 🙏.

Julien Weiss

unread,
Mar 30, 2022, 5:16:01 AM3/30/22
to rivend...@googlegroups.com

Yes je veux bien un compte sur ce wiki 😊

J’avais aussi un ancien wiki que Erwann a retrouvé avec la web time machine et dedans j’avais documenté quelques astuces qu’on utilisait dans la v2 de rivendell. Ca m’a permis de pas partir de rien quand la v3 est arrivée.

 

Peut être que je pourrais aussi documenter ce wiki avec mes archives.

 

 

Julien WEISS

Chargé de développement à Radiocampus Orléans

4 rue de Tours

"le Cône"

45100 Orleans

0238691742

0767263183

 

De : Nicolas Galtier
Envoyé le :mardi 29 mars 2022 18:13
À : rivend...@googlegroups.com
Objet :Re: RE : [Rivendell-FR] Scripts pypad

 

Super, merci Julien  et oui comme le dit Clément tu si tu peux l'envoyer sur cette mailing list, ça profiterait à d'autres 🙏.

--

Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "Rivendell FR".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse rivendell-fr...@googlegroups.com.

Julien Weiss

unread,
Mar 30, 2022, 6:03:02 AM3/30/22
to rivend...@googlegroups.com

Alors voilà comment j’ai fait

 

Dans rdadmin je vais dans manage host

 

Et dans pypad instances

 

J’en active 2

 

Le pypad_urlwrite.py

 

Et le pypad_filewrite.py

 

Dans le path je mets le chemin d’accés sur la machine serveur puisque j’ai un serveur et des clients

 

Le chemin d’accès c’est /usr/lib64/rivendell/pypad/pypad_urlwrite.py

Et /usr/lib64/rivendell/pypad/pypad_filewrite.py

 

 

C’est le même proncipe avec le filewrite qui me permet de vérifier en local si les fichiers sont bien formatés.

 

Ensuite sur notre site web il y a un cron toutes les 30 secondes qui interrogent le fichier et compare ce qui est écrit dedans et ce qui est écrit sur le site web et le met à jour si nécessaire.

 

Julien WEISS

Chargé de développement à Radiocampus Orléans

4 rue de Tours

"le Cône"

45100 Orleans

0238691742

0767263183

 


Envoyé le :mardi 29 mars 2022 18:13
À : rivend...@googlegroups.com
Objet :Re: RE : [Rivendell-FR] Scripts pypad

 

Super, merci Julien  et oui comme le dit Clément tu si tu peux l'envoyer sur cette mailing list, ça profiterait à d'autres 🙏.

--

Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "Rivendell FR".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse rivendell-fr...@googlegroups.com.

Lionel Corgnet

unread,
Apr 6, 2022, 5:57:03 AM4/6/22
to rivend...@googlegroups.com
Je profite du fil..

Je viens d'essayer sous ubuntu 18 rd 3.6.5 (en VM), install à partir du
script de Florent.
J'ai essayé le script filewrite, mais il ne m'écrit rien (essai dans le
home de mon user et dans le /tmp), et ne me sort pas d'erreur..

Any idea ?

PS : @Julien_Weiss tes photos sont d'une résolution trop faible, à part
le placement des fenêtres je ne peux pas deviner grand chose.

--
Lionel Corgnet - Radio Saint Affrique

Julien Weiss

unread,
Apr 6, 2022, 6:18:26 AM4/6/22
to rivend...@googlegroups.com

Salut à toustes voici la réponse de mon webmestre

 

Plop,

 

Alors.

Pour accéder au serveur et y déposer le fichier en_cours.txt, vous passez par SFTP, port «  à compléter avec le votre ».

Mais ça peut évidemment se configurer sur un autre port, ou même passé par le non sécurisé FTP sur le port 21 (non recommandé).

 

Ensuite, j’ai un cron toutes les minutes qui execute un fichier PHP, pour info, voilà le cron du user « campus » sur le serveur :

* * * * * php /home/campus/www/orleans.radiocampus.org/wp-content/themes/rco/get-titre-en-cours.php

Dans mon fichier PHP, je lis simplement le fichier et je sauve dans la DB le titre en cours.

 

Côté site, il y a un Javascript qui va lire toutes les minutes le titre en cours dans la DB (le dernier enregistré) et l’affiche.

 

Voilou :)

bises

n

 

J’essaye de vous charger es screenshots de plus mbelle manière d’ici peu.

 

 

Julien WEISS

Chargé de développement à Radiocampus Orléans

4 rue de Tours

"le Cône"

45100 Orleans

0238691742

0767263183

 

De : Lionel Corgnet
Envoyé le :mercredi 6 avril 2022 11:57
À : rivend...@googlegroups.com
Objet :Re: RE : RE : [Rivendell-FR] Scripts pypad

--

Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Rivendell FR.

Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse rivendell-fr...@googlegroups.com.

ininow

unread,
Apr 6, 2022, 8:02:57 AM4/6/22
to rivend...@googlegroups.com

Salut la liste,

Pour info pour une mise à jour des titres plus rapide, et sachant que cron est déprécié ou va l'être, il est préférable de passer par systemd / systemctl avec des .timer et des .service, ce qui permet de realiser des tâches à la seconde (toutes les 5 secondes par exemple), c'est ce qu'on a à radio Galère à Marseille pour un système qui tourne avec autre chose que Rivendell

++

Clement

Nicolas Galtier

unread,
Apr 6, 2022, 9:09:26 AM4/6/22
to rivend...@googlegroups.com
Salut Lionel

Dans ton Rivendell, as-tu des sons qui peuvent être lus dans rdairplay ? Sans quoi rien ne pourra être écrit dans ton fichier.

Il faut aussi préciser dans rdadmin, manage groups (de tête) quels groupes de carts doivent transmettre des données now and next.

Par exemple nous avons un groupe "Jingles" auquel nous n'avons pas coché le fait d'envoyer les données des carts qui s'y trouvent vers now and next. Par contre les groupes qui contiennent la musique et les émissions eux ont cette option cochée dans manage groups de rdadmin. Ensuite il faut que rdrplay lise ces carts pour que le fichier alimenté par pypad filewrite se remplisse et s'actualise.

Florent Peyraud

unread,
Apr 6, 2022, 9:38:52 AM4/6/22
to rivend...@googlegroups.com
Hello. Petite précision d'ailleurs. La sélection des groupes qui sont envoyés ou pas dans pypad ne se fait plus au niveau de rdadmin>manage groups, mais dans la configuration du script pypad lui-même. Et par défaut, qui on ne précise pas, alors tous les groupes sont envoyés.
Florent 

--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "Rivendell FR".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse rivendell-fr...@googlegroups.com.

Lionel Corgnet

unread,
Apr 6, 2022, 12:47:40 PM4/6/22
to rivend...@googlegroups.com
Le 06/04/2022 à 14:02, ininow a écrit :
> Pour info pour une mise à jour des titres plus rapide, et sachant que
> cron est déprécié ou va l'être, il est préférable de passer par systemd
> / systemctl avec des .timer et des .service, ce qui permet de realiser
> des tâches à la seconde (toutes les 5 secondes par exemple), c'est ce
> qu'on a à radio Galère à Marseille pour un système qui tourne avec autre
> chose que Rivendell

Merci pour ces infos. Un exemple serait le bienvenu :-)

ininow

unread,
Apr 6, 2022, 2:12:56 PM4/6/22
to rivend...@googlegroups.com
Pour faire suite à la demande de Lionel

La dépréciation de Cron invite à utiliser systemd. ça tombe bien ça
marche très bien et ça permet d'exécuter des tâches à des intervalles
plus serrées que 1 min, donc parfait pour transférer les noms des titres
diffusés dans une radio, surtout si c'est des morceaux de punk de 1'30 ...

En pièce jointe un exemple de deux fichiers à ajouter dans le dossier
/etc/systemd/system/

> le . service sert à spécifier le script à faire tourner ou la tache à
effectuer

> le .timer sert à configurer la fréquence à laquelle sera exécuté le
.service

L'exemple en pj consiste à lancer le script /root/rds.sh toutes les 5
secondes. Y'a qq commentaires dans les fichiers

Je ne sais plus si il faut loader ou starter les .timer genre #
systemctl start tache.timer ou si pas besoin


Ces explications sont compatibles pour les distributions Debian, je ne
sais pas pour les autres distros

plus d'infos là : https://wiki.debian.org/fr/systemd

ou là :
- man systemd.timer
- man systemd.service


Bonne soirée

Clem
tache.service
tache.timer

Radio Larzac

unread,
Jun 3, 2024, 11:39:53 AM6/3/24
to Rivendell FR
Bonjour à tous,

Je déterre un vieux sujet, mais c'est pour partager un peu d'info sur ce qu'on a mis en place du coup côté Radio Larzac :

Mise en place Metadata Rivendell :
- RDAdmin > Manage Hosts > Edit Host sur lequel le script va tourner> PyPAD Instances
-- Une entrée pour l'écriture de deux fichiers en local avec le script pypad_filewrite.py fourni par Rivendell, dont un qui sera ensuite pousser en scp vers le serveur WordPress car le script qui permet de le faire urlwrite.py ne fonctionnait pas.
-- Une entrée pour l'envoi des métadonnées vers Icecast modifié par Radio Larzac avec le script ci-joint

Contenu du script pour l'écriture de fichier en local :
; Il y a deux fichiers crées avec ce script. Le premier dans /tmp/historique_lecture.txt liste tout l'historique des lectures dans la section [File1] de ce script
; Le deuxième qui est dans la section [File2] et s'enregistre dans /tmp/derniere_lecture.txt ne liste que le dernier élément lu par RdAirPlay

; Section Header
;
; One section per file to be written should be configured, starting with
; 'File1' and working up consecutively
[File1]

; Filename
;
; The full path to the file to be written.  The filename may contain filepath
; wildcards as defined in Appendix C of the Rivendell Operations and
; Administration Guide.  The user running RDAirPlay must have write
; permissions for this location.
Filename=/tmp/historique_lecture.txt

; Append Mode
;
; If set to '0', the file will be completely overwritten with the contents
; of each PAD update.  If set to '1', each update will be appended to the
; existing contents of the file.
Append=1

; Format String.  The string to be output each time RDAirPlay changes
; play state, including any wildcards as placeholders for metadata values.
;
; The list of available wildcards can be found in the 'metadata_wildcards.txt'
; file in the Rivendell documentation directory.
;
; format d'origine
; FormatString=NOW: %d(ddd MMM d hh:mm:ss yyyy): %t - %a\nNEXT: %D(ddd MMM d hh:mm:ss yyyy): %T - %A\n
; format modifié
FormatString= %d(d-MM-yyyy hh:mm) - %a - %t\n
; Encoding.  Defines the set of escapes to be applied to the PAD fields.
; The following options are available:
;
;  0 - Perform no character escaping.
;  1 - "XML" escaping: Escape reserved characters as per XML-v1.0
;  2 - "Web" escaping: Escape reserved characters as per RFC 2396 Section 2.4
Encoding=0

; Log Selection
;
; Set the status for each log to 'Yes', 'No' or 'Onair' to indicate whether
; state changes on that log should be output.  If set to 'Onair', then
; output will be generated only if RDAirPlays OnAir flag is active.
MasterLog=Yes
Aux1Log=No
Aux2Log=No
VLog101=No
VLog102=No
VLog103=No
VLog104=No
VLog105=No
VLog106=No
VLog107=No
VLog108=No
VLog109=No
VLog110=No
VLog111=No
VLog112=No
VLog113=No
VLog114=No
VLog115=No
VLog116=No
VLog117=No
VLog118=No
VLog119=No
VLog120=No


; Additional files can be written by adding new sections...
;
[File2]
Filename=/tmp/derniere_lecture.txt
Append=0
FormatString= %a - %t\n
Encoding=0
MasterLog=Yes
Aux1Log=No
Aux2Log=No
VLog101=No
VLog102=No
VLog103=No
VLog104=No
VLog105=No
VLog106=No
VLog107=No
VLog108=No
VLog109=No
VLog110=No
VLog111=No
VLog112=No
VLog113=No
VLog114=No
VLog115=No
VLog116=No
VLog117=No
VLog118=No
VLog119=No
VLog120=No


[NowGroups]
; Group Selection
;
; Filter updates according to the Group membership of the 'now' playing
; event. If no groups are listed here and in the [NextGroups] section,
; then ALL updates will be forwarded
; without regard to Group.
Group1=Emissions
Group2=Fifille
Group3=Moman
Group4=Macros
Group5=Zic Nuit

; [...] ; Additional groups can be added...

[NextGroups]
; Group Selection
;
; Filter updates according to the Group membership of the 'next' playing
; event. If no groups are listed here, If no groups are listed here and in
; the [NowGroups] section,then ALL updates will be forwarded
; without regard to Group.
; Group1=MUSIC
; Group2=LEGAL
; [...] ; Additional groups can be added...



Contenu du fichier pour l'envoi vers IceCast (on utilise le fichier .py en pièce jointe)

; Section Header
;
; One section per Icecast2 mountpoint is configured, starting with
; 'Icecast1' and working up consecutively
[Icecast1]

; User Name
;
; The username of the Icecast2 account to which to send updates.
Username=admin

; Password
;
; The password of the Icecast2 account to which to send updates.
Password=VotreMotDePasse

; Host Name
;
; The fully-qualified domain name or IP address of the Icecast2 server
Hostname=stream.radiolarzac.org

; Host Port
;
; The TCP port number of the Icecast2 server
Tcpport=8000

; Mountpoint
;
; The Icecast2 mountpoint
Mountpoint=/radiolarzac

; Format String.  The metadata to be sent each time RDAirPlay changes
; play state, including any wildcards as placeholders for metadata values.
;
; The list of available wildcards can be found in the 'metadata_wildcards.txt'
; file in the Rivendell documentation directory.
;
FormatString=%a - %t

; Log Selection
;
; Set the status for each log to 'Yes', 'No' or 'Onair' to indicate whether
; state changes on that log should be output to this account.  If set
; to 'Onair', then output will be generated only if RDAirPlays OnAir flag
; is active.
MasterLog=Yes
Aux1Log=No
Aux2Log=No
VLog101=No
VLog102=No
VLog103=No
VLog104=No
VLog105=No
VLog106=No
VLog107=No
VLog108=No
VLog109=No
VLog110=No
VLog111=No
VLog112=No
VLog113=No
VLog114=No
VLog115=No
VLog116=No
VLog117=No
VLog118=No
VLog119=No
VLog120=No


[NowGroups]
; Group Selection
;
; Filter updates according to the Group membership of the 'now' playing
; event. If no groups are listed here and in the [NextGroups] section,
; then ALL updates will be forwarded
; without regard to Group.
; Group1=MUSIC
; Group2=LEGAL
; [...] ; Additional groups can be added...
Group1=Emissions
Group2=Fifille
Group3=Moman
Group4=Macros
Group5=Zic Nuit

[NextGroups]
; Group Selection
;
; Filter updates according to the Group membership of the 'next' playing
; event. If no groups are listed here, If no groups are listed here and in
; the [NowGroups] section,then ALL updates will be forwarded
; without regard to Group.
; Group1=MUSIC
; Group2=LEGAL
; [...] ; Additional groups can be added...




Un service file_transfer.service lance le script dans ~/Documents/watch_and_transfer.sh
Ci-dessous le contenu de file_transfer.service :

~$ cat /etc/systemd/system/file_transfer.service
[Unit]
Description=File Transfer Service
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
ExecStart=/home/VotreUtilisateur/Documents/watch_and_transfer.sh
User=rivendirect
Group=rivendirect

[Install]
WantedBy=multi-user.target


Le fichier watch_and_transfer.sh est ci-joint
Il faut que vous installiez les packages en charge de faire tourner inotifywait : sudo apt install inotify-tools

Ce script vérifie les modifications du fichier /tmp/derniere_lecture.txt et manipule le fichier d'historique (conservation des 72 dernières heures de diff, mise en forme, etc..)
Dès modification, il pousse via scp avec votreuti...@192.168.x.y vers un sous-dossier de WordPress : /media/rlarzac/www/sites/radiolarzac.org/web/wp-content/

Un fichier get_history.php dans le meme dossier lit le fichier historique_cleaned.txt et transforme le contenu en un .json :
<?php
// Chemin vers le fichier now.txt
$file = './historique_cleaned.txt';

// Lire le contenu du fichier now.txt
$content = file_get_contents($file);

// Retourner le contenu au format JSON
echo json_encode(['content' => $content]);
?>

Sur WordPress > Apparence > Editeur de fichiers des thèmes > ouvrir le fichier js/ajax.js et ajouter à la fin :
function getHistoryContent() {
    // Faites une requête AJAX pour obtenir le contenu de historique_lecture.txt
    fetch('/wp-content/get_history.php')
    .then(response => response.json())
    .then(data => {
// Mettez à jour le contenu de votre élément HTML avec le contenu obtenu
document.getElementById('history-content').innerText = data.content;
    });
}

// Démarrez la boucle pour obtenir le contenu toutes les 120 secondes
setInterval(getNowContent, 120000);

// Obtenez le contenu immédiatement lors du chargement de la page
getHistoryContent();


Sur WordPress > Apparence > Editeur de fichiers des thèmes > ouvrir le fichier function.php :
function get_history_function() {
wp_enqueue_script('get_history_script', get_template_directory_uri() . '/js/ajax.js', array(), '1.0', true );
}


Ajouter ensuite une balise du type où vous voulez : <div id="history-content">Historique des lectures</div>
Chez nous c'est https://www.radiolarzac.org/historique-des-lectures/

Et aussi du coup, on a pu utiliser le plugin Radio Player ( https://fr.wordpress.org/plugins/radio-player/ ) qui va récupérer les infos du flux Icecast et vue que les métadonnées sont à présent poussées sur Icecast, cela permet d'afficher le titre et l'artiste en cours de lecture.

J'espère que cela donnera des idées à certains d'entre vous !

Bon courage !

Kévin pour Radio Larzac
watch_and_transfer.sh
pypad_icecast2_larzac.py
Reply all
Reply to author
Forward
0 new messages