Trigger von Events / Modifikation der Playlist durch ein externes Programm?

Hallo,

ich suche die beste Möglichkeit, mit einem selbstgeschriebenen (Python) Programm, dass auf dem gleichen Rechner wie Mairlist (v6) läuft, auf die Playlist Einfluss zu nehmen, um:

  • herauszufinden, ob Mailist gerade im Automatik-Modus oder Assist Modus läuft
  • einen Event-Trigger an mairlist zu senden, damit jetzt ein internes Skript frisch geladen und ausgeführt wird.
  • die aktuelle Playlistplanung (mit Zeiten) auszulesen
  • in dieser Playlist dann Änderungen vorzunehmen (Objekte hinzufügen/verschieben/löschen)

Ich habe vor Jahren schon Playlisten in der Version 4 mit der Mairlist-Skriptsprache erfolgreich modifiert. Damals habe ich aber keinen sinnvollen Trigger für die Skripte gehabt, sondern nur zu festen Zeiten über die Eventverwaltung gestartet.

Ich suche also den besten Weg, Events extern zu triggern, die dann ein beliebiges Skipt laden und ausführen. Wenn ich die aktuelle Playliste sehen kann, ohne einen Event zu triggern, wär das natürlich auch toll.

Von Python aus kann ich unter anderem:

  • TCP/UDP Requests senden
  • REST Schnittstellen ansprechen
  • das Dateisystem überwachen
  • notfalls Hotkeys drücken

Anmerkung: Im Source von Radio-Zoom (https://github.com/Radio-Zoom/mairlist-html-control) habe ich den Befehl “RUNSCRIPT” gesehen, vielleicht ist das ja schon eine Lösung.

Über (weitere) Tipps, wie man extern auf Mairlist Einfluss nimmt, würde ich mich freuen.

Hintergrund: In meiner Stadt startet demnächst ein freies, nichtkommerzielles Radio, dass dafür 2 Lizenzen Mairlist 6 gekauft hat und den Sender damit betreiben möchte. Ich finde das Projekt toll und habe angeboten, ehrenamtlich dran mitzuarbeiten, eine sinnvolle Automation zu schaffen und auch sonst bei der Verwendung der Software zu helfen.

Moin!
Falls noch nicht geschehen, solltest Du eine der beiden Lizenznummern in Dein Forenprofil eintragen, damit Torben die sehen kann.

Hier findest Du alle Fernsteuerbefehle.
https://wiki.mairlist.com/reference:remote_control_commands

REST ist vermutlich die beste Wahl, sofern das in den Lizenzen mitgekauft wurde.
https://wiki.mairlist.com/config:remotecontrol:rest

Außerdem gibt es seit Version 6.1 die Möglichkeit über mAirlist Scripts, eigene REST responses zu bauen. Für das Zoom Interface wollen wir das nutzen, um den Encoder Status abzufragen, Assist/ Auto Abfrage sollte darüber aber auch gehen.
https://forum.mairlist.com/index.php/topic,9552.msg62281.html#msg62281

Allerdings würde ich nicht von extern die Playliste bearbeiten, dazu hast Du innerhalb von mAirlist mit der mAirlistDB genug möglichkeiten.
mAirlist reagiert auf Fernsteuerungstrigger, hat ein eigenes Event System und arbeitet Hintergrundscripte ab, bei denen Du die Trigger selber festlegen kannst. Was brauchst Du da noch von extern, ich glaube, Du denkst zu kompliziert.

Die Datenbank hat bei Verwendung des Datenbankservers eine eigene REST Schnittstelle, darüber habe ich aber keine Dokumentation gefunden. Vereinzelt findet sich was im Forum.

Die komplette Scriptreferenz für mAirlist 6.1 findest Du hier:
https://www.mairlist.com/download/current/mAirList/v6.1/scriptinghelp/

Greetz
Malte

[quote=“shorty.xs, post:2, topic:11981”]Moin!
Falls noch nicht geschehen, solltest Du eine der beiden Lizenznummern in Dein Forenprofil eintragen, damit Torben die sehen kann.[/quote]

Moin Malte, ich hab meine privat selbstgekaufte v3/v4 Home Lizenznummer im Profil, die v6’er gehören dem Sender, das klär ich mal, ob ich die dazu schreiben kann. Torben kann meine Adresse/Stadt sehen, der weiss dann auch so, welcher neue Sender gemeint ist :slight_smile:

[quote=“shorty.xs, post:2, topic:11981”]Hier findest Du alle Fernsteuerbefehle.
https://wiki.mairlist.com/reference:remote_control_commands[/quote]

In der Liste ist RUNSCRIPT <Dateiname.mls> nicht enthalten. Das war das, was ich gesucht hatte.

Ich hab’s inzwischen getestet und konnte eins meiner alten v4’er Scripte über die Fernsteuerungskonsole mit dem Befehl starten, damit habe ich schon mal einen Weg. Vorletzte Woche hab ich auf der Studio-Baustelle andere Befehle aus dieser Liste erfolgreich in Mairlist reingesendet, also erwarte ich, daß das jetzt auch geht…

[quote=“shorty.xs, post:2, topic:11981”]REST ist vermutlich die beste Wahl, sofern das in den Lizenzen mitgekauft wurde.
https://wiki.mairlist.com/config:remotecontrol:rest[/quote]

Das prüfe ich dann zum Wochenende am Sender selbst. Falls nicht, kläre ich mal, ob das nachlizensiert werden kann,
da das mir bestimmt viel Programmierzeit spart und das Ergebnis spannender macht.

[quote=“shorty.xs, post:2, topic:11981”]Außerdem gibt es seit Version 6.1 die Möglichkeit über mAirlist Scripts, eigene REST responses zu bauen. Für das Zoom Interface wollen wir das nutzen, um den Encoder Status abzufragen, Assist/ Auto Abfrage sollte darüber aber auch gehen.
https://forum.mairlist.com/index.php/topic,9552.msg62281.html#msg62281[/quote]

Das klingt ja wunderbar. Genau das, was ich gesucht habe. Dann muss ich nur noch herausfinden,
wo ich dieses Skript in Mairlist anlegen muss, damit der Code auch ausgeführt wird. Da werde ich ggf im Thread
selbst nochmal fragen, wie man das angeht.

[quote=“shorty.xs, post:2, topic:11981”]Allerdings würde ich nicht von extern die Playliste bearbeiten, dazu hast Du innerhalb von mAirlist mit der mAirlistDB genug möglichkeiten.
mAirlist reagiert auf Fernsteuerungstrigger, hat ein eigenes Event System und arbeitet Hintergrundscripte ab, bei denen Du die Trigger selber festlegen kannst. Was brauchst Du da noch von extern, ich glaube, Du denkst zu kompliziert.[/quote]

Das was ich vorhabe, ist tatsächlich kompliziert, sonst wär’s auch keine Herausforderung. Es geht darum, das Sendeprogramm von verschiedenen Stellen abzuholen, zu verarbeiten und automatisiert einzuplanen. Dazu plane ich Near-Live Moderation per Mobiltelefon möglich zu machen (z.B via http://www.mikme.com). Auch plane ich, dass die Hörer im Automatikbetrieb per Messenger auf das Programm Einfluss nehmen können.

Mit den Events habe ich bei v4 gemischte Erfahrungen gemacht. Die haben zuverlässig funktioniert, aber geblockt, damit war Mairlist während der Skriptlaufzeit nicht bedienbar. Also ist das Ziel, alles, was dauert, ausserhalb von Mairlist zu machen und dann nur das Skript zum Einpflegen zu triggern.

[quote=“shorty.xs, post:2, topic:11981”]Die komplette Scriptreferenz für mAirlist 6.1 findest Du hier:
https://www.mairlist.com/download/current/mAirList/v6.1/scriptinghelp/[/quote]

Vielen Dank für die ausführliche Hilfe. Wenn das mit der Integration klappt, werde ich davon berichten, das ist dann so in einigen Monaten soweit.

Stimmt runscript ist da nicht explizit aufgeführt im Wiki.
Gibt es tatsächlich aber schon ewig (let’s do the timewarp): https://forum.mairlist.com/index.php/topic,464.msg2251.html#msg2251

Events innerhalb von mAirlist sind problematisch, wenn sie auf Betriebssystemfunktionen warten müssen, das stimmt. Ich hatte mal versucht, batch Dateien laufen zu lassen, das hat nur so semi-gut funktioniert. Zeitaufwändige Jobs, wie das automatische Herunterladen, von Vorproduzierten Sendungen, überlasse ich daher auch einem externen Event Scheduler. Die Batch files liegen auch im Radio-Zoom Github Repositoriy.
Ich komme bei einem relativ komplexen Programmsystem, mit 2 Events in mAirlist hin. 1. xx:45 erstelle eine neue Playliste für die nächste Stunde, 2. xx:58:30 lade Playliste für die nächste Stunde.

Die nächste Playliste kann eine Rahmenprogrammrotation sein, eine vorproduzierte Sendung, eine Wiederholung oder ein Externer Stream.
Alles andere läuft über Playlisten/ Vorlagen in der mAirlist Datenbank. Wir nutzen die netzwerkbasierende DB wobei das mit der lokalen im Prinzip genau so gut gehen würden.
https://wiki.mairlist.com/tutorials:mairlistdb:getting-started
https://wiki.mairlist.com/tutorials:mairlistdb:music-scheduling

Live Sendungen werden über den Stream Monitor aufgeschaltet, was genaugenommen auch für Deine “Near-Live” Moderation funktionieren würde, je nach dem, was Du dem Moderator an die Hand geben möchtest. Der Rückkanal für die Musik fehlt in diesem Fall natürlich.
Torben scheint da aber auch mit einer weiteren Möglichkeit zu spielen oder darüber nachzudenken: https://forum.mairlist.com/index.php/topic,10088.msg65179.html#msg65179

Mit dem Stream Monitor würde ich das so lösen, dass Du ein Webfrontend baust (wir bauen das Zoom Control Panel in diese Richtung weiter) in dem der Moderator die Playliste mit Backtiminig sieht für den laufenden Titel einen möglichst genauen Timer. Dann brauchst Du nur noch einen Icecast Source (z.B. auf einem Smartphone) und könntest zum Ende des Titels die Connection starten. Titel blendet aus, ich bin vom Smartphone live. Moderation fertig Verbindung trennen, nächster Titel startet, getriggert durch den Stream Monitor.
Habe ich schon getestet. Könnte man für eine Vor-Ort Geschichte mit kleinster Technik, durchaus mal machen. Ist was anderes wenn jemand aus dem Studio eine Live-Schalte fährt aber klingt mit dem Stream Monitor doch ganz passabel.

Den Benefit von Mikeme, sehe ich gerade nicht. Was kann das Teil, was ich nicht mit einem Smartphone+ (halbwegs)amtliches Mikrofon auch kann?
Wobei ich da etwas paranoid vorgehe und möglichst keine 3rd Party Anbieter nutzen möchte. Möglichst alles Open Source und alles auf meinem Server, keine Abhängigkeiten. Ein dienst der heute kostenlos ist, ist es übermorgen vielleicht plötzlich nicht mehr.

Hallo, nur nochmal ein wenig Feedback, wir haben jetzt die REST erfolgreich in Betrieb genommen, nachdem die uns ein paar Stunden in den Wahnsinn getrieben hatte.
Denn die Restschnittstelle hatte uns auf jeden Befehl “Ok” geantwortet, auch auf sinnlose Befehle, solange Port, Benutzer & Passwort stimmten. Lösung war nachher ein “Content-Type” Header “x-www-urlencoded”, nachdem wir den mitgesendet hatten, hat es dann magisch funktioniert. So ist das tatsächlich ein guter Weg. mit Mairlist zu reden.

Das das jetzt klappt, komme ich nochmal auf deinen ursprünglichen Vorschlag zurück

[quote=“shorty.xs, post:2, topic:11981”]Außerdem gibt es seit Version 6.1 die Möglichkeit über mAirlist Scripts, eigene REST responses zu bauen. Für das Zoom Interface wollen wir das nutzen, um den Encoder Status abzufragen, Assist/ Auto Abfrage sollte darüber aber auch gehen.
https://forum.mairlist.com/index.php/topic,9552.msg62281.html#msg62281[/quote]

Kannst du kurz beschreiben, wie man ein solches Script in Mairlist einbindet, damit es dann von der Rest-Schnittstelle erkannt wird?
Der Code ist sehr verständlich, nur die Integration halt nicht. Ist das der Bereich Hintergrundskript auf der Systemsteuerung oder muss man
diesen Code an einer anderen Stelle einbauen? Oder noch globaler, ist Hintergrundskript das, was im englischen Forum als Notification-Script
bezeichnet wird?

Hat sich erledigt: Die Version 6.1 hat ein “Background Script Template.mls” im Mairlist-Verzeichnis und da findet man dann den Einstiegspunkt…
Da ich privat noch 4.3 nutze, hatte ich da keinen solchen Eintrag. Damit sollte ich jetzt alleine weiterkommen…

[quote=“shorty.xs, post:4, topic:11981”]Den Benefit von Mikeme, sehe ich gerade nicht. Was kann das Teil, was ich nicht mit einem Smartphone+ (halbwegs)amtliches Mikrofon auch kann?
Wobei ich da etwas paranoid vorgehe und möglichst keine 3rd Party Anbieter nutzen möchte. Möglichst alles Open Source und alles auf meinem Server, keine Abhängigkeiten. Ein dienst der heute kostenlos ist, ist es übermorgen vielleicht plötzlich nicht mehr.[/quote]

Der Benefit ist dadurch begründet, dass der Workflow mit der App ganz gut ist und das Hardware Mikro von Mikme wirklich klasse klingt. Ich habe allerdings noch nicht auf iOS12 upgedated, der Message Recorder darin soll sehr gut sein und einen ähnlichen Workflow erlauben.