Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Zuhörer von einem Internetstream abfragen (https://www.delphipraxis.net/89006-zuhoerer-von-einem-internetstream-abfragen.html)

robinWie 24. Mär 2007 15:40


Zuhörer von einem Internetstream abfragen
 
Hallo,
Server von Internetradiostream haben ja so eine "Homepage" wo man sehen kann wie viele Leute gerade zuhören. Gugst du hier Wie kann ich die Informationen da "runterziehen" ohne die Website zu parsen. Also den Server direkt abfragen? Geht das vielleicht sogar ganz einfach mit den TSocket Komponenten von Delphi?

Danke im Voraus
Robin

OldGrumpy 24. Mär 2007 15:47

Re: Zuhörer von einem Internetstream abfragen
 
Was Du da verlinkt hast, *ist* eine direkte Serverantwort wenn Du versuchst, auf den Stream zu connecten und Dein Client keine bekannte Playersignatur im HTTPRequest anbietet. Direkter als so wirst Du wohl nur an Daten rankommen wenn Dir der Server selber gehört. Warum willst Du die Website nicht parsen? Ist doch klein genug :)

robinWie 24. Mär 2007 16:02

Re: Zuhörer von einem Internetstream abfragen
 
dann werde ich mir das mit den parsen mal anschauen. Hab gerade gar kein plan wie das geht :-D

OldGrumpy 24. Mär 2007 16:08

Re: Zuhörer von einem Internetstream abfragen
 
Die bequemste Art und Weise ist wohl, sich einfach die Indy-Komponenten zu besorgen (falls man die noch nicht hat) und mit der TIdHttp (oder so ähnlich, bin gerade unterwegs) den entsprechenden Request an den Server abzusetzen, die Antwort kriegst Du dann in einer Stringlist serviert. Die gehste dann einfach Zeile für Zeile durch...

Meflin 24. Mär 2007 17:44

Re: Zuhörer von einem Internetstream abfragen
 
Mit ShoutCast-Servern und Streams hab ich mich schon näher beschäftigt, wenn du das Administrations-Passwort nicht hast, bleibt dir definitiv nichts anderes übrig als die von dir gesuchten Informationen aus der Webseite rauszuparsen. Etwas kürzer sind die auch immer noch in der 7.html "verpackt", um bei deinem Beispiel zu bleiben da: http://drumheads.de:1367/7.html

Wenn das Passwort bekannt ist kann man sich eine XML-Datei runterladen, die man dann aber letztendlich natürlich auch parsen muss (Parsen musst du immer irgendwas ;) ), die gibts in der admin.cgi und zwar so:
Code:
admin.cgi?pass=password&mode=viewxml
Der Output sieht dann in etwa so aus:
Code:
<?xml version="1.0" standalone="yes" ?>
  <!DOCTYPE SHOUTCASTSERVER (View Source for full doctype...)>
- <SHOUTCASTSERVER>
  <CURRENTLISTENERS>5</CURRENTLISTENERS>
  <PEAKLISTENERS>5</PEAKLISTENERS>
  <MAXLISTENERS>5</MAXLISTENERS>
  <REPORTEDLISTENERS>0</REPORTEDLISTENERS>
  <AVERAGETIME>1</AVERAGETIME>
  <SERVERGENRE>Alternative</SERVERGENRE>
  <SERVERURL>http://stream.acira.net</SERVERURL>
  <SERVERTITLE>Acira On Air</SERVERTITLE>
  <SONGTITLE>Good Charlotte - In This World(Murder)</SONGTITLE>
  <SONGURL>http://stream.acira.net</SONGURL>
  <IRC>N/A</IRC>
  <ICQ>NA</ICQ>
  <AIM>NA</AIM>
  <WEBHITS>23</WEBHITS>
  <STREAMHITS>0</STREAMHITS>
  <STREAMSTATUS>1</STREAMSTATUS>
  <BITRATE>32</BITRATE>
  <CONTENT>audio/mpeg</CONTENT>
  <VERSION>1.9.7</VERSION>
- <WEBDATA>
  <INDEX>7</INDEX>
  <LISTEN>0</LISTEN>
  <PALM7>0</PALM7>
  <LOGIN>0</LOGIN>
  <LOGINFAIL>1</LOGINFAIL>
  <PLAYED>7</PLAYED>
  <COOKIE>0</COOKIE>
  <ADMIN>1</ADMIN>
  <UPDINFO>5</UPDINFO>
  <KICKSRC>0</KICKSRC>
  <KICKDST>0</KICKDST>
  <UNBANDST>0</UNBANDST>
  <BANDST>0</BANDST>
  <VIEWBAN>0</VIEWBAN>
  <UNRIPDST>0</UNRIPDST>
  <RIPDST>0</RIPDST>
  <VIEWRIP>0</VIEWRIP>
  <VIEWXML>1</VIEWXML>
  <VIEWLOG>0</VIEWLOG>
  <INVALID>1</INVALID>
  </WEBDATA>
  <LISTENERS />
- <SONGHISTORY>
- <SONG>
  <PLAYEDAT>1174757399</PLAYEDAT>
  <TITLE>Good Charlotte - In This World(Murder)</TITLE>
  </SONG>
- <SONG>
  <PLAYEDAT>1174757379</PLAYEDAT>
  <TITLE>Good Charlotte - Mountain</TITLE>
  </SONG>
- <SONG>
  <PLAYEDAT>1174757366</PLAYEDAT>
  <TITLE>Good Charlotte - I Just Wanna Live</TITLE>
  </SONG>
- <SONG>
  <PLAYEDAT>1174757352</PLAYEDAT>
  <TITLE>Good Charlotte - Misery</TITLE>
  </SONG>
- <SONG>
  <PLAYEDAT>1174757279</PLAYEDAT>
  <TITLE>Good Charlotte - Misery</TITLE>
  </SONG>
  </SONGHISTORY>
  </SHOUTCASTSERVER>
Das zu parsen wäre natürlich etwas einfacher als die index.html, da man immer nur nach <WASIMMER></WASIMMER> regexen müssste, aber die 7.html kann man auch relativ leicht splitten mittels ExplodeExplode beispielsweise ;)

In der ist natürlich nicht alles enthalten, konkret (in dieser Reihenfolge):
  • Derzeitige Zuhörerzahl
  • Streamstatus: 1 oder 0 für on- oder offline
  • Zuhörerrekord
  • Hörerlimit
  • Gemeldete Zuhörer
  • Bitrate
  • Titelinfo: was der Sender überträgt, meistens eben Interpret und Titel
Wenn das nicht reicht, musst du dich zwangsläufig durch den Quelltext der index.html wühlen, was aber nicht ganz so spassig ist :roll:


robinWie 24. Mär 2007 18:32

Re: Zuhörer von einem Internetstream abfragen
 
jo das Passwort hab ich. Für XML hab ich auch ne Componente, hab ich mir nur noch nicht mir beschäftigt xD. Ich werde mal gucken. XML Dürfe ja nicht so schwer sein.

Danke für eure Hilfe.

Meflin 24. Mär 2007 19:10

Re: Zuhörer von einem Internetstream abfragen
 
Noch nebenbei bemerkt: wenn du die TIdHTTP-Komponente verwendest, musst du den User-Agent auf irgendetwas ändern, das das Wort "Mozilla" enthält, ansonsten wirst du absolut nichts zu sehen bekommen!
Delphi-Quellcode:
TIdHTTP.Request.UserAgent := 'User-Agent: libwww/2.17b3 Mozilla // Meflin rules oder sontwas';

Dunkel 26. Mär 2007 18:19

Re: Zuhörer von einem Internetstream abfragen
 
Zitat:

Zitat von Meflin
Noch nebenbei bemerkt: wenn du die TIdHTTP-Komponente verwendest, musst du den User-Agent auf irgendetwas ändern, das das Wort "Mozilla" enthält, ansonsten wirst du absolut nichts zu sehen bekommen!
Delphi-Quellcode:
TIdHTTP.Request.UserAgent := 'User-Agent: libwww/2.17b3 Mozilla // Meflin rules oder sontwas';

DANKE für diesen Hinweis, hat mir SEHR geholfen! :thumb:

Meflin 26. Mär 2007 20:24

Re: Zuhörer von einem Internetstream abfragen
 
Zitat:

Zitat von Dunkel
DANKE für diesen Hinweis, hat mir SEHR geholfen! :thumb:

Freut mich doch immer wenn ich jemanden von seinen schlaflosen Nächten erlösen kann ;)

Aber so ist es eben mit schlecht bis garnicht dokumentierten Programmen/Schnittstellen/Standards: Try until you die :lol:


robinWie 26. Mär 2007 21:08

Re: Zuhörer von einem Internetstream abfragen
 
Ich hab ein Problem mit der XML-Datei. Ich lade sie zum Aktualisieren öfter runter und speicher sie dann immer in die gleiche Datei. Aber wenn ich nach den Update gucke, ist die Datei gar nicht aktualisiert.
Ich habe die Funktion
Delphi-Quellcode:
URLDownloadToFile
aus der Unit URLMon genommen. Es sieht fast so aus, als ob die nicht gut ist. Kenn jemand eine bessere Methode auf einfachen Wegen eine Datei runterzuladen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr.
Seite 1 von 2  1 2      

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