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.
Antworten
Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

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:

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

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:

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:

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:

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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

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:

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

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Danke, werde es mir morgen ansehen und dann committen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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

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:

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Benutzeravatar
tjuXx
User
Beiträge: 67
Registriert: Freitag 21. September 2007, 09:25
Wohnort: Bremerhaven
Kontaktdaten:

danke...es klappt jetzt :)

Hätte noch ein Feature Request. Kann man den aktuellen Titel einer bestimmten Station als Fenstertitel nutzen. Der Vorteil: Er wird auch in der Taskleiste angezeigt.

schreibe wenn ich Zeit finde noch ein paar weitere Parser.

Gruß tjuXx
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

tjuXx hat geschrieben:Hätte noch ein Feature Request. Kann man den aktuellen Titel einer bestimmten Station als Fenstertitel nutzen. Der Vorteil: Er wird auch in der Taskleiste angezeigt.
Gute Idee, kannst du den in den Tracker reinschreiben? Sonst vergesse ich den. Ansonsten ist es eigentlich ein recht simpler Patch, nur weiß ich nicht wann ich dazu komme den zu implementieren. Aber ich habe schon mal Release 0.8.8 rausgegeben :)
tjuXx hat geschrieben:schreibe wenn ich Zeit finde noch ein paar weitere Parser.
Super. Ich habe einige Änderungen am Scraping-Code gemacht, mal sehen wie sich das entwickelt. Besonders die CSS-Selektoren finde ich angenehm.

Optimal wäre es in Zukunft html5lib + ElementTree + CSS Selektoren zu verwenden, mal sehen ob das sich als sinnvoll erweist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten