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
Aktueller Titel > Stream lesen / php öffnen
-
- 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.
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:
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
-
- 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]
-
- 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
- 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:
ausserdem muss "re" noch importiert werden.
jetzt muss nur noch ne kleine GUI her....ich denke das bekomme ich alleine hin
Gruß tjuXx
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])
jetzt muss nur noch ne kleine GUI her....ich denke das bekomme ich alleine hin
Gruß tjuXx
-
- User
- Beiträge: 419
- Registriert: Sonntag 3. September 2006, 15:11
- Wohnort: in den weiten von NRW
- Kontaktdaten:
- 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.
Gruß tjuXx
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')
- 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:
Neuintallation behebt das Problem nicht. Könnt ihr mir helfen???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."
- 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.
-
- 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.
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
- 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
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
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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 rausgegebentjuXx 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.
Super. Ich habe einige Änderungen am Scraping-Code gemacht, mal sehen wie sich das entwickelt. Besonders die CSS-Selektoren finde ich angenehm.tjuXx hat geschrieben:schreibe wenn ich Zeit finde noch ein paar weitere Parser.
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