Encoder Meta Individuell Planen

Gaaanz früher, :older_man: als mAirList noch keinen eigenen Encoder hatte, hat mal irgendwer ein kleines Tool geschrieben. Das konnte dann im Wechsel einen oder sogar mehrere feste Texte mit dem log.txt-Input aus mAirList rotieren lassen.
War als eine Art Bot-Hörer-Killer gedacht oder so ähnlich.

Aber das war halt eine externe Schnittstelle zwischen der log.txt und dem - ebenfalls externen - Encoder; mAirList-intern wollte die Community das schon seit [ewig her]; es wurde aber nie realisiert.

Die Script- oder Eventsteuerung wäre da nur noch das Sahnehäubchen obendrauf.

Bei @TomJumbo83’s Frage geht es doch wohl darum, die dynamische Titelübertragung zu unterbrechen und durch einen statischen Text zu ersetzen, oder? :thinking:

Die Variante “Ich setze einen festen Text vor oder hinter die Titelübertragung” ist da schon komplexer.

So abwegig finde ich den Gedanken nicht, aber zwei Hindernisse kommen mir in den Sinn:

  1. Es muss programmiertechnisch möglich sein
    und
  2. Torben muss Zeit (und Nerven) dafür haben - so es denn möglich ist. Der große Verkaufsschlager ist es wahrscheinlich nicht, auch nicht vor dem Hintergrund von DAB+. Bei letzterem wird, glaube ich, gar nicht rotiert (im Gegensatz zur missbräuchlichen Verwendung des RDS-Textfeldes).

Ja, genau darum ging es in meinem Post aus 2018, auch.

Bei DAB, ist das durchrotieren von Zusatzinformationen, sogar noch ausgeprägter. Bei RDS, gibt es ja auch ein Feld, im Radiotext, wo die Info eigentlich hin gehört und es gibt auch Endgeräte, die das korrekt darstellen.
Ob das alles jeweils nur aus der automation kommt, weiß ich nicht.
Ich würde halt im Prinzip gerne alles was man händisch im Encoder einstellen kann, auch per Script setzen können.

Ich bin nicht die große Leuchte im Programmieren, schon gar nicht auf Windows, aber:

Der Streaming Server schickt die Titel ja nur einmal, die Player zeigen immer die letzte “Meldung” vom Streaming Server an, normalerweise also beimTitelwechsel.
Man kann per Curl jedoch jederzeit irgend einen Text zum Streaming Server schicken, der dann vom Player auch angezeigt wird bis ein neuer Text kommt. Das sollte doch auch per Script machbar sein:

“curl -s --get --user-agent '” & USER_AGENT & “’ --data 'pass=” & PASS_WORD & “’ --data ‘mode=updinfo’ --data-urlencode 'song=” & CLAIM & “’ 'http://” & IP_ & “:” & PORT_ & “/admin.cgi’”

Alles was GROSS geschrieben ist, sind Platzhalter für eure Daten.

Bei Shoutcast Servern funktioniert es. Bei Icecast hab’ ich es noch nicht probiert.

Jaaa so in der Art.

Das hatte ich auch mal auf dem Schirm den ganzen automatischen rippern ein wenig die Suppe zu versalzen. Aber das funktioniert schon allein sehr gut wenn man die Metas einfach zeitversetzt rausschickt :wink:

Genau. Oder eben individuell auch mal wie früher glaub ich, mit RDS zwischendrin einfach mal den Radionamen zu ergänzen. Aber ich denke der Standart ist schon veraltet und der ein oder andere Player reagiert darauf eher allergisch. :thinking:

Mir geht es in erster Linie darum vor dem %a-%b für die Songs einen entsprechenden, dynamischen Text zu haben der bspw die Tageszeit ( Guten Morgen etc…) durchreicht.
Oder, falls das bei Playern zu anzeigefehler der Cover führt ( bei XiaLite zb.) Ergänzend im Wechsel. :wink:

Bei anderen Programmen kenne ich das so, das man alternativ auch eine Textdatei angeben kann. Drittsoftware gibt es dazu genügend denke ich.
Vlt würde das schon viele Hürden meistern :wink:

OK, ich verstehe so langsam, dass @TomJumbo83 und ich etwas unterschiedliches möchten.

Bei meinem Fall geht es darum, für einen bestimmten Zeitraum, (z.B. 00:00 bis 04:00 Uhr) kein dynamisches Titelupdate zu haben, sondern durchgängig einen statischen Text, der nicht beim Neustart eines Titels üerschrieben wird, so lange, bis ich im Encoder Feld wieder %a - %b eintrage.

Die gleiche Technik könnte man noch dazu benutzen den Titel um einen Sendungsnamen zu egänzen “Zoom Sound Of The Summer mit Malte :–: %a - %b”, so man das denn möchte. Währe ganz nett für unsere Wiederholungen z.B., um die besser zu kennzeichnen. Das macht man aber nur einmal alle paar Stunden und nicht alle paar Minuten und das wäre eine Teillösung für @TomJumbo83.

Das was @TomJumbo83 eigentich möchte, dass da wirklich durch Zyklisch wa komplett anderes steht, lässt sich warscheinlich mit dem Ansatz von @UdoRadio, am besten lösen.

Ich hatte hier mal eine Frage gestellt zur Benutzung von httpGET in Scripten, weil ich die Syntax (mal wieder) nicht verstehe.
Das wäre dann die mAirlist interne Variante anstatt Curl zu benutzen.
Der entsprechende String zum Update auf dem Server steht hier: Icecast Docs — Admin Interface
Wobei es nicht schaden kann grundsätzlich auch noch das verwendete Charset mit anzuhängen. Siehe Fließtext im Absatz “charset”:Icecast Docs — Config File
Damit macht man sich unabhängig davon, was für den Mount-Point Serverseitig eingestellt ist.

Auch wenn das eine Admin Fuktion ist bei Icecast, braucht man hier nicht das Admin Passwort. Es reicht das source Passwort.

Man müsste also ermitteln, spielen wir gerade etwas, das überhaupt ein Titelupdate triggern soll? Wenn ja, wie lang ist der Titel, und nach der Hälfte des agelaufenen Titels oder bei 1min Restzeit, einen alternativen Text einwerfen und direkt zum Server schicken, so dass beim nächsten Start eines neuen Titels, wieder ein normales Update erfolgt. Das müsste so auch funktionieren, wenn ich Liquidsoap dazwischen habe.
Eigentlich müsste das Liquidsoap auch alleine auffangen können. Das hat ja auch umfangreiche META Trigger und bearbeitungsfunktionen.

Diese Variante kommt aus, ohne die Titel Variable im Encoder umzuschreiben und ist für mich leider nutzlos.

Was mir noch eingefallen ist…
Wenn ich anstatt den %Variablen eine Programm externe TXT oder XML Datei auswählen könnte, müsste ich theoretisch einfach per Logging den Inhalt der TXT oder XML bestimmen können.
Diese per Event gesteuert jeweils zur richtigen Tageszeit oder zeitlich eingeschränktes logging.
Somit wären die Meta Daten unabhängig vom Stream selbst dynamisch steuerbar. Und das mit 95% der schon vorhandenen Boardmittel :wink:

Ich würde das mit RuntimeData lösen. Dabei handelt es sich um “globale Variablen”, die man an verschiedenen Stellen in mAirList setzen und auch auslesen/verwenden kann, insbesondere im Logging.

Beispiel, setzen der Variable SHOWNAME per Script:

SetRuntimeData('SHOWNAME', 'Meine Sendung');

Und dann im Logging/Titelanzeige wie folgt verwenden:

%R{SHOWNAME} - %a - %b

Wenn der Sendungsname manchmal komplett fehlen soll, dann mach es so (Bindestrich als Teil des Namens):

SetRuntimeData('SHOWNAME', 'Meine Sendung - ');

Und dann im Logging den Bindestrich und die Leerzeichen weglassen:

%R{SHOWNAME}%a - %b

Jetzt musst du nur noch in einem Script an einer geeigneten Stelle den Namen setzen.

1 Like

Okay…
Macht es dann mehr Sinn die Scripte der RuntimeData für die jeweilige Show in die Stundenvorlage zb. am Element:“Stundenbeginn” zu setzen? Als *mls Dateien unter Aktionen beim Start?

Oder per Events setzen zu lassen?

Danke schon mal.
Auch wenn ichs mehrfach jetzt durchlesen musste, denke ich das ich es verstanden habe :wink:

Das musst du für dich entscheiden.

Ich persönlich würde ein Hintergrund-Script nehmen, das im OnItemStart überprüft, ob das Element ein bestimmtes Attribut gesetzt hat, und wenn ja, dessen Wert in das RuntimeData übernimmt.

Dann kannst du dir bequem in der Bibliothek eine Reihe von Platzhaltern definieren, die entsprechend getaggt sind, und diese dann in die Vorlagen einbauen.

Direkt am Showopener würde natürlich auch gehen.

Ja gut, das wäre natürlich am praktiabelsten. Jedoch verstehe ich halt von Scripten null :wink:

Ich würde es erst mal in die Stundenvorlage einbauen.
Ich gehe davon aus, daß wenn der wett bereits drin steht es zu keinen Komplikationen kommt.
Später kann ichs ja dann immer noch ergänzen.
Danke für deine Hilfe :+1:

Dem kann man ja abhelfen. Kannst Du mir nochmal mitteilen, was genau wann und wo geschrieben stehen soll?

Noch nicht ganz blickende Grüße

TSD

In erster Linie geht es um die 24h Rotation.
Ein Dynamischer Text der zur passenden Tages oder Nachtzeit in den Meta Daten mitgesendet wird.
Beispiel der momentan als seperater Encoder definiert und per Event script aktiviert/deaktiviert ist:
[ Die Rocknacht - %a - %b ]
Diese läuft zb. von 22 bis 5 Uhr nachts.

Dabei handelt es sich aber um den selben Encoder (PW, Mountpoint etc.) wie der Main Encoder nur eben mit entsprechenden Hintertext.

Wenn das Grundgerüst dann mal steht kann ich die einzelnen Indivduen dann ja eintragen bzw ergänzen. Soweit komm ich dann schon noch mit.

Müsste man dann noch schauen wie wir die Zeitliche einordnung machen.
Aber das ist absolut nicht dringlich.
Ich bin gerade erst mal dabei meine eigene ToDo umzusetzen auf dem neuen Server der dann mit der PostGreSQL laufen wird :stuck_out_tongue:

Danke @Torben
Funktioniert einwandfrei :+1:
image

Zur zeitlichen Umsetzung der verschiedenen Tageszeiten haben wir einfach die Events verwendet.
Quasi für jede Tageszeit ein seperates Scriptfile das die RuntimeData umschreibt.

1 Like

Das muss dann aber auch immer irgendwie befüllt sein oder?
Wenn ich einen leeren Sendungstag habe, dann steht da “- Titel - Interpret”? Bzw. wie im letzten Beispiel “Titel - Interpret -”

Wenn ich das nämlich für meine Zwecke umdrehen würde, wo ich für bestimmte Zeit, einen Sendungsnamen stehen haben möchte und nach dieser Sendung, wieder auf Titel- Interpret wechseln möchte, dann funktioniert das nicht?

Also: Man könnte mittels eines Events einen Befehl wie SHOWNAME SET <Sendungsname> absetzen und ihn in einem Skript dahingehend auswerten, daß man den Sendungstitel weitergibt. Für die unbenamte Zeit befehlen wir zum Beispiel SHOWNAME GENERIC. Damit könnte man wie oben verfahren.

Alternativ versiehst Du Dein (vorproduziertes) Sendungsaudio mit einem speziellen Tag (wo, muß ich noch herausfinden), welcher beim Start dieses Audios ausgewertet wird. Falls die Vorproduktion aus lauter Einzelfiles besteht, die nacheinander automatisiert abgefahren werden sollen, finde ich dieses Verfahren nicht so praktisch.

Geloggte Grüße

TSD


Edit: Oder man übernimmt den Sendungsnamen direkt aus dem Titel des Audios.

Nur zum Verständniss:
Hier geht’s weder um Moderierte Shows oder Vorproduktionen. Es ist einfach eine Anzeige für das 24/7 Programm. Eigentlich war es jetzt erst als Nacht Zusatz Beschriftung gedacht für die Musikthemen Nächte wofür ich immer einen extra Encoder mit den selben Zugangsdaten jedoch anderen Meta Text verwendet habe. Diese Encoder wurden per Event und Script zu den jeweiligen Nächten gestartet. Von der selben Ausspielung. Nur eben mit Vor oder Nachtext.
Tagsüber einfach nur %a - %b
Und nachts dann zum Beispiel %a - %b - Rocknacht.

Problem hierbei war der Encoderwechsel selbst der eigentlich nur eine Mini Unterbrechung war. Jedoch hatte man das immer deutlich gehört im Stream. Jetzt ohne Encoder Wechsel klappt das wunderbar.

Meine Antwort war mehr für @shorty.xs gedacht, der in einem Nachbarfaden das oben geschilderte Problem aufwarf.

Umgeleitete Grüße

TSD

Nein. Dem hierfür haben wir, wie Torben oben beschrieben hat, eine Art “leer” Script. Das muss ich eben bedenken falls die Zeit der alten Anzeige vorbei sein soll das dieses Leer Script ausgeführt wird.

Auch das haben wir bedacht.
Die Meta Eingabe im Encoder sieht Folgendermaßen aus: %a - %b%R
Ohne Leerzeichen und Bindestrich zwischen %b und %R denn im Runtime Data steht dann das Leerzeichen mit Bindestrich richtig drin. Also " - Rocknacht"

Ja, OK. Das hilft mir leider nicht weiter.

Bei mir soll das nicht als Zusatz laufen, sondern als kompletter Ersatz.
Entweder steht der Sendungsname da oder Titel - Interpret.
Und ja @Tondose, es ist eine Playliste, die da läuft, also lauter einzelne Titel.

Darum mein Ursprünglicher Wunsch, per Script die Einstellung im Encoder verändern zu können.