Hallo,
habe script entdeckt das mir die Hörerzahlen von Laut.fm abfragt.
Da wird mir das ö in Hörer nicht angezeigt und ich muß es mit oe schreiben was mir nicht so gefällt.
ExecuteCommand('LAUTFMSTATUS TEXT Hörer: ’ wirft H?rer raus.
Gibt es da einen Befehl der die Umlaute richtig darstellt?
Naja, wenn Du das komplette Script hier mal Posten würdest, hätten andere Laut.FM Sender vielleicht auch etwas davon und vielleicht lässt es sich sogar relativ einfach anpassen für andere Streamserver.
Ganz so simpel kann eine Abfrage bei Shoutcast oder Icecast natürlich nicht aussehen, die liefern JSON oder XML zurück, was man innerhalb des Scriptes erst mal parsen müsste.
EDIT: Shoutcast 1.9 könnte das glaube ich über die 7.html
EDIT2: Nein, auch da bekommt man eine Komma getrennte Liste, die man noch parsen muss.
@Myka willst Du die gleichen Streams abfragen, zu denen auch Dein Encoder eine Verbindung hat? Der kann ja die Hörerzahl abfragen und auch anzeigen, nur nicht ganz so schön, wie in einem extra Bildschirmobjekt.
Oder geht es darum, dass der Eingabestream auf dem Du sendest und der Ausgabestream, auf den die Hörer zugreifen, nicht miteinander verbunden sind und Du deshalb noch mal direkt beim Streamserver nachfragen musst? Selbst das ginge ja erst mal mit Encoder Boardmitteln.
Auch von mir ein Danke, @SirJacky! Natürlich hätte ich auch die Google-Suche bemühen können… ;-(
@shorty.xs:
Prinzipiell richtig, ich will nur einen der eingetragenen Streams abfragen und den (permanent aktualisierten) Wert als Bildschirmobjekt ausgegeben, weil der Encoder-Status bei uns nicht existiert. Das Levelmeter ist für uns unnötig (zu langsam/ungenau und bei Verwendung von Soundprocessing-Plugins sowieso sinnlos, da die Anzeige hinter dem Plugin läuft) und der “Verbinden/Trennen”-Button könnte versehentlich geklickt werden (schon passiert, vom verantwortlichen Techniker höchstselbst…).
Das Einschalte/Stoppen des Streams selbst geschieht ja über dieses hier: "Altes" ONAIR-Script funktioniert nur noch teilweise, und das hervorragend und zuverlässig.
Und du hast schon wieder recht: Ja, es ist ein anderer Ausgabestream als der Eingabestream (Streampanel…), der ist auch im Encoder eingetragen und liefert auch brav die Daten. Genau diesen (2) möchte ich abfragen und die Zahlen sichbar machen. Auf das Encoder-Einstellungsfenster bzw. die Konfiguration an sich haben die Moderatoren ja keinen Zugriff (Passwort).
Ja, da “Alte OnAIR Script” schwirrte mir auch im Kopf rum.
Das haben wir ja dank @Tondose noch ordentlich aufgebohrt, letzte Version galube ich hier: Ansteuerung des OnAirScreen
Das sollte ja nicht so schwierig sein, hinter den jeweiligen Encoder auch noch die Hörerzahlen zu schreiben. Mit dem Variablen Ansatz den ich da verfolgt habe, müsste man den reinen Zähler, ebenfalls als eigenes Bildschirmobjekt laufen lassen. Wenn Dich die einzelnen Encoder nicht interessieren, kann man das natürlich auch hardcoded machen und die Zahl von Deinem Counter, hinter den Einspeisestream schreiben.
SiSoSnooP fragt ja die Laut.fm API ab und hängt die an einen statischen Text.
procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; Item: IPlaylistItem);
var
stream_1: string;
begin
stream_1 := HTTPGet('http://api.laut.fm/station/DEINE_STATION/listeners');
ExecuteCommand('LAUTFMSTATUS TEXT Hörer: '+ stream_1);
end;
begin
end.
Das verknüpft mit Deinem Ursprünglichen Script, müsst ungefähr so aussehen:
procedure OnLoad;
begin
EnableTimer(100);
end;
procedure OnTimer;
begin
if (Encoder.GetConnections.GetItem(0).GetState = ecsConnected) then begin
ExecuteCommand('ONAIRPRG TEXT ON-AIR Hörer: ' + IntToStr(Encoder.GetConnections.GetItem(i).GetListeners));
ExecuteCommand('ONAIRPRG BACKGROUNDCOLOR #FF0000');
ExecuteCommand('ONAIRPRG FONTCOLOR #FFFFFF');
end
else if (Encoder.GetConnections.GetItem(0).GetState = ecsConnecting) then begin
ExecuteCommand('ONAIRPRG TEXT !OFF AIR!');
ExecuteCommand('ONAIRPRG FONTCOLOR #FFFFFF');
ExecuteCommand('ONAIRPRG BACKGROUNDCOLOR #FF0000');
Sleep(1000);
end
else begin
ExecuteCommand('ONAIRPRG BACKGROUNDCOLOR #00FF00');
ExecuteCommand('ONAIRPRG FONTCOLOR #000000');
ExecuteCommand('ONAIRPRG TEXT KEINE SENDUNG!');
end;
end;
begin
end.
Wobei ich jetzt mal angenommen habe, das der Hörerzähler direkt als 2. Encoder eingetragen ist.
Copy & Paste, ungetestet.
EDIT nach ein paar Tests, müsste es so sein, Code Block noch mal geändert.