Und ich bisher auch per Script leider keine funktionierende Lösung gefunden habe, würde ich gerne einen Feature Request daraus machen.
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?
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.
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.
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.
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.
Eingebunden als Script zur Nachbearbeitung in der Stundenvorlage.