Moin Moin,
ich hätte da mal wieder ein Scripting Problem. Ich muss in den Encodern den ICQ Wert ändern.
[code]var conn: IShoutcastEncoderConnection;
begin
conn := IShoutcastEncoderConnection(Encoder.GetConnections.GetItem(0));
conn.BeginUpdate;
try
conn.SetAIM(‘XYZ-123’);
conn.SetICQ(‘123’);
finally
conn.EndUpdate;
end;
end.[/code]
In der aktuellen Scripting Referenz findet sich nichts mit AIM oder ICQ. Es findet sich auch (über die Suchfunktion der Hilfe) kein Shoutcast oder irgend etwas, in der Richtung.
Error running Script: [Fehler] (11:10): Unknown identifier ‘SETAIM’
EDIT: Es scheint so, als wäre das Scripting extrem kastriert worden, Bild im Anhang, Links mAirList 3.1 - rechts mAirList 5.3
Ändert nur nichts an meinem Problem, ich muss die Einträge per Script setzen.
Schau mal, ob das hier funktioniert:
conn.SetField('AIM', 'blabla');
[code]var conn: IShoutcastEncoderConnection;
begin
conn := IShoutcastEncoderConnection(Encoder.GetConnections.GetItem(0));
conn.BeginUpdate;
try
conn.SetField(‘AIM’, ‘XYZ-123’);
conn.SetField(‘ICQ’, ‘123’);
finally
conn.EndUpdate;
end;
end.[/code]
Sieht gut aus!
Gibt’s eine elegante Methode, das für mehrere Encode ausführen zu lassen? Bisher habe ich das so aber Spaghetti Code und Redundanzen soll man ja vermeiden:
[code]var conn: IShoutcastEncoderConnection;
begin
conn := IShoutcastEncoderConnection(Encoder.GetConnections.GetItem(0));
conn.BeginUpdate;
try
conn.SetField(‘AIM’, ‘XYZ-123’);
conn.SetField(‘ICQ’, ‘123’);
finally
conn.EndUpdate;
end;
conn := IShoutcastEncoderConnection(Encoder.GetConnections.GetItem(2));
conn.BeginUpdate;
try
conn.SetField(‘AIM’, ‘XYZ-123’);
conn.SetField(‘ICQ’, ‘123’);
finally
conn.EndUpdate;
end;
end.[/code]
EDIT: Und wo wir gerade dabei sind, geht das bei Icecast Encodern auch? z.B. mit dem Genre Feld?
Moin shorty,
soll denn in allen AIM und ICQ Tags dasselbe drin stehen? Wenn ja lässt sich meines Wissens sowas schön mit einer for-Schleife lösen.
for i := 0 to iMax do
oder sowas in der Art. Hier vielleicht eine Inspiration:
https://www.mairlist.com/forum/index.php/topic,8875.msg58889.html#msg58889
Oben i und iMax als integer festlegen, dann die for-Schleife, dann iMax definieren, dann der begin/end-Block mit deinen Befehlen etc. Du musst natürlich das GetItem(0) bzw. GetItem(2) ebenfalls zu anpassen GetItem(i).
Jain, etwas spezifischer ist es schon.
Ich habe 4 Encoder konfiguriert und im Moment möchte ich beim 1. und 3. die gleichen Daten eintragen. Beim 2. & 4. nach Möglichkeit nicht.
Lass mich raten. Die Encoder in der encoder.ini neu zu sortieren, geht bei deinem umfassenden Projekt nicht, richtig? Also, dass Encoder 1 und 3 dann 1 und 2 sind und die ehemals 2 und 4 nun 3 und 4 sind? Dann könntest du nämlich die Schleife durch 1 und 2 bzw. ab 3 und 4 laufen lassen und rechtzeitg stoppen, sodass die anderen Encoder nicht involviert sind.
Das ginge schon, die kann man ja einfach per drag’n drop in der Config ziehen.
Die sind aber bewusst so angeordnet um Fehlbedienung in unserer Fernsteuerung zu vermeiden.
[ol][li]Sendeweg[/li]
[li]Test-Stream 1[/li]
[li]Notfall Sendeweg[/li]
[li]Test-Stream 2[/li][/ol]
Der Notfall Sendeweg, ist unsere Redundanz, wenn der Haupteinspeise Server ausfällt. Den kann ich maximal noch auf Position 4 ziehen, also möglichst weit weg von der 1. Über die Scripte möchte ich immer die beiden Sendewege aktualisieren, nicht aber die Teststreams.
An diesen Feldern hängen dann Moderatoren und Sendungsinformationen dran, die auf der Webseite und in unserem Webplayer dargestellt werden. Da muss ich zwar irgendwann auch noch mal ran aber im Moment würde ich die Web-API gerne erst einmal so lassen.