Entwickler-Ecke

Open Source Units - ShoutcastUtils


Gausi - So 21.09.08 13:55
Titel: ShoutcastUtils
Vor einiger Zeit hat user profile iconDunkel hier eine Klasse ADBShoutcastQuery [http://www.delphi-forum.de/viewtopic.php?t=72348] vorgestellt, die es ermöglicht, in der Datenbank von http://www.shoutcast.com nach Webradio-Sendern zu suchen. Da ich sowas für die neue Version meines Players brauche, habe ich mir das mal angeguckt, und erstmal eine Designschwäche (die Synchronisation bei den Threads klappt nicht so richtig) gefunden. Im Laufe des PN-Austauschs zeigte er eine weitere auf: Seine Lösung basiert darauf, die Seite selbst zu parsen und ist davon abhängig, dass das Design der Seite sich nicht ändert. Das ist vor kurzem aber geschehen. Er hat dann für mich gegoogelt und eine kurze Beschreibung einer API gefunden, die wohl erst kürzlich veröffentlicht wurde und auf der diese Unit hier aufbaut.

ShoutcastUtils, v0.1

Was ist das?
Auf http://www.shoutcast.com gibt es eine sehr umfangreiche Liste von Webradiosendern. Auf der Webseite steht eine Suchfunktion zur Verfügung, um in dieser Liste nach Sendern oder Titel zu suchen, die irgendwo gerade laufen. Diese Suche kann hiermit in ein Programm integriert werden.

D.h. in einem Player kann der User z.B. den Suchbegriff "Scooter" eingeben und erhält als Antwort eine Menge von Radiosendern, die gerade ein Stück von Scooter abspielen. Die Trefferquote ist dabei längst nicht 100%, da die Datenbank nicht immer ganz aktuell ist. Er kann dann einen Sender aus dieser Liste anwählen und abspielen. In dem Demo-Projekt wird ein externer Player gestartet, aber natürlich kann das auch intern passieren.

Benötigte Zusatzkomponenten
Die Indys. Ich nutze die 10er-Version. Es kann sein, dass der Code für die 9er etwas anders aussehen muss.

Benötigte Delphi-Fähigkeiten
Um die GUI flüssig bedienbar zu halten, ist der Download der Daten in Threads ausgelagert. Da ich nicht mit TThread arbeite, läuft die Snychronisation über Messages, die von der Hauptform empfangen und verarbeitet werden müssen. Man kann zwar einfach den Code aus dem Beispielprojekt kopieren, aber ein Verständnis dessen, was da passiert, ist sicherlich sinnvoll.

Nutzung
Siehe oben: Beispielprojekt durchgehen und verstehen. Grundgedanke ist dabei immer folgender: Der VCL-Thread startet eine Anfrage, die Klasse beginnt einen neuen Thread zum Runterladen der Informationen aus dem Netz und sendet dann ein Message an das zuständige Fenster, das die Antwort dann aufarbeiten muss.

Lizenz, Einschränkungen
Die Unit ist OpenSource und kann in nicht-kommerziellen (siehe Hinweis unten) Projekten frei verwendet werden. Bei Weiterverbreitung (mit oder ohne Modifikation) des Quellcodes muss der Copyrighthinweis erhalten bleiben.

Für kommerzielle Projekte ist es erforderlich, den Gebrauch der Shoutcast-Datenbank mit der zuständigen Firma (Nullsoft ?) abzuklären und ggf. vertraglich zu vereinbaren.

Die Unit sollte nicht dafür verwendet werden, zu viele .pls-Dateien hintereinander herunterzuladen um eine lokale Kopie davon zu speichern. Es ist wahrscheinlich, dass dadurch der Nutzer der Software von Shoutcast.com (zeitweise) gebannt wird.

Viel Spaß damit!


Dunkel - So 21.09.08 19:37

Hey Gausi!

Sehr schön! Mir gefällt's! :D :zustimm:

Mit der Shoutcast-API scheint sowas ja wirklich recht einfach zu gehen; auf jeden Fall einfacher und besser als meine HTML-Parsing-Implementation. :?


Delete - So 21.09.08 20:03

Respekt!Kann ich nur unterstützen was gesagt wurde! :mrgreen:
Das hab ich gesucht...... :idea: Fürn nen MP3-Player :!: