Zugriff auf ID3-Tags mit mAirList-Script

Hallo,
gibt es eine Möglichkeit auf die Elemente des ID3-Tags einer Datei mit mAirListScript zuzugreifen?
Bis jetzt bekomme ich “nur” Artist und Titel.
Für das Logging ist eine ähnliche Funktion (belibige Felder von ID3-Tags zu loggen) ja schon eingebaut.
Wäre es möglich das auch irgentwie geschickt in mAirListScript zu machen?

Hi,

ich hab es selbst noch nicht ausprobiert, aber so könnte es gehen:

[code]var pi: IPlaylistItem;

begin
pi := CurrentPlaylist.GetItem(0);
SystemLog(IFilePlaylistItem(pi).GetFileTagData(‘TALB’));
end.[/code]

Wichtig ist das “IFilePlaylistItem()” um die Referenz auf das PlaylistItem herum. Dadurch kannst du auf die Methoden zugreifen, die nur Datei-Elemente zur Verfügung stellen. Deshalb ist es auch wichtig, dass man sich sicher ist, dass es sich bei dem Element tatsächlich um eine Datei handelt. Sonst gibt es eine Exception. Wie genau man das am einfachsten rausfindet, muss ich mal ergründen. Bei Delphi schreibt man einfach

if Supports(pi, IFilePlaylistItem) then ...

ich weiß aber nicht, ob das aus PascalScript heraus auch so einfach geht. Hab gerade kein Windows zur Hand, sonst könnte ich es ausprobieren :wink:

Leider ist das IFilePlaylistItem-Interface bislang noch nicht in der CHM-Hilfe dokumentiert. Es sieht so aus:

IFilePlaylistItem = interface ['{25B41388-72A2-41CE-A08C-6D976D3ADF62}'] function GetFilename: string; procedure SetFilename(iValue: string); function GetEffectiveFilename: string; function GetFileTagData(iTag: string): string; procedure UpdateDuration; procedure UpdateTilde; end;

GetFilename und SetFilename ermitteln bzw. setzen den Dateinamen (was auch über GetProperty(‘Filename’) etc. geht). GetEffectiveFilename gibt derzeit auch nur den normalen Dateinamen zurück - die Funktion ist dafür vorgesehen, dass mAirList später mal Dateien aus dem Netzwerk vor dem Abspielen automatisch auf die lokale Platte kopiert. Dann gibt es ja zwei Dateinamen, den “echten” (im Netz) und den “aktuellen” (lokale Platte). GetFileTagData liest bei MP3s den ID3-Tag aus, bei allen anderen Dateiformaten tut es nichts. UpdateDuration ermittelt die tatsächliche Dateilänge und trägt sie ins Duration-Feld des PlaylistItems ein. UpdateTilde schaut, ob eine Raduga-Tilde im Dateinamen ist, und übernimmt die Werte.

Torben