Aktueller Titel > Stream lesen / php öffnen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

Aktueller Titel > Stream lesen / php öffnen

Beitragvon tjuXx » Montag 10. Dezember 2007, 12:49

Hallo,

ich möchte mir ein kleinen Tool schrieben, welches mir den aktuellen Titel eines Internetstreams anzeigt.

Meine erste Frage: Kann ich die Daten aus dem Stream auslesen(*.nsv)???

Die zweite Möglichkeit wäre den Titel aus der Playlist auszulesen:
http://schueler.homeip.net/project-reloaded/index.php

Wie kann ich die Php-Datei vom Sever abrufen und einlesen. Kenne mich mit Webanwendungen leider noch gar nicht aus.

Über Hilfe freue ich mich sehr.....

LG tjuXx
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Beitragvon schlangenbeschwörer » Montag 10. Dezember 2007, 13:24

Gug mal in der Doku unter urllib(, htmllib). Damit kannst du die Seite einlesen. Je nachdem, wie einfach du die Daten findest, kannst du dann entweder mit re suchen, oder das ganze fachmännisch mit beautiful soup zerlegen. Du könntest bei der Seite auch direkt die aktuelle Zeit anhängen, dann hast du noch weniger überflüssige Daten.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Montag 10. Dezember 2007, 13:25

Was den Stream angeht solltest du dir Dokumentation zu dessen Format beschaffen und schauen, ob da relevante extrahierbare Informationen enthalten sind.

Bei der zweiten Idee ist es hier irrelevant, ob die Datei serverseitig in PHP geschrieben ist, da der Server letztlich ein HTML-Dokument ausliefert. Dieses kannst du wie folgt in einen String einlesen:

Code: Alles auswählen

import urllib2

URL = 'http://schueler.homeip.net/project-reloaded/index.php'

if __name__ == '__main__':
    try:
        data = urllib2.urlopen(URL).read()
    except urllib2.URLError, e:
        print 'Fehler:', e
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Beitragvon schlangenbeschwörer » Montag 10. Dezember 2007, 14:07

Ein möglicher weg mit re und noch ohne On Air:

Code: Alles auswählen

re.findall('<td class="artist".*?>(.*?)<', data)[0]
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Beitragvon schlangenbeschwörer » Montag 10. Dezember 2007, 15:36

Alternativ:

Code: Alles auswählen

import urllib2, time

url = time.strftime("http://schueler.homeip.net/project-reloaded/search.php?day=%d&month=%m&hour=%H&minute=%M")

if __name__ == '__main__':
    try:
        data = urllib2.urlopen(url).read()
        artist = re.findall('<td class="artist" .*?>(.*?)</td>', data)
        title = re.findall('<td class="title" .*?>(.*?)</td>', data)
        print "%s von %s" %(title, artist)
    except urllib2.URLError, e:
        print 'Fehler:', e
Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

Beitragvon tjuXx » Mittwoch 12. Dezember 2007, 16:29

super, vielen Dank...da muss ich ja nicht mehr viel machen :)

der Vollständigheit halber:

der Code von "schlangenbeschwörer" gibt manchmal die zwei Titel aus. Habe daher Line 10 geändert:

Code: Alles auswählen

print "%s von %s" %(title[-1], artist[-1])


ausserdem muss "re" noch importiert werden.

jetzt muss nur noch ne kleine GUI her....ich denke das bekomme ich alleine hin :)

Gruß tjuXx
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 12. Dezember 2007, 16:49

Siehe What's On Air, du kannst gerne ein Plugin dafür schreiben.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

Beitragvon tjuXx » Donnerstag 13. Dezember 2007, 15:05

Siehe What's On Air

Was ist "What's On Air"??? wo finde ich es.

LG tjuXx
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Beitragvon schlangenbeschwörer » Donnerstag 13. Dezember 2007, 15:17

Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

Beitragvon tjuXx » Donnerstag 13. Dezember 2007, 16:26

kann mich da gerne mal drann versuchen....... bin noch Anfänger, und bin daher nicht sicher ob der Code richtig ist und es so funktionieren kann???

Ich habe versucht mich ein Bisschen an den anderen Parsern (sagt man das so??) zu orientieren.

Code: Alles auswählen

#!/usr/bin/env python
# -*- encoding: latin-1 -*-

import base, urllib2, time, re

class ProjectReloadedParser(base.Stationbase):
    """Parser for Project-Reloaded
    Homepage: http://www.project-reloaded.com/
    Stream  : http://62.26.4.172:8010/;stream.nsv
              rtsp://62.26.161.89/projectreloaded$livestream.wma"""

    def __init__(self, url=time.strftime('http://schueler.homeip.net/project-reloaded/search.php?day=%d&month=%m&hour=%H&minute=%M'):
        base.StationBase.__init__(self, url)

    def parse(self):
        data   = urllib2.urlopen(url).read()
        artist = re.findall('<td class="artist" .*?>(.*?)</td>', data)
        self.artist = artist[-1]
        title  = re.findall('<td class="title" .*?>(.*?)</td>', data)
        self.title  = title[-1]

    def current_track(self):
        return "%s - %s" %(self.artist, self.title)

Parser = ProjectReloadedParser

if __name__ == '__main__':
    base.test_parser(Parser, 'projectreloaded.html')


Gruß tjuXx
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 14. Dezember 2007, 00:58

Danke, werde es mir morgen ansehen und dann committen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 14. Dezember 2007, 15:27

Ich habe es nach einigen Veränderungen in Revision 289 hinzugefügt.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

Beitragvon tjuXx » Freitag 14. Dezember 2007, 15:48

super.....ich habe mir den Installer "whatsonair-0.8.7.exe" runtergeladen und installiert. Beim ausführen von "seewhatsonair.exe" bekomme ich folgenden Fehler:

Komponente nicht gefunden

"Die Anwendung konnte nicht gestartet werden, weil libglib-2.0-0.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben."


Neuintallation behebt das Problem nicht. Könnt ihr mir helfen???
Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

Beitragvon tjuXx » Freitag 14. Dezember 2007, 15:56

habe gerade das logfile gefunden:

Traceback (most recent call last):
File "seewhatsonair.py", line 13, in ?
File "gtk\__init__.pyo", line 33, in ?
File "gobject.pyo", line 9, in ?
File "gobject.pyo", line 7, in __load
ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 14. Dezember 2007, 16:11

Ja, das GTK-Interface braucht natürlich PyGTK und GTK+. Das muss unter Windows meist selbst installiert werden (GTK+ reicht wohl).

Edit: Und nein, nimm besser die SVN-Version. Das Release ist uralt, aber ich komme nicht dazu ein neues zu machen, denn dann müsste ich erstmal den Code aufräumen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder