а как написать читалку может кто подскажет или как использовать это:
{------------------------------------
----- 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 дня.