Codebeispiele mAirListScript

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(‘

Artist: ’ + Item.GetArtist + ‘
Title: ’ + Item.GetTitle + ‘

’);
sl.Add(’’);
sl.Add(’’);
sl.SaveToFile(‘c:\NowPlaying.html’);
sl.Free;
end;
end;
end;

begin
end.[/code]

nur kurz getestet…aber sollte funktionieren

grüße, michi[/quote]

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.

Honorarvorstellungen bitte per PN.

Bitteschön:

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?

Details zur Bezahlung per PN :slight_smile:

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.

grüße, michi

Vielen Dank flashlighter es funtioniert :slight_smile:

Hi Freunde!

Ich habe das Script für die (ziemlich geile) mairlistclock von Charlie Davy erstellt, bekomme aber beim Starten von mAirList folgenden Fehler:

18.11.2009 11:47:54 Fehler Fehler beim Laden von D:\mAirList 3.0\mairlistclock.mls: [Fehler] (57:1): ‘BEGIN’ expected

Woran liegts eventuell?

Script liegt bei…


mairlistclock.mls (1.38 KB)

Da unten stehen ein paar Befehle, die keiner Prozedur (und auch nicht dem Hauptprogramm) zugeordnet sind:

sl := TStringList.Create;
sl.Add(Item.GetArtist + ' - ' + Item.GetTitle);
sl.SaveToFile('d:\mAirList 3.0\currentsong.txt');
sl.Free;

Wann gedachtest du die denn ausführen zu lassen?

Hi Torben!

Beim Start eines Songs bzw. Elementes… Ich habe das Script auch nur von Charlies’s Homepage kopiert und nur die Speicherorte der Dateien angepasst…

Was muss ich tun?

Habs mit Hilfe des englischen Forums hinbekommen!

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).

Vielleicht hat da ja noch jemand eine Idee…

Eine Scriptanfrage:

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.

Wer kann mir da helfen?

Ausführen im Vordergrund:

ShellExecute('c:\woauchimmer.exe', 'optionale parameter');

Ausführen im Hintergrund (ohne Fenster):

ShellExecuteHidden('c:\woauchimmer.exe', 'optionale parameter');

Goil!

Die Datei muss aber nicht zwingend eine *.exe sein, oder? Im vorliegenden Fall ist es nämlich eine *.cmd.

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.

Ich fummel mal…

Ich bin mal wieder zu Blöd:

[BEGIN] ShellExecuteHidden('F:\Backup\werbungscript-v5-rmnradio\rmnradio.cmd',); [END]

Fehlermeldung: 19.01.2010 16:20:27 Fehler Fehler beim Ausführen der Aktion Script ausführen (F:\Backup\mAirList\Werbung.mls): [Fehler] (1:2): Identifier expected

Es darf geschossen werden!

Nu sieht es so aus:

begin ShellExecuteHidden 'F:\Backup\werbungscript-v5-rmnradio\rmnradio.cmd' end.

mL sagt dazu:
[Fehler] (2:20): Invalid number of parameters

begin
  ShellExecuteHidden('F:\Backup\werbungscript-v5-rmnradio\rmnradio.cmd', '');
end.