On Air Listen

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Da ich gerne beim Programmieren Radio höre (wenn es mal nicht zu sehr rauscht), habe ich mir ein Programm geschrieben, dass mir auch sagt, was gerade im Radio läuft. Ich habe es WhatsOnAir getauft. Dann wurde mir langweilig und ich habe auch noch eine GTK+ Oberfläche dazugescriptet. Es kann aktuell Antenne Bayern, Bayern 3, Energy, Gong und FM4 abfragen, die hier sicher einige im Forum kennen werden :)
Ich habe versucht, es so modular wie möglich zu machen, dass das hinzufügen von weiteren Sendern kein größeres Problem darstellen würde.

Wäre cool wenn ihr mir eure Meinung dazu sagt!
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Iopodx@Gast

Hehe, geile Idee!

Hast du nicht neulich gepostet das du die kompliziertesten codes im ganzen Forum hast!? Jetz weiß ich warum... :roll:

Hab mich direkt auch mal an sowas ran gesetzt, aber für Sachsen ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Iopodx@Gast hat geschrieben:Hehe, geile Idee!
Danke!
Iopodx@Gast hat geschrieben:Hast du nicht neulich gepostet das du die kompliziertesten codes im ganzen Forum hast!? Jetz weiß ich warum... :roll:
Jup. Aber einen neuen Sender hinzuzufügen ist recht einfach, er muss nur von StationBase erben, und pagecontent, __version__, __station__ und die Funktionen .feed() und .currenttrack() besitzen. Was die Klasse so intern macht, ist völlig egal.
Aber gegen etwas Refactoring hätte ich nichts einzuwenden, blos wenn du dir diese komischen Seiten anschaust und wie wenig diese HTML konform sind :(
Iopodx@Gast hat geschrieben:Hab mich direkt auch mal an sowas ran gesetzt, aber für Sachsen ;)
Super! Wenn du es fertig hast, kannst du mir nen Patch schicken, ich tu es dann einbauen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Iopodx@Gast

Hm.

Japp, daran bin ich auch schon fast verzweifelt.. Alles Flash Macromedia scheiß oder sonst was... 3 Sender hab ich schon..

hab das ganze aber bissl anders als du >_<.

Also leider nicht confirm mit deiner version :(.

http://home.arcor.de/iopodx/whazzonair.py

so siehts bei mir aus.. kein oop. Hab kein Plan was das hier bringen soll.. da ich ja bei jedem Sender anders auslese!?!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Iopodx@Gast hat geschrieben:Hm.

Japp, daran bin ich auch schon fast verzweifelt.. Alles Flash Macromedia scheiß oder sonst was... 3 Sender hab ich schon..

hab das ganze aber bissl anders als du >_<.

Also leider nicht confirm mit deiner version :(.

http://home.arcor.de/iopodx/whazzonair.py

so siehts bei mir aus.. kein oop. Hab kein Plan was das hier bringen soll.. da ich ja bei jedem Sender anders auslese!?!
Ja, aber das ist ein Paradebeispiel für OOP. Es gibt da ein Objekt, einen Sender. Dieser Sender sendet. Jetzt möchte man wissen, was dieser Sender sendet. Der Vorteil ist ja, dass man auch so in die Klasse mehr informationen verpacken kann, so haben einige Sender bei mir auch ein aired dict, in dem auch steht, was in letzter Zeit so lief.

Also deine Version hängt sich bei Energy Sachsen, aber ich versuche mal die beiden anderen Sender in mein WhatsOnAir einzupacken und die GUI daran anzupassen :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Iopodx
User
Beiträge: 68
Registriert: Sonntag 5. September 2004, 08:58

So.. mal eingeloggt..

Also bei mir dauert das nur 2-3 Sekunden bis alles gelistet wurde! Hmm!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

So, nun ist in Revision 5 auch noch der PSR Parser dazugekommen.
Daran sieht man, dass unsere Konzepte durchaus vereinbar sind :)
Nur zum testen des PSR Parsers:

Code: Alles auswählen

python whatsonair.py -d --psr
Iopodx hat geschrieben:Also bei mir dauert das nur 2-3 Sekunden bis alles gelistet wurde! Hmm!
Wie meinen?
Das Abholen der Seiten dauert halt einiges, die urllib blokiert halt. Aber man könnte die einzelen Requests in Threads auslagern, dann blokieren sie nicht mehr.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Iopodx
User
Beiträge: 68
Registriert: Sonntag 5. September 2004, 08:58

Wow nicht schlecht!

Dann Versuch ich mich dann mal richtig in den Code einzufitzen...

Man könnte ja richtiges Webprojekt draus machen mit jeder Menge dt. Radio Sendern ;)
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

bei FM4 habe ich einen traceback:

Traceback (most recent call last):
File "C:\seewhatsonair.py", line 51, in update_click
self.update_track(whatsonair.FM4Parser)
File "C:\seewhatsonair.py", line 65, in update_track
self.track.set_label(station.currenttrack())
File "C:\whatsonair.py", line 137, in currenttrack
timekeys = sorted(self.aired)
NameError: global name 'sorted' is not defined

Ist das sorted neu bei Python 2.4? (ich habe 2.3.3).
Sollte vermutlich die keys des dictionaries sortieren (?)
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

bei Antenne Bayern habe ich:

Traceback (most recent call last):
File "C:\seewhatsonair.py", line 53, in update_click
self.update_track(whatsonair.AntenneParser)
File "C:\seewhatsonair.py", line 64, in update_track
station.feed(station.pagecontent)
File "C:\whatsonair.py", line 214, in feed
raise IncompatibleParser('Antenne')
whatsonair.IncompatibleParser: Incompatible Antenne parser, look for a newer ver
sion

Was könnte das sein?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Iopodx hat geschrieben:Wow nicht schlecht!

Dann Versuch ich mich dann mal richtig in den Code einzufitzen...

Man könnte ja richtiges Webprojekt draus machen mit jeder Menge dt. Radio Sendern ;)
Ja, wäre echt cool! Das ich es in Grafikteil und in Textteil aufgeplittet habe, ermöglicht es ja beliebige Interfaces zu machen. So wärde auch eine wx, Tk oder gar HTML Version möglich.
Francesco hat geschrieben:NameError: global name 'sorted' is not defined

Ist das sorted neu bei Python 2.4? (ich habe 2.3.3).
Sollte vermutlich die keys des dictionaries sortieren (?)
Ja, genau, das ist zum sortieren da, und es kam in Python 2.4 dazu. Ich frage mich machnchmal wie ich ohne programmieren konnte ;). Ich habe es ja nur mehr oder weniger schnell hingeschrieben, und ich nutze gerne Features von den neuesten Python Versionen.
Francesco hat geschrieben:bei Antenne Bayern habe ich:
whatsonair.IncompatibleParser: Incompatible Antenne parser, look for a newer version
Was könnte das sein?
Ahem ja.. die Parser sind nicht immer so stabil wie ich gerne möchte, so sind sie leicht confused wenn zum Beispiel im Titel '-' vorkommen oder so. Müsste noch irgendwie zu fixen sein. und IncompatibleParser ist eine Exception die einfach generell bei Parserfehlern geworfen wird, damit der End-User gleich weiß, was los ist. Natürlich sind die Parser jetzt in Ordung, nur hast du gerade wohl einen Titel erwischt, der den Parser überfordert hat. Etwas abwarten und dann sollte das schon wieder gehen. Das müsste irgendwie noch zu fixen sein :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Iopodx
User
Beiträge: 68
Registriert: Sonntag 5. September 2004, 08:58

Ich bin gerade am Rätseln einer Stand-Alone Php lösung..

Damit nehm ich dir ne Menge arbeit xD. Aber auch den Sinn :/.

Also ich würds gerne so machen, das ich via PHP ne seite erstell wo AUSSCHLIEßLICH interpret und track drin steht.. das wär dann viel easier und schneller zu realisieren...

Ne Tk Oberfläche könnt ich auch noch machen. ;). Hab die GTK+ version noch garnet gesehen, wo bekomm ich das denn her? (GTK+)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Iopodx hat geschrieben:Ich bin gerade am Rätseln einer Stand-Alone Php lösung..

Also ich würds gerne so machen, das ich via PHP ne seite erstell wo AUSSCHLIEßLICH interpret und track drin steht.. das wär dann viel easier und schneller zu realisieren...
Wozu wenn Python das kann? Und PHP kann ich nicht, das ist ja dann witzlos. Vor allem da FM4, Gong usw noch einige weitere Informationen (letzte X Lieder + Uhrzeit) rausrücken. Aber man kann auch eine Python Weblösung machen, ich hab ja Webspace der das unterstützt, da müsste ich nur whatsonair.py importieren, paar zeilen schreiben und schon bin ich fertig. So habe ich eine Codebase und das Modul ist wiederverwertbar.
Iopodx hat geschrieben:Ne Tk Oberfläche könnt ich auch noch machen. ;). Hab die GTK+ version noch garnet gesehen, wo bekomm ich das denn her? (GTK+)
Ich hab mal nen Screenshot unter Windows mit dem GTK2 Default Theme. Unter Windows brauchst du eine GTK+ Runtime und PyGTK. Natürlich, für den Enduser wäre vermutlich wx besser, so einen Port könnte ich unter Umständen auch beisteuern (zumindest einen minimalen).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Iopodx
User
Beiträge: 68
Registriert: Sonntag 5. September 2004, 08:58

Hm, da ich eh bissl an der PHP lösung verzage lass ich das lieber.

Cool das du python Space hast :).

Da könnte man dann echt was richtig mit Anfangen :).

Radio PSR gibt auch Uhrzeit und letzten 8 (oder so) lieder an;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Iopodx hat geschrieben:Cool das du python Space hast :).
Jup, ich habe meine Admins solange bekniet, bis sie Spyce und Cheetah installiert haben. :)
Iopodx hat geschrieben:Da könnte man dann echt was richtig mit Anfangen :).
Radio PSR gibt auch Uhrzeit und letzten 8 (oder so) lieder an;)
Jup. Der Gong und FM4 Parser werten sowas auch aus, allerdings werden die zusätzlichen Informationen bis jetzt nirgendwo benötigt.

Aber bevor man zig Frontends macht (wie wärs noch it einem XML-RPC und/oder SOAP, damit man von jeder Programmiersprache auf diese Informationen zugreifen kann?), sollte erstmal das Backend gescheit aufgeräumt werden und vor allem die Parser stabiler werden.

Btw: Die GTK+ GUI hinkt etwas hinterher, die müsste ich so anpasen, dass sie das Dropdown Menü selbst aktualisiert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Iopodx
User
Beiträge: 68
Registriert: Sonntag 5. September 2004, 08:58

Hm, von XML hab ich keine Ahnung. Sorry.

So, langsam bin ich in deinem Code drinne, und bin grad am Coden vom NRJ parser...


Also der Code ist wirklich, Respekt!

So hier meine aktualisierte version:

http://home.arcor.de/iopodx/python/What ... sonair2.py
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Iopodx hat geschrieben:Hm, von XML hab ich keine Ahnung. Sorry.
Kann ich ja machen. Auf jeden Fall als ich das Programm geschrieben habe habe ich mir sehr gewünscht, die Sender wurden ihre Informationen per XML-RPC (Webservices) zur verfügung stellen. Das können wir ja jetzt nachholen :)
Iopodx hat geschrieben:So, langsam bin ich in deinem Code drinne, und bin grad am Coden vom NRJ parser...
Also der Code ist wirklich, Respekt!
Danke :)
Iopodx hat geschrieben:So hier meine aktualisierte version:
http://home.arcor.de/iopodx/python/What ... sonair2.py
Werde ich durschschauen und mergen.
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:

Leonidas hat geschrieben:
Iopodx hat geschrieben:So hier meine aktualisierte version:
http://home.arcor.de/iopodx/python/What ... sonair2.py
Werde ich durschschauen und mergen.
Okay, in Revision 6 ist auch Iopodx' NRJ Parser drin. Geht ja wunderbar voran!

Edit: Ab Revision 9 ist auch eine Behandlung von RTL dabei (wiedermal von Iopodx), zudem wurde die GUI start verbessert.

Edit: Wo wir beim GUI sind, ein Screenshot:
Bild
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Johi
User
Beiträge: 22
Registriert: Sonntag 21. November 2004, 20:08

ich habe noch HR3 und YOUFM hinzugefügt. :)
HR1 und HR4 basieren auf dem selben schema, wären also leicht hinzuzufügen, aber die musikrichtung hör ich net. :)
weil ich noch nicht so viel in python gemacht hab, ist das schön unsauberer code.
aber dennoch:
http://paste.phpfi.com/50179

hab ein wenig bei den anderen parsern abgeschaut und der parser ist natürlich komplett zerschossen, wenn die ihr webdesign ändern, aber was solls. :)

aüßerdem lernt man ja durch fehler. :)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Johi hat geschrieben:hab ein wenig bei den anderen parsern abgeschaut und der parser ist natürlich komplett zerschossen, wenn die ihr webdesign ändern, aber was solls. :)
Das sind alle, da die Sender keine andere Möglichkeit anbieten, an die Infos zu kommen. So eine Möglichkeit könnten wir schaffen.. solange die Parser gehen.

Nun, ab Revision 10 sind auch die beiden Parser von Johi eingebaut.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten