Mp3.cue Trackmarkierungen Automatisch aktualisieren

Da ich vor folgendem Problem stehe:

Und ich bisher auch per Script leider keine funktionierende Lösung gefunden habe, würde ich gerne einen Feature Request daraus machen. :slight_smile:

Problem:
Vorproduzierte Sendungen werden in folgenden Format geliefert:

  • Sendung.mp3
  • Sendung.mp3.cue

Importiere ich diese per Hand aus dem Windows Explorer ins Playout oder in die Datenbank, werden die Cue Daten ( Interpret und Titel mit Zeitmarker) korrekt ausgelesen. Auch bei einem Import in die Datenbank werden die Daten richtig gesetzt. Siehe: Beispiel 20 Min Datei

Werden diese Sendungen allerdings aktualisiert und überschrieben, können automatisiert die neuen Cue Daten (Trackmarkierungen) nicht importiert werden. Weder beim erneuten öffnen, per Script oder einem Befehl.

Daher mein Vorschlag der Funktion:

  • mp3.cue Daten beim Öffnen neu Importieren wenn vorhanden
  • mmd Daten beim Öffnen neu Importieren wenn vorhanden

Danke

PS: Zum Workaround importiere ich die Daten aktuell jede Woche von Hand neu in die Datenbank Elemente. Wäre es nicht schlecht wenn mAirList das automatisch erledigen könnte?

2 Likes

Moin, Wurde hier schon eine Lösung gefunden?
Bei mir geht das auch nicht. Version: 7.3.0 Gewerbliche Version

Ich glaube, das lässt sich per Script automatisieren.
Wenn wir mal davon ausgehen, dass deine Sendung in der Datenbank ist:

var
  p: IPlaylistItem;
begin
  p := Database(0).LookupByID(123456); //123456 ist die ID der Sendung
  //p.GetCueData.Clear; // Braucht man evtl. oder nicht
  p.GetCueData.LoadFromCueSheet('D:\Sendung.mp3.cue'); // CueDaten neu laden
  p.AutoSearchPositions([ptCueIn, ptFadeOut, ptCueOut]); // CuePunkte neu ermitteln (Länge geändert?)
  Database(0).SavePlaylistItem(p);
end.

Das habe ich jetzt nur mal zusammengeschrieben, aber nicht getestet. Vielleicht hilft das, um auf den richtigen Weg zu kommen.
Du müsstest dann noch schauen, wann/wie du das automatisiert aufrufst, z. B. per Event.

Im der Datenbank ist die Sendung und als was Speicher ich das ab?
mls, mle

Den Inhalt speicherst du in eine Datei, z. B. autocue.mls (mls ist die “offizielle” Dateiendung für mAirList-Scripts).
Und in deinem Event-Planer wählst du dann als Aktion “Verschiedenes” → “Script ausführen” aus.

In dem Ausschnitt oben ist übrigens ein kleiner Fehler. Um die ID der Sendung in der Datenbank muss man einfache Anführungszeichen (') setzen:

var
  p: IPlaylistItem;
begin
  p := Database(0).LookupByID('123456'); //123456 ist die ID der Sendung
  p.GetCueData.LoadFromCueSheet('D:\Sendung.mp3.cue'); // CueDaten neu laden
  p.AutoSearchPositions([ptCueIn, ptFadeOut, ptCueOut]); // CuePunkte neu ermitteln (Länge geändert?)
  Database(0).SavePlaylistItem(p);
end.
2 Likes

Hey danke dir für deine Mühe, wie könnte das Script aussehen wenn man mehrere Teile einer Sendung vorliegen hat die in einer Stunde laufen?

Die vorproduzierte Sendung wird in jeweils 20 min Teilen geliefert. Also pro Stunde drei Elemente mit entsprechenden mp3.cue Dateien. :thinking:

Ich würde dieses Script gerne verwenden, um die .cue Daten nach der Erstellung der Sendestunde als Nachbearbeitung ein zu binden.

Ich denke mal du musst für jede Datei ein Script und Event erstellen.

1 Like

Naja, im Prinzip würde ein Script für die Sendestunde ansich schon reichen.

Dies würde ich gerne, mit der Funktion: Script zur Nacharbeitung verwenden. (Stundenvorlagen)
Die IDs der Elemente stehen fest in der Datenbank nur handelt es sich eben um drei Elemente pro Stunde dessen mp3.cue Daten neu eingelesen werden müssten nachdem die Stunde erstellt ist. Zur Zeit mache ich das jede Woche per Hand. :yum:

perfekt, das script funktioniert. Danke dir.

1 Like

So doof es auch klingt, und ich respektiere jeden der sein Wissen in Programmierung investiert aber in dem Fall hab ich ChatGPT mal gefragt und das ist dabei raus gekommen

var
  i: Integer;
  p: IPlaylistItem;
  // Ein Array von Records, um jede ID mit ihrem Cue-Dateipfad zu verknüpfen
  items: Array[0..2] of record id: String; cuePath: String; end;
begin
  // Definiere die IDs und die zugehörigen Pfade der Cue-Dateien
  items[0].id := '123456'; items[0].cuePath := 'D:\Sendung1.mp3.cue';
  items[1].id := '234567'; items[1].cuePath := 'D:\Sendung2.mp3.cue';
  items[2].id := '345678'; items[2].cuePath := 'D:\Sendung3.mp3.cue';

  // Durchlaufe das Array und führe die Aktionen für jedes Element aus
  for i := 0 to High(items) do
  begin
    // Suche das Playlist-Element mit der aktuellen ID
    p := Database(0).LookupByID(items[i].id);

    // Lade die Cue-Daten aus der entsprechenden Cue-Datei
    p.GetCueData.LoadFromCueSheet(items[i].cuePath);

    // Ermittle die Cue-Punkte neu
    p.AutoSearchPositions([ptCueIn, ptFadeOut, ptCueOut]);

    // Speichere das aktualisierte Playlist-Element in der Datenbank
    Database(0).SavePlaylistItem(p);
  end;
end.

Und es scheint sogar zu funktionieren. :flushed:
Eingebunden als Script zur Nachbearbeitung in der Stundenvorlage.

2 Likes

Den Id Bereich kann man den beliebig ergänzen? Haste das auch getestet?

Genau, es geht darum in diesem Array die festen IDs und den genauen Pfad zu den entsprechenden mp3.cue Dateien zu definieren.

Ja hab ich und es funktioniert. Auf lange Sicht we re ich aber noch berichten da die Sendung ja immer nur einmal pro Woche aktualisiert wird.

1 Like