Тема: PlayList
Показать сообщение отдельно
  #7  
Старый 16.08.2008, 20:01
Anti_L@+meR Anti_L@+meR вне форума
Прохожий
 
Регистрация: 19.05.2008
Сообщения: 39
Репутация: 10
По умолчанию

а как написать читалку может кто подскажет или как использовать это:
{------------------------------------
----- PlayList -----
----- ver0.1.5 -----
----- by -----
----- Musabekov Rustem -----
----- Kazakhstan, Astana city -----
----- Tel: +77012417747 -----
----- Tel: +77014215379 -----

Designed in Delphi 7 for all Delphi
and other Object Pascal compilers.

This unit designed for read popular
playlist files formats.

Suported this formats:
• PLS Playlist
• M3U Playlist
• BSPlayer Playlist (not Crypted)
• Light Alloy Playlist
• Media Player Classic Playlist
• Windows Media ASX Playlist

History:
[ver 0.1.0 - 0.1.3]
• Added M3U Playlist
• Added Light Alloy Playlist
• Added BSPlayer Playlist
• Added Media Player Classic Playlist
• Added PLS Playlist
[ver 0.1.4]
• M3U Format is fixed
• Added Windows Media ASX Playlist
• Edited all code
[ver 0.1.5]
• Added OpenPLForce function
• Fixed M3U Format
------------- © 2007 ---------------}
Код:
Unit PlayList;

{$R PlayList.res}

interface

uses
 SysUtils, Classes;

{--- FUNCTIONS ---}

Function GetPLType(FileName: String):String;
{
Get the playlist format.
In result your playlist file format.
}

Function OpenPL(FileName: String; var MusicNames: TStringList; var FileNames: TStringList):boolean;
{
This function geting the playlist file
names and this music string.
If playlist readed result is true else
false.
}
Function OpenPLForce(FileName: String; var MusicNames: TStringList; var FileNames: TStringList):boolean;
{
This function geting the playlist file
names and this music string from strings list file.
If playlist readed result is true else
false.
}

implementation

Function GetPLType(FileName: String):String;
var
f: textfile;
s,fe: string;
label 1;
begin
result:='Unknown';
if fileexists(FileName) then
begin
assignfile(f,FileName);
reset(f);
1:
readln(f,s);
if (trim(s)='')and(eof(f)=false) then
goto 1
else
begin
 if trim(s)='#EXTM3U' then
 result:='M3U Playlist'
 else if copy(s,0,4)='BSPL' then
 result:='BSPlayer Crypted Playlist'
 else if trim(s)='MPCPLAYLIST' then
 result:='Media Player Classic Playlist'
 else if lowercase(copy(s,0,4))='<ASX' then
 result:='Windows Media ASX Playlist'
 else
 begin
  fe:=ansilowercase(extractfileext(FileName));
  if fe='.m3u' then
  result:='M3U Playlist'
  else if fe='.bsl' then
  result:='BSPlayer Playlist'
  else if fe='.mpcpl' then
  result:='Media Player Classic Playlist'
  else if fe='.lap' then
  result:='Light Alloy Playlist'
  else if fe='.pls' then
  result:='PLS Playlist'
  else if fe='.asx' then
  result:='Windows Media ASX Playlist';
 end;
end;
closefile(f);
end;
end;

Function OpenPL(FileName: String; var MusicNames: TStringList; var FileNames: TStringList):boolean;
var
ft: string;
f : textfile;
s : string;
i,ie : integer;
label 1,2,3,4,5,0;
begin
MusicNames.Clear;
FileNames.Clear;
ft:=lowercase(GetPLType(FileName));
if ft='unknown' then
begin
result:=false;
goto 0;
end
{-- Geting M3U Playlist --}
else if ft='m3u playlist' then
begin
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 if uppercase(copy(s,0,7))='#EXTINF' then
 begin
 for i:=7 to length(s) do
 if s[i]=',' then goto 1;
 1:
 MusicNames.Add(copy(s,i+1,length(s)));
 readln(f,s);
 FileNames.Add(s);
 end
 else
 begin
 if uppercase(copy(s,0,7))<>'#EXTM3U' then
 begin
 FileNames.Add(s);
 MusicNames.Add(extractfilename(s));
 end;
 end;
 end;
closefile(f);
end
{-- Geting BSPlayer Playlist --}
else if ft='bsplayer playlist' then
begin
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 FileNames.Add(s);
 MusicNames.Add(extractfilename(s));
 end;
closefile(f);
end
{-- Geting Light Alloy --}
else if ft='light alloy playlist' then
begin
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 if s<>'' then
 begin
 FileNames.Add(s);
 readln(f,s);
 MusicNames.Add(copy(s,4,length(s)));
 end;
 end;
closefile(f);
end
{-- Geting Media Player Classic Playlist --}
else if ft='media player classic playlist' then
begin
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 for i:=0 to length(s) do
 if copy(s,i,9)='filename,' then goto 2;
 2:
 if i<length(s) then
 begin
 FileNames.Add(copy(s,i+9,length(s)));
 MusicNames.Add(extractfilename(FileNames.strings[FileNames.count-1]));
 end;
 end;
closefile(f);
end
{-- Geting PLS Playlist --}
else if ft='pls playlist' then
begin
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 if lowercase(copy(s,0,4))='file' then
 begin
 for i:=0 to length(s) do
 if copy(s,i,1)='=' then goto 3;
 3:
 FileNames.Add(copy(s,i+1,length(s)));
 MusicNames.Add(extractfilename(FileNames.strings[FileNames.count-1]));
 end;
 end;
closefile(f);
end
{-- Geting ASX Playlist --}
else if ft='windows media asx playlist' then
begin
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 if lowercase(copy(s,0,7))='<entry>' then
 begin
 for i:=0 to length(s) do
 if s[i]='"' then goto 4;
 4:
 for ie:=i+1 to length(s) do
 if s[ie]='"' then goto 5;
 5:
 delete(s,ie,length(s));
 FileNames.Add(copy(s,i+1,length(s)));
 MusicNames.Add(extractfilename(FileNames.strings[FileNames.count-1]));
 end;
 end;
closefile(f);
end;
result:=true;
0: //Its End ...
end;

Function OpenPLForce(FileName: String; var MusicNames: TStringList; var FileNames: TStringList):boolean;
var
f : textfile;
s : string;
begin
MusicNames.Clear;
FileNames.Clear;
assignfile(f,FileName);
reset(f);
 while eof(f)<>true do
 begin
 readln(f,s);
 s:=trim(s);
 FileNames.Add(s);
 MusicNames.Add(extractfilename(s));
 end;
closefile(f);
end;

initialization
finalization

{all code by musabekov rustem :}

end.
Admin: Учимся правильно оформлять код. БАН на 3 дня.
Ответить с цитированием