Liebe Community!
Ich versuche nun schon seit einigen Tagen ein Script zu erstellen, um die Sub-Playliste auch loggen zu können, da man im Logging ja nur die Haupt-Playliste loggen kann. (kleinere Spielerei um das Scripten besser zu verstehen…) Dies funktioniert zwar schon sehr gut, aber 1-2 dinge klappen nicht so wie ich will…
pi := IPlaylistItem(Playlist(1).GetItem(0));
StringList := TStringList.Create;
StringList.Add(pi.GetTitle);
StringList.Add(pi.GetArtist);
StringList.Add(FormatTimeValue('hh:mm:ss', false, pi.GetEffectivePlaybackDuration));
Also: Titel, Interpret und Dauer funktionieren schon, aber ich würde gerne noch den ElementTyp und die Original-URL des Songs bekommen.
StringList.Add(pi.GetItemType);
Im Forum kann man zwar die Funktionen einsehen, diese sind aber von Version 1.5.15, also hab ich die Script.chm der 6er Version heruntergeladen und mir die Funktionen angesehen, aber ich seh mich da leider nicht durch.
Vielleicht kann mir ja jemand von euch weiterhelfen bzw. auf die Sprünge helfen
Danke schon mal für die Hilfe
Patrick
Geht so nicht. Daran bin ich auch schon gescheitert. Die ItemTypes sind Bestandteil einer sogenannten Enumeration, einer definierten Aufzählung von … ja was eigentlich, Konstanten. Die heißen zwar etwa pitMusic
, man kommt aber nicht direkt an den String. Du müßtest Dir so etwas bauen wie
function FindType(Item: IPlaylistItem): string;
var
Type: string;
begin
if Item.GetItemType = pitMusic then
Type := 'Musik'
else if Item.GetItemType = pitVoice then
Type := 'Sprache'
else if Item.GetItemType = pitNews then
Type := 'Nachrichten'
// usw.
else if Item.GetItemType = pitWeather then
Type := 'Weather'
else
Type := 'ohne Typ';
Result := Type;
end;
Einbauen ins Skript über
StringList.Add(FindType(pi));
(ungetestet)
Aufgezählte Grüße
TSD
1 Like
Danke liebe @Tondose das hat schon prima geklappt!
Falls jemand auch vom Script was brauchen kann für die Zukunft erwähn ich hier noch, dass der Bezeichner Type
anscheinend intern verwendet wird und man daher eine andere Bezeichnung für den String nehmen muss. (Sonst kommt -im System-Log- eine Fehlermeldung).
Jetzt würde ich noch bitte die URL des Songs (Also den Pfad der .mp3-Datei) benötigen. Hast du da vielleicht auch einen Tipp auf Lager?
Patrick.
Guter Einwand. Das kommt davon, wenn man das auf der Couch freihändig zusammenkloppt.
Den Pfad hatten wir kürzlich im Nachbarthread:
Pfad := IFilePlaylistItem(pi).GetFilename;
… mit Pfad: string;
. Hatte ich oben vergessen.
Ergänzte Grüße
TSD
1 Like
Danke erst Mal für die Hilfe. Auch der Pfad funktioniert wunderbar. Jetzt noch eine letzte Frage: Wenn ich die Ramp noch mitloggen will, dann hätte ich es so gemacht:
StringList.Add(pi.GetCuePosition(Ramp1)
Aber ich bekomme den Error Unknown identifier 'Ramp1'"
Irgenwie ist da noch der Hund drinnen…
Wieder so eine Falle: Die Cue-Positionen heißen mAirList-intern ptRamp1
, ptCueIn
usw.
Damit nicht genug: Dauern und Positionen werden in mAirList in TTimeValue
gemessen, 1
ist hier eine Sekunde. Damit man ihn formatieren (String!) kann, muß der Wert zuvor noch in das Pascal-übliche TDateTime
-Format umgerechnet werden.
Das Ergebnis (wiederum ungetestet) müßte danach so aussehen:
StringList.Add(FormatDateTime('n:ss', pi.GetCuePosition(ptRamp1) / 86400));
Reklamationen bitte hier posten.
Grüße aus dem Handgelenk
TSD
1 Like
Funktioniert Perfekt!
Dass intern pt… verwendet wird hatte ich zwar zwischenzeitlich herausgefunden, aber auf die Formatierung wäre ich im Leben nie gekommen. Danke liebe @Tondose für deine Hilfe.
Schönen Samstag noch.
Patrick
1 Like