![]() |
Liste von Winamp Radio Streams
Hi Leute,
ich habe eine kleines Internetradio programmiert. Man kann die Adressen der einzelnen Streams per Hand eingeben! Besser wäre aber wenn mein Programm das automatisch machen würde! Hat jemand eine Idee, wie ich die Adressen der Winamp Shoutcast Streams in mein Programm laden kann? Winamp macht das ja auch... |
Re: Liste von Winamp Radio Streams
Hi
Also ich habe den Link zu Winamp Shoutcast DB, in der DB findest du alle Links zu den einzelnen Playlists, die DB ist in XML normal Komprimiert.
XML-Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <WinampXML> - <playlist num_entries="600" label="SHOUTcast top 600"> - <entry Playstring="http://www.shoutcast.com/sbin/tunein-station.pls?id=7807&filename=playlist.pls"> <Name>.977 The 80s Channel (80s Grooves)</Name> <Genre>80s Pop Rock</Genre> <Nowplaying>Steve Winwood - Higher Love</Nowplaying> <Listeners>3327</Listeners> <Bitrate>128</Bitrate> </entry> - <entry Playstring="http://www.shoutcast.com/sbin/tunein-station.pls?id=4907&filename=playlist.pls"> <Name>D I G I T A L L Y - I M P O R T E D - European Trance, Techno, Hi-NRG... we can't define it!</Name> <Genre>Trance Techno Dance</Genre> <Nowplaying>Airwave vs. Rising Star - Sunspot (original mix)</Nowplaying> <Listeners>2939</Listeners> <Bitrate>96</Bitrate> </entry> |
Re: Liste von Winamp Radio Streams
Danke erstmal für die Antwort.
Aber wie kann ich jetzt mit Delphi auf diese DB zugreifen bzw. die Sender in mein Programm laden? |
Re: Liste von Winamp Radio Streams
Ups den link habe ich wohl vergessen, Sorry!
![]() Lade dir die XML runter, Extrahiere die einzelne links zu den Playlists, dann lade die playlist runter extrahiere die einzelne links zu den Server ( ![]() Wen du ne bessere Methode weist das sag bescheid. Das würde mich auch Interessieren. |
Re: Liste von Winamp Radio Streams
Eine andere Möglichkeit wäre die XML-Datei mit der Komponente TXMLDocument auszulesen.
Aber wie genau das funktioniert weiß ich auch noch nicht! Vielleicht hat ja jemand eine kleine Idee wie man gezielt die Radiosender aus der Datenbank bekommt? |
Re: Liste von Winamp Radio Streams
Hat jemand vielleicht eine Idee, wie man diesen XML Code auslesen könnte?
Delphi-Quellcode:
Wie könnte ich zum Beispiel <Name>, <Genre> usw. auslesen?
<entry Playstring="http://www.shoutcast.com/sbin/tunein-station.pls?id=3281&filename=playlist.pls">
<Name>CLUB 977 The Hitz Channel (HIGH BANDWIDTH)</Name> <Genre>Pop Rock Top 40</Genre> <Nowplaying></Nowplaying> <Listeners>3682</Listeners> <Bitrate>128</Bitrate> </entry> Habe zwar schon im Forum gesucht aber ich bin nicht weitergekommen. Könnt ihr mir helfen? |
Re: Liste von Winamp Radio Streams
Also ich habe es jetzt geschafft die XML-Datei mit allen Informationen auszulesen!
Nun möchte ich die einzelnen Radiostreams auch abspielen! Das mache ich mit Hilfe von BASS_StreamCreateURL(...) und BASS_ChannelPlay(...); Zuerst extrahiere ich die URLs aus der XML-Datei! Im 1. Eintrag der Datei wäre es zum Beispiel: "http://www.shoutcast.com/sbin/tunein-station.pls?id=7807&filename=playlist.pls" Das ist ja nun eine vollständige ULR eines Radiosenders. Wenn ich dies nun als Adresse in den IE eingebe, dann wird der Stream ohne Probleme in Winamp abgepielt! Aber wenn ich in meinem eigenen Programm folgendes aufrufe:
Delphi-Quellcode:
Kommt immer eine Meldung, dass der Channel nicht erzeugt werden konnte
Chan := BASS_StreamCreateURL(PCHAR('http://www.shoutcast.com/sbin/tunein-station.pls?id=7807&filename=playlist.pls'), 0, 0, nil, 0);
BASS_ChannelPlay(Chan, FALSE) Liegt der Fehler an der URL? |
Re: Liste von Winamp Radio Streams
Wenn ich das ganze unter Winamp abspiele, dann bekomme ich für den selben Sender wie oben genannt auch
folgende URL: ![]() Welche URL ist jetzt richtig? |
Re: Liste von Winamp Radio Streams
Hi
Das ist nur der link zu der Playlist. (.pls) size = 1kb ![]() jede Playlist (.pls) enthält in der Regel mehrere links zu den Server ( ![]() Chan := BASS_StreamCreateURL(PCHAR( ![]()
|
Re: Liste von Winamp Radio Streams
Danke erstmal...
Doch wie bekomme ich jetzt anhand der Links die einzelnen Adressen bzw. wie bekomme ich das mit delphi hin? Wenn ich das jetzt noch wüsste dann wäre mein Problem gelöst! |
Re: Liste von Winamp Radio Streams
Also jetzt habe ich auch geschafft, die Einträge der Playlist auszulesen mit Hilfe von GetHTML von Delphi-Source.de!
Ich bekomme den kompletten Inhalt der HTML als string zurück! Wie kann man nun zum Beispiel File1, Title1 usw. gezielt auslesen? |
Re: Liste von Winamp Radio Streams
Hi,
also ich habe jetzt erstmal die Anzahl der Einträge ausgelesen:
Delphi-Quellcode:
Bemerkung: Die einzelnen Einträge sind immer mit dem Zeichen #10 getrennt!t := GetHTML(S); p1 := pos('=', t); temp := Copy(t, p1+1, length(t)) ; p2 := pos(#10, Temp); temp := Copy(temp, 1, p2-1); a := strtoint(temp); Ich bekomme somit die Zahl 4 zurück. Nun kann ich nach den 4 Einträgen suchen. Mich interessieren nur File und Title:
Delphi-Quellcode:
Das klappt alles gut! Jetzt wollte ich nur mal wissen, ob man das ganze noch besser
for i := 1 to a do
begin temp := t; str := Format('File%d=',[i]); p1 := Pos(Str,temp); temp := Copy(temp, p1 + Length(str), length(temp)); p2 := pos(#10,temp); temp := Copy(temp,1,p2-1); Memo1.Lines.add(Format('Stream%d %s', [i, temp])); temp := t; str := Format('Title%d=',[i]); p1 := Pos(Str,temp); temp := Copy(temp, p1 + Length(str), length(temp)); p2 := pos(#10,temp); temp := Copy(temp,1,p2-1); Memo1.Lines.add(Format('Title%d %s', [i, temp])); end; machen kann? Vielleicht hat ja jemand einen Vorschlag? |
Re: Liste von Winamp Radio Streams
Hi
Sorry das ich nicht auf deine Letzte PN geantwortet habe, ich hatte kaum zeit. Aber wie ich sehe has du es selbst geschafft. Das (p1, p2) kannst du eigentlich weglassen. Ich habe deinen Code einwenig umgeschrieben. Das Ergebnis wird in eine Stringlist geschrieben siehe meine PlayListClass. Du solltest dir feileicht en TThread erstellen. Ich meine wegen der Auslastung
Delphi-Quellcode:
Procedure TPlaylist.ParseWebPLS(wPLS : String);
var i, a : integer; temp, t : String; str : string; begin FileList.Clear; t := GetHTML(wPLS); try temp := Copy(t, pos('=', t) + 1, length(t)) ; temp := Copy(temp, 1, pos(#10, Temp)-1); a := strtoint(temp); finally for i := 1 to a do begin {Get Server/FileName} temp := t; str := Format('File%d=', [i]); temp := Copy(temp, Pos(Str, temp) + Length(str), length(temp)); FileList.Add(Copy(temp, 1, pos(#10, temp)-1)); {Get Title} temp := t; str := Format('Title%d=', [i]); temp := Copy(temp, Pos(Str, temp) + Length(str), length(temp)); FileTitle.Add(Copy(temp, 1, pos(#10, temp)-1)); end; end; end;
Delphi-Quellcode:
Playlist.ParseWebPLS(‘URL’);
for I := 0 to Playlist.Count - 1 do begin Memo1.Lines.Add(Playlist.GetFileName(i)); Memo1.Lines.Add(Playlist.GetText(i)) end; |
Re: Liste von Winamp Radio Streams
Hi,
@Wishmaster: Funktioniert hervoragend! :hello: Mit dem TThread werde ich mal in Angriff nehmen, aber jetzt bin ich erstmal mit der Lösung vollstens zufrieden... Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 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