Ich möchte mir auf Basis des unten angegebenen Skripts folgende Funktion realisieren (für letzte mAirList vor 3.0):
Meine Jingles enthalten im Dateinamen das Wort LOOP, wenn sie sich zum Endlosbetrieb eignen. Ich könnte dieses Schlüsselwort auch in den Artist oder den Titel einbauen, wenn das die Sache vereinfachen würde.
Ursprünglich hatte ich die Vorstellung, beim Laden der Cartwalls im Dateiname nachzusehen, ob das Wort LOOP im Dateiname auftaucht. Wenn ja, wird dieser Cartwall-Slot auf “Endloswiedergabe” gesetzt. Wird der Cartplayer entladen, wird LOOP zurückgesetzt.
Da es aber (so wie ich gelesen habe) kein Event gibt, das beim Laden der Cartwall Players auftritt (oder hab ich da was überlesen?), könnte man die Prüfung auch an den Start des Cartwall Players legen und beim Stoppen zwangsläufig den Endlosbetrieb ausschalten.
Gehe ich recht in der Annahme, dass sich die Cartwall-Player vom Scripten her genau so verhalten wie die “normalen” Player?
[quote=“flashlighter, post:39, topic:2848”]Hi,
Doch noch jetzt:
[code]procedure OnPlayerStart(PlayerControl: IPlayerControl; Item: IPlaylistItem);
var sl: TStringList;
begin
if (pos(‘Jingle’, Item.GetTitle) =0) then begin
if (pos(‘Jingle’, Item.GetArtist) =0) then begin
sl := TStringList.Create;
sl.Add(’’);
sl.Add(‘Now Playing’);
sl.Add(’’);
sl.Add(‘
Ja, vermutlich ist es der richtige Ansatz, über die Start- und Stop-Ereignisse zu gehen. Für die Cartplayer gibt es dazu zwei eigene Funktionen, OnCartPlayerStart und OnCartPlayerStop. Schau mal im Notification Script Template (Ordner “scripts”).
Scheint doch zu lange her zu sein, dass ich programmiert habe. Und ehrlichgesagt hab ich gerade keinen Nerv, mich wieder in die Syntax einzuarbeiten.
Ich möchte daher die Erstellung eines derartigen Skrips gegen Honorar ausschreiben. Bzw. suche ich jemand, der mit der Syntax vertraut ist und meinen “Fließtext” in ein lauffähiges Skript verwandelt.
Randbedingungen: mAirList 2.2.(0…3), für Cartwall mit beliebig vielen Slots (konkrete Anwendung: 40 Slots)
Was es tun soll:
OnBeforeCartPlayerStart: Wenn der Dateiname des geladenen Tracks mit LOOP beginnt:
Ja: Loop für diesen Cartplayer aktivieren
Nein: nix am Loop status ändern (könnte ja aus anderen Gründen gesetzt gewesen sein)
OnCartPlayerStop: Wenn der Dateiname des geladenen Tracks mit LOOP beginnt:
Ja: Loop für diesen Cartplayer ausschalten
Nein: nix am Loop status ändern (könnte ja aus anderen Gründen gesetzt gewesen sein, dann soll er auch bleiben)
Sollte das mit dem Dateinamen nicht gehen, müsste ich halt dem ARTIST Tag in MP3 den String LOOP voranstellen.
procedure OnBeforeCartPlayerStart(PlayerControl: IPlayerControl; Item: IPlaylistItem);
begin
if pos('File', Item.GetXMLNodeName) > 0 then // is this a file?
if pos('\LOOP', IFilePlaylistItem(Item).GetFilename) > 0 then
PlayerControl.SetOptions(PlayerControl.GetOptions + [poLoopAudio]);
end;
procedure OnCartPlayerStop(PlayerControl: IPlayerControl; Item: IPlaylistItem);
begin
if pos('File', Item.GetXMLNodeName) > 0 then // is this a file?
if pos('\LOOP', IFilePlaylistItem(Item).GetFilename) > 0 then
PlayerControl.SetOptions(PlayerControl.GetOptions - [poLoopAudio]);
end;
begin
end.
Die Abfrage nach dem “LOOP” am Anfang des Dateinames habe ich etwas einfacher gestaltet - sie erkennt auch Dateien, die in einem Ordner liegen, dessen Name mit “LOOP” anfängt. Ich hoffe, das ist ok - vielleicht macht es die Sache für dich auch einfacher?
Hallo,
Ich kenne mich mit dem ganzen Scripts noch nicht gut aus… wollte mal fragen ob mir hier jemand bzgl. Automation weiterhelfen kann.
Und zwar wollte ich ein Notification Script, bei dem die Auto immer bei EOF Warnung anspringt (also standardmäßig 10 Sek. vor Ende des Titels) und kurze Zeit nach Beginn des nächsten Titels wieder in den Assist wechselt.
[quote=“Torben, post:264, topic:2848”]Die Abfrage nach dem “LOOP” am Anfang des Dateinames habe ich etwas einfacher gestaltet - sie erkennt auch Dateien, die in einem Ordner liegen, dessen Name mit “LOOP” anfängt. Ich hoffe, das ist ok - vielleicht macht es die Sache für dich auch einfacher?
Details zur Bezahlung per PN :)[/quote]
Wie sollte es auch anders sein - das Skript tut genau, was es soll und das mit der Modifikation ist wirklich eine Hilfe!
Dafür öffentlich herzlichen Dank und per PN den Rest.
[quote=“futzel, post:265, topic:2848”]Hallo,
Ich kenne mich mit dem ganzen Scripts noch nicht gut aus… wollte mal fragen ob mir hier jemand bzgl. Automation weiterhelfen kann.
Und zwar wollte ich ein Notification Script, bei dem die Auto immer bei EOF Warnung anspringt (also standardmäßig 10 Sek. vor Ende des Titels) und kurze Zeit nach Beginn des nächsten Titels wieder in den Assist wechselt.[/quote]
hi,
ich kann leider aus zeitgründen schon länger die entwicklung von mairlist nichtmehr mitverfolgen :(, aber das script (als notification-script in der konfig eingetragen) sollte das tun…(ist ungetestet)
procedure OnPlayerEOFWarning(PlayerControl: IPlayerControl);
begin
PlaybackControl(0).SetAutomation(true);
end;
procedure OnPlayerStart(PlayerControl: IPlayerControl);
begin
PlaybackControl(0).SetAutomation(false);
end;
begin
end.
Ich kriege es nur nicht gebacken, die Anzeige auf meinem links stehenden Monitor vernünftig zu justieren, da der Monitor mit einer anderen Auflösung als der Hauptmonitor arbeitet (Haupt= 1440x900, 2. Monitor=1280x1024).
Ich möchte per Event ein Programm bzw. eine Datei starten und gedachte, das per Script zu lösen. Wie muss das aussehen?
grobes Beispiel: run d:\Commercials*****.cmd
Das Script soll nur diese Datei starten, mehr nicht. Die Datei selbst startet einen Prozess, der unsere Werbung auf den lokalen Rechner holt, nach vorhandener audimark-Werbung schaut und dann die Eigenwerbung entsprechend mit Opener & Closer versieht (wenn von audimark was da ist, fällt z.B. der Closer weg, der wird schon von audiamrk angeklemmt). Ist aber eigentlich unerheblich.
Nee, war nur ein Beispiel. Vermutlich kann man sogar “irgendwelche” Dateitypen angeben, und Windows startet dann das passende Programm dazu. Genau wie beim “start”-Befehl in der Shell oder bei Doppelklick auf die Datei. Hab ich aber nicht ausprobiert.