AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi PLS Playlisten speichern und öffnen
Thema durchsuchen
Ansicht
Themen-Optionen

PLS Playlisten speichern und öffnen

Ein Thema von robinWie · begonnen am 6. Apr 2006 · letzter Beitrag vom 29. Mai 2007
Antwort Antwort
Benutzerbild von robinWie
robinWie

Registriert seit: 26. Okt 2005
Ort: Lippcity
404 Beiträge
 
Delphi 2005 Personal
 
#1

PLS Playlisten speichern und öffnen

  Alt 6. Apr 2006, 18:09
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

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;
Robin W.
Ein Computer kann (fast) alles.... Man muss es ihm nur beibringen
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
878 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: PLS Playlisten speichern und öffnen

  Alt 6. Apr 2006, 19:05
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 Dauer := Ini.ReadInteger('playlist','Length'+IntToStr(i),0); für die Länge des einzelnen Liedes - könnte man dann auch einbauen.
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
  Mit Zitat antworten Zitat
Benutzerbild von robinWie
robinWie

Registriert seit: 26. Okt 2005
Ort: Lippcity
404 Beiträge
 
Delphi 2005 Personal
 
#3

Re: PLS Playlisten speichern und öffnen

  Alt 7. Apr 2006, 13:33
Den Titel habe ich nicht als ID3, weil es sich ja nicht umbedingt um MP3s handelt. Es können ja auch Waves sein.
Zitat:
Weswegen ich das hier aber hauptsächlich schreibe ist, dass hier die relativen Pfade fehlen Wink 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 Wink
Diese möglichkeit kenne ich gar nicht . Mal sehen wenn ich Zeit habe werde ich mich damit beschäftigen
Robin W.
Ein Computer kann (fast) alles.... Man muss es ihm nur beibringen
  Mit Zitat antworten Zitat
Wishmaster

Registriert seit: 14. Sep 2002
Ort: Steinbach, MB, Canada
301 Beiträge
 
Delphi XE2 Architect
 
#4

Re: PLS Playlisten speichern und öffnen

  Alt 23. Apr 2006, 07:33
Hi

Zitat:
//Datei auf Gültigkeit überprüfen
if FileExists(File_N) then
das funzrt nicht überall, zbw. winamp Speicher seine CD-Tracks nicht als lesbare date ab sondern als Laufwerk + Track Nr. (cda://L,1) du solltest das überprüfen und umwandeln
(L:\Track01.cda) damit auch andere Programme damit zurecht kommen.

Und was ist mit Internet Streams (http://, ftp://, mms://)


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:
C:\...\bla bla.mp3
C:\...\test.mp3
C:\...\123 123.mp3
C:\...\....!
Da wehre es sicher Stringlisten(TStringList) zu nutzen!



Zitat:
[playlist]
File1=cda://L,1
Title1=Artist - Track 1
Length1=211
Zitat:
[playlist]
NumberOfEntries=1
File1=http://160.79.128.40:7010
Title1=D I G I T A L L Y - I M P O R T E D - EuroDance channel!
Length1=-1
  Mit Zitat antworten Zitat
Aike

Registriert seit: 2. Okt 2004
319 Beiträge
 
#5

Re: PLS Playlisten speichern und öffnen

  Alt 29. Mai 2007, 23:08
Wie sieht denn ein möglicher Funktionsaufruf aus?
Achim
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz