Mit jedem Abspielen eines Tracks ein Script ausführen

Um welche Art von „Script“ handelt es sich?

Eine BAT eine EXE eine Tätärätätä :smiley:
Im Moment ist es ein Script, das einen FTP-Sync startet der via Windows-Command aufgerufen wird also ein C:\pfad\datei.exe -parameter

Dann etwa so:

procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; 
  Item: IPlaylistItem);
begin
  ShellExecute('C:\pfad\datei.exe', '-parameter');
end;

begin
end.


Österliche Grüße

TSD

Hallo und erst einmal Danke für das Script.
Da ich bisher mit mAirList keinerlei Scripts in verwendung habe, stellt sich mir jetzt nur die Frage, wo ich das installieren muss, damit es permanent läuft? Also wie und wo setze ich den Trigger dass dieses Script gestartet wird?

OK. Hab es gefunden. In der Systemsteuerung im Punkt Hintergrund-Scripts.
ich hab dein Script in eine textdatei gepackt, die von .txt in .mls umbenannt und als Hintergrundscript hinzugefügt. Bei jedem Player start wird nun die Software gestartet. Funktioniert soweit bestens.

Wo finde ich denn eine Liste, welche Parameter ich übergeben kann?

Denn dann könnte ich auch File-Commandos machen wie

Kopiere Datei vom Mairlist-Verzeichnis in ein neues Verzeichnis.
Nur bräuchte ich dazu die vorhandenen Variablen?

Hier steht’s, ziemlich am Schluß. Und noch einges anderes Wissenswertes für Skript-Einsteiger.

Den Code in einen normalen Text-Editor kopieren und mit der Endung .mls an eine Stelle abspeichern, wo Du ihn wiederfindest. Dann in unter mAirList > Systemsteuerung > Hintergrundskripte > Hinzufügen… installieren. (Oder im separaten Konfigurationsprogramm.)

Beim Anpassen des Pfades darauf achten, daß die Anführungszeichen nicht verloren gehen.

Aktivierte Grüße

TSD

Danke. Aber wo finde ich eine Liste der verfügbaren Variablen die mAirList bereit stellt? Also ich brächte z.B. die mAirList-ID des Titels, desse Source-Dateipfad und Filenamen. Gibt es irgendwo eine Übersicht der Variablen, die zur Verfügung stehen?

Sind die Logging-Variablen verwendbar?

Wie rufe ich das Script auf um %U (die interne ID) und %1 Filename with path an einen Copy-Befehl zu übergeben der

cp %1 C:\neuerfolder\%U aufruft?

ich hab verstanden, dass ich eine Batch via cmd.exe und der batch-datei als option übergeben kann. Demnach könnte ich den CP auch in der Batch abwickeln aber ich muss der CMD.EXE dann eben die beiden PArameter übergebe. Hier verstehe ich die Syntax nicht.

Mein Ziel ist es jede Mairlist-Datei beim Spielen vom Original-Format (meist FLAC) in ein MP3 zu wandeln. Hierzu nutze ich ein Shell-Command, welches ich eben mit dem Sourcefile und dem Destination-File füttern muss.

Also eine Art
C:\programm\wandleaudio.exe %SOURCEFILEWITHPATH C:\ergbenis-pfad\%MAIRLISTID.mp3 - toMP3

Somit wären nacher alle Dateien von einem beliebigen Audio-Format in MP3 gewandelt und zur einfacheren Identifizierung gleich in eine eindeutige ID gewandelt.

Save Editcancel

Da sieht’s doch schon a weng’ komplizierter aus als nur „Ich möchte bei jedem Abspielen ein Skript starten“. Es wäre schön, und das gilt für alle, wenn die Randbedingungen und Anforderungen gleich auf dem Tisch lägen und nicht scheibchenweise daherkämen.

Dann schreibe mal alles genau auf. Insbesondere: wie soll der \ergebnis-pfad\ genau beschaffen sein? Immer derselbe?

Erweiterte Grüße

TSD

Das ist gar nicht “komplizierter”. Ich möchte nur wissen, wie ich die Variablen für die interne ID und den vollenPfadmitDateinamen den mAirList im Logging bereit stellt an das ShellExecute Kommando übergeben muss.
also “nur” ein
ShellExecute('C:\pfad\datei.exe', 'VARIANBE1 VARIABLE2');

wobei VARIABLE1 eben die interne ID und VARIABLE2 der PfadmitDateinamen sein soll.

Wenn ich dann noch eine Liste der vorhandenen Variablen bekommen könnte, wäre das der BÖÖRNER, weil dann kann ich mir das voll zusammenklauben.

Mehr nicht.

Alle meine Versuche mit den Logging-Variablen das zu machen führen zu einem Fehler, der leider auch keine Aussgae in den Log files wirft, mit der man etwas anfangen könnte.

Wenn du also helfen kannst, wäre ich dir dankbar.

Machst Du Dir die Mühe oder ich?
 

Der Rest ist mir klar. Es wäre schön, wenn Du noch meine Frage beantwortetest, damit ich mich nicht noch zweimal dransetzen muß.

Und nein, es gibt keine solche „Liste“. Leider. Solche Inhalte muß man sich aus dem tiefsten Inneren der Anwendung herausklauben. Was ich jedoch gerne für Dich mache. Kein Problem! Nur stelle bitte präzise Anforderungen.

 

Erwartende Grüße

TSD

Da steht doch alles. Ich will nur zwei Variablen übergeben. EInmal die %U und einmal die %1

Kann mir denn niemand sagen, ob die LOGGING-Variablen auch in den Scripten zur Verfügung stehen und wie ich diese übergeben kann?

Mein Script das dann die Parameter auswertet ist fertig. Es fehlt jetzt nur noch wie ich eine Datei aufrufe mit der Übergabe von Parametern die ich in mairlist habe aber nicht weiss wie sie heissen. EInmal %1 und einmal %U aus dem Logging-Bereich.

Mein Script sieht so aus: funktioniert aber nicht, wirft aber auch keinen Fehler.
Die Batch-Datei und deren Funktion an sich ist mit C:\rolandradio\scripts\test.bat PARAM1 PARAM2 getestet und funktioniert (tut das was sie soll).

const
VAR1 = %1;
VAR2 = %U;
COMMAND = 'C:\rolandradio\scripts\test.bat';

procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; 
  Item: IPlaylistItem);
begin
ShellExecute('cmd.exe', '/c' + Chr(32) + COMMAND + Chr(32) + VAR1 + Chr(32) + VAR2);
end;

begin
end.

Was mach ich falsch?

       

Ich brauche keinen Pfad im mAirList-Script. Das löse ich in der Batch-Datei.

Ich brauche als Parameter:

  • die interne ID des Titels
  • den Pfad und den Dateinamen des Titels in Form von c:\pfad\dateiname.ext

falls du wissen willst, was meine Batch im Moment macht:
Sie simuliert den Befehl der erzeugt wird und schreibt das in ein Log:
echo copy %1 c:\test\%2.mp3 >> C:\rolandradio\scripts\ergebnis_log.txt

Das Script an sich funktioniert auch. Wenn ich die Logging-Variablen mit einem anderen Wert (hier PAUL und PETER) simuliere stehen diese auch im Logfile.

Ich muss jetzt NUR NOCH wissen, wie die Variable %U und die Variable %1 aus dem Logging-Bereich von mAirList im Script heissen, damit ich nicht immer NIX übergebe, da %1 und %U eben im Script leer sind

const
VAR1 = 'PAUL';
VAR2 = 'PETER';
COMMAND = 'C:\rolandradio\scripts\test.bat';

procedure OnPlayerStart(PlaylistIndex: integer; PlayerIndex: integer; 
  Item: IPlaylistItem);
begin
ShellExecute('cmd.exe', '/c' + Chr(32) + COMMAND + Chr(32) + VAR1 + Chr(32) + VAR2);
end;

begin
end.

vielleicht kann @Torben ja sagen, welche Variablen es in MLS gibt? Oder jemand mir einen Link oder einen Tipp geben, wie ich an die Variablen ran komme?

Liest Du eigentlich was ich schreibe? Bei mir ist soweit alles fertig. Du schreibst, daß als Parameter ein Zielpfad anzugeben ist.

Ich möchte wissen, ob das eine Konstante ist, oder der sich jeweils ändert. Sonst nix. Ist das so schwer zu beantworten?

Aber bitte: Wende Dich an Torben. Der hilft Dir sicher gerne weiter.

 
Schönen restlichen Karfreitag.

Ich hab doch geschrieben dass ich den Pfad selbst in meiner Batch-Datei definiere. Das hat mit dem Mairlist-Script doch nix mehr zu tun. Warum sollte sich ein Zielpfad auch ändern? Ich brauche doch nur diese zwei verfluchten Variablen als Überhabe-Parameter. Das funktioniert ja auch mit Konstanten werten, aber ich kenne den Bezeichner nicht wie ich in MairlistScript eine Variable die Mairlist sicherlich haben wird übergebe. Noch weiss ich welche Variablen es überhaupt gibt, oder wie ich eine Variable aus einem Player-Item erzeugen würde.

Ich brauche nur diese zwei Parameter. Dass die sich ändern ist ja klar, da ja der Inhalt jedesmal ein anderer ist, nämlich die aktuelle MairlistID des Items im Player und dessen File-Pfad zur Audio-Datei für die Mairlistwiedergabe.

Das hab ich aber doch jetzt schon drei Mal beantwortet.

Ich sitze an dem Ding seit heute vormittag dran und komme nicht weiter, weil es keine Beschreibung eines so - für mich von der Logik her - einfachen Problem gibt.
Auch alle Scripte und Beispiele die ich gegoogelt und im Forum gelesen habe bringen mich kein Stück weiter.
Also hilf wenn du kannst. IRGENDJEMAND! BITTE!

Das war ja gerade die Frage. Aber statt eines einfachen „nein“ haust Du mir sieben pampige Postings um die Ohren.

Genau hierfür

habe ich eine funktionierende Lösung. Aber inzwischen keinen Bock mehr, hier weiterzumachen.

Ach ja: Die eingängliche Aufgabe, nämlich

halte ich mit der Antwort 4 für hinlänglich gelöst.