.gitignore | ||
listagiusta.py | ||
m3u-to-link | ||
ponte.py | ||
README.md | ||
send.liq | ||
timely.liq |
Ripetente
Una raccolta di strumenti utili per insegnare alla vostra radio a ripetere quello che dicono altre radio.
Interpretare il calc: ponte.py
ponteppì è un approccio spericolato ai radioautomation. Il DB è una pagina gestita da Ethercalc. La stessa pagina fa anche da log degli errori. Quello che il pad dice, lui fa: ovverosia, crea un file m3u appropriato.
ponte.py
prende un calc e lo trasforma in un m3u.
Non solo, ma mette anche diagnostica all'interno dello stesso foglio di calcolo! In questo modo utilizzarlo è un po' meno magico.
Servire il file m3u
Il file m3u può ovviamente essere servito in HTTP in modo pubblico. Questo rende poi facile rimandare questo indirizzo da parte di qualsiasi radio automation. Purtroppo non tutti i software di radio automation sanno "capire" gli M3U correttamente.
Un esempio di software che non supporta il play di M3U da http è il metodo input.http
di liquidsoap.
In questo caso, viene utile servire anche un redirect...
Redirect basato su file m3u
Il programma m3u-to-link "trasforma" un file m3u in un redirect. È pensato per apache. La logica è sufficientemente semplice che può sicuramente essere convertita anche per nginx o altri server.
In questo modo, i radio automation possono essere indirizzati non ad un file M3U, ma ad un redirect che punti agli effettivi indirizzi degli stream da rimandare
Player di playlist dinamiche
Molti player (incluso liquidsoap, ma non solo) sanno perfettamente caricare un M3U da un sito e riprodurlo. Il problema è che non si aspettano che la playlist stessa possa cambiare.
Per risolvere questo problema, c'è listagiusta.py
, un semplice programma che controlla un'istanza di mpv
mentre tiene d'occhio una playlist (fa polling). Ogni volta che la playlist cambia, dice a mpv di aggiornarsi.
La playlist può essere remota (usando HTTP o meglio HTTPS) oppure locale (un semplice file).
Stato attuale: Il programma funziona, ma abbiamo dei bug strani: l'audio spesso si sente male, poi dopo un restart riparte giusto. Chissà!
listagiusta dentro liquidsoap
Questo comando deve essere integrato dentro liquidsoap, cosa non difficile grazie ad
input.external.rawaudio
, come dimostrato nel file di esempio send.liq
.
Tutto insieme
Lanciare queste due cose in parallelo:
ponte.py 5 ILVOSTROCALC def.m3u
../send.liq def.m3u
Liquidsoap: sorgenti a tempo
Se usate un semplice switch che indica, nel predicate, un orario, e lo abbinate ad un input.http, il vostro liquidsoap non partirà nelle ore indicate, ma all'inizio. Questo probabilmente non è quello che volete: è inefficiente nel migliore dei casi, ma può fare cose sbagliate (ad esempio in caso di redirect) in altri casi.
timely.liq
mostra come fare per attivare/disattivare sorgenti al momento giusto.