Coin web de Frédéric Péters

fpeters@0d.be

Interopérabilité panikdb & airtime

5 février 2023, 16:10

AirTime était un logiciel libre de diffusion radio, c’est ensuite devenu un service en ligne mais un fork du logiciel, rebaptisé LibreTime, a été créé et continue à être développé. Tout ça marche très bien pour pas mal de monde, dont Studio Néau.

Au lancement l’année dernière, il s’agissait d’avoir une diffusion d’émissions uniquement certains jours, certaines heures, ça évolue et une nouvelle formule se lance ces jours-ci, qui diffusera en continu. Cela passera par des rediffusions d’émissions mais également par la diffusion de playlists, et comme à Radio Panik on affiche sur le site du morceau en cours, venait la question de faire la même chose ici.

De manière bien pratique une API très simple est fournie, il suffit d’interroger /api/live-info-v2 et en retour,

{
    "station": {
        "env": "production",
        "schedulerTime": "2023-02-05 16:13:50",
        "source_enabled": "Scheduled",
        "timezone": "Europe\/Brussels",
        "AIRTIME_API_VERSION": "1.1"
    },
    "tracks": {
        "previous": {
            "starts": "2023-02-05 16:07:40",
            "ends": "2023-02-05 16:11:38",
            "type": "track",
            "name": "METAL PREYERS - On Her Way",
            "metadata": {
                […]
                "track_title": "On Her Way",
                "artist_name": "METAL PREYERS",
                […]
            }
        },
        "current": {
            "starts": "2023-02-05 16:11:37",
            "ends": "2023-02-05 16:15:28",
            "type": "track",
            "name": "Pavel Milyakov & Yana Pavlova - Za Gorami",
            "metadata": {
                "id": 538,
                […]
                "track_title": "Za Gorami",
                "artist_name": "Pavel Milyakov & Yana Pavlova",
                […]
        },
        "next": {
                […]
        }
    },
    "shows": {
        […]
    }
}

Une approche pourrait être de modifier le site pour récupérer cette information à la volée (j’avais fait quelque chose de similaire pour Radio Esperanzah! et l’affichage d’informations tirées de Rivendell), mais ici j’ai préféré introduire un nouveau module qui va de manière régulière interroger l’API et alimenter la base de données locales de diffusion des morceaux, comme s’ils avaient été joués par stamina; cela pourra permettre plus facilement des évolutions comme l’affichage sur le site des morceaux qui ont été diffusés.

Le lancement était aujourd’hui et bonne chose, ça a fonctionné, dans les logs sont au fur et à mesure apparus les morceaux :

(I) New track: Track Mouthwork (Michael Giles, Jamie Muir, David Cunningham)
(I) Playing at 2023-02-05 15:00:00: Track Mouthwork (Michael Giles, Jamie Muir, David Cunningham)
(I) New track: Track Ihmispennut (Kuupuu)
(I) Playing at 2023-02-05 15:03:01: Track Ihmispennut (Kuupuu)
(I) New track: Track 08 Reverse Deja vu (Demo) (HTRK)
(I) Playing at 2023-02-05 15:06:11: Track 08 Reverse Deja vu (Demo) (HTRK)

Et puisque les logs ne font pas tout, c’est aussi apparu sur le site,

capture d’écran montrant le lecteur du site studioneau, avec les informations d’un morceau

En grande partie ce code avait été écrit il y a un an mais laissé de côté quand la décision avait été prise de ne pas diffuser en continu; il y a peu à dire, c’est assez simple, et le finaliser a surtout été une série de détails, logging, packaging, etc.