API

Alles unter /api antwortet mit JSON, ist offen erreichbar und braucht keinen Schlüssel.

Sender und Stile

GET /api/stations

Liefert alle Sender mit Stream-Adresse, stabiler Adresse und Titelzahl, dazu die Liste der Stilrichtungen.

Was gerade läuft

GET /api/now
GET /api/now/:sender

Der laufende Titel eines Senders mit Kennung, Seed, Tempo und Tonart.

Live mitverfolgen

GET /api/now-stream?station=classic

Ein Server-Sent-Events-Strom. Bei jedem Titelwechsel kommt ein Ereignis now mit demselben Objekt wie oben. Genau das benutzt die Overlay-Seite.

const es = new EventSource('/api/now-stream?station=classic');
es.addEventListener('now', e => console.log(JSON.parse(e.data).title));

Bibliothek

GET /api/tracks?style=rap,jazzhop&q=rain&page=0&limit=30
GET /api/tracks/:id

Die Einzelabfrage liefert zusätzlich Seed, Merkmale und Generator-Fassung.

Eigene Mischung

GET /api/mix?styles=rap,acoustic&limit=150
GET /mix.m3u?styles=rap,acoustic
GET /mix.pls?styles=rap,acoustic

Die beiden Playlist-Formate spielen VLC und die VLC-Quelle in OBS direkt ab.

Öffentliche Playlist

GET /api/p/:token
GET /p/:token.m3u

Zustand des Generators

GET /api/status

Sagt, ob gerade neue Songs entstehen (generating), ob die Rechenleistung dafür fehlt (paused_load), ob die Bibliothek voll ist (complete) oder ob der Generator steht (stopped).

Grenzen

  • Die Audio-Adressen unter /audio/ dienen der Wiedergabe. Ein Download der Dateien ist nicht vorgesehen, siehe Lizenz.
  • Schreibende Endpunkte (Konto, Favoriten, Playlists) sind rate-limitiert und brauchen eine Sitzung.
  • Bitte kein Dauerabruf im Sekundentakt. Für Titelwechsel gibt es den SSE-Strom.