![]() |
PLS Playlisten speichern und öffnen
Hallo,
Ich habe ich mir mal Funktionen für das Speichern und Öffnen Playlist im .pls Format geschrieben. Ich denke die kann sicher jemand brauchen :-D
Delphi-Quellcode:
uses {...} ,IniFiles;
//... function OpenPLS(const FileName: string; var Playlist: TStringList): Boolean; var PLS: TIniFile; i,c: integer; File_N: string; begin Playlist:=TStringList.Create; try //Datei oeffnen PLS:=TIniFile.Create(FileName); //Anzahl der Dateien auslesen c:=PLS.ReadInteger('playlist','NumberOfEntries',-1); //Dateien in die Stringliste eintragen for i:=1 to c do begin //Dateinamen auslesen File_N:=PLS.ReadString('playlist','file'+IntToStr(i),''); //Datei auf Gültigkeit überprüfen if FileExists(File_N) then //Wenn Datei existiert Datei Hinzufuegen Playlist.Add(File_N); end; Result:=True; //Beim Fehler "False" ausgeben except Result:=False; end; //Speicher Freigeben PLS.Free; end; function SavePLS(const FileName: string; Playlist: TStringList): Boolean; var PLS: TIniFile; i: integer; File_N: string; begin //Ueberpruefen ob die Playlisten "verbunden" sind if not Assigned(Playlist) then begin Result:=False; Exit; end; try //Datei erstellen PLS:=TIniFile.Create(FileName); //Anzahl der Dateien schreiben PLS.WriteInteger('playlist','NumberOfEntries',Playlist.Count-1); //Dateien schreiebn for i:=1 to Playlist.Count-1 do begin //Gesamten Dateinamen schreiben PLS.WriteString('playlist','file'+IntToStr(i),Playlist.Strings[i]); //Dateinamen Extrahieren und schreiben File_N:=ExtractFileName(Playlist.Strings[i]); PLS.WriteString('playlist','title'+IntToStr(i),File_N); end; Result:=True; //Beim Fehler "False" ausgeben except Result:=False; end; //Speicher Freigeben PLS.Free; end; |
Re: PLS Playlisten speichern und öffnen
Ich hab vor kurzem auch ein solche Funktion geschrieben, und habe daher ein paar Anmerkungen:
Anstelle für den Titel den Dateinamen zu schreiben, ist es in der Regel üblich, dafür das Format "Artist - Titel" zu wählen. Wenn man im Rahmen eines mp3-Players diese Funktion benutzen möchte, und sowieso die ID3-Tags besorgt, kann man das da verwenden. Außerdem gibts noch
Delphi-Quellcode:
für die Länge des einzelnen Liedes - könnte man dann auch einbauen.
Dauer := Ini.ReadInteger('playlist','Length'+IntToStr(i),0);
Das geht natürlich nur, wenn man diese Daten schon hat, oder eine geeignete Struktur in seinem Programm nutzt. Aus der übergebenen Stringlist müsste man dann eher eine Objectlist machen, deren Objekte die einzelnen Info-Felder besitzen. Weswegen ich das hier aber hauptsächlich schreibe ist, dass hier die relativen Pfade fehlen ;-) In einer *.pls gibt es nämlich durchaus die Möglichkeit, die Pfade relativ zu speichern. Das sollte da auf jeden Fall mit rein. Die Funktionen ExpandFilename und ExtractRelativePath sind da recht hilfreich ;-) |
Re: PLS Playlisten speichern und öffnen
Den Titel habe ich nicht als ID3, weil es sich ja nicht umbedingt um MP3s handelt. Es können ja auch Waves sein.
Zitat:
|
Re: PLS Playlisten speichern und öffnen
Hi
Zitat:
(L:\Track01.cda) damit auch andere Programme damit zurecht kommen. Und was ist mit Internet Streams ( ![]() ![]() Ich benutze in meiner Funktion auch TIniFile um die Playlist (.pls) auszulesen aber ich habe gemerkt das einige Playlists kommen ohne die folgenden Parameter wie ([playlist], NumberOfEntries=, File1=, Title1=, Length1= oder (cda://L,1) ) da werden nur die links Angegeben wie Zitat:
Zitat:
Zitat:
|
Re: PLS Playlisten speichern und öffnen
Wie sieht denn ein möglicher Funktionsaufruf aus?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz