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!
On Air Listen
Hehe, geile Idee!
Hast du nicht neulich gepostet das du die kompliziertesten codes im ganzen Forum hast!? Jetz weiß ich warum...
Hab mich direkt auch mal an sowas ran gesetzt, aber für Sachsen
Hast du nicht neulich gepostet das du die kompliziertesten codes im ganzen Forum hast!? Jetz weiß ich warum...
Hab mich direkt auch mal an sowas ran gesetzt, aber für Sachsen
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Danke!Iopodx@Gast hat geschrieben:Hehe, geile Idee!
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.Iopodx@Gast hat geschrieben:Hast du nicht neulich gepostet das du die kompliziertesten codes im ganzen Forum hast!? Jetz weiß ich warum...
Aber gegen etwas Refactoring hätte ich nichts einzuwenden, blos wenn du dir diese komischen Seiten anschaust und wie wenig diese HTML konform sind
Super! Wenn du es fertig hast, kannst du mir nen Patch schicken, ich tu es dann einbauen.Iopodx@Gast hat geschrieben:Hab mich direkt auch mal an sowas ran gesetzt, aber für Sachsen
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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!?!
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!?!
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.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!?!
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
-
- 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:
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.
Daran sieht man, dass unsere Konzepte durchaus vereinbar sind
Nur zum testen des PSR Parsers:
Code: Alles auswählen
python whatsonair.py -d --psr
Wie meinen?Iopodx hat geschrieben:Also bei mir dauert das nur 2-3 Sekunden bis alles gelistet wurde! Hmm!
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
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 (?)
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 (?)
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?
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?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.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, 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: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 (?)
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 seinFrancesco hat geschrieben:bei Antenne Bayern habe ich:
whatsonair.IncompatibleParser: Incompatible Antenne parser, look for a newer version
Was könnte das sein?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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+)
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+)
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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: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...
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).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+)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Jup, ich habe meine Admins solange bekniet, bis sie Spyce und Cheetah installiert haben.Iopodx hat geschrieben:Cool das du python Space hast .
Jup. Der Gong und FM4 Parser werten sowas auch aus, allerdings werden die zusätzlichen Informationen bis jetzt nirgendwo benötigt.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;)
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
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
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
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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 nachholenIopodx hat geschrieben:Hm, von XML hab ich keine Ahnung. Sorry.
DankeIopodx hat geschrieben:So, langsam bin ich in deinem Code drinne, und bin grad am Coden vom NRJ parser...
Also der Code ist wirklich, Respekt!
Werde ich durschschauen und mergen.Iopodx hat geschrieben:So hier meine aktualisierte version:
http://home.arcor.de/iopodx/python/What ... sonair2.py
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Okay, in Revision 6 ist auch Iopodx' NRJ Parser drin. Geht ja wunderbar voran!Leonidas hat geschrieben:Werde ich durschschauen und mergen.Iopodx hat geschrieben:So hier meine aktualisierte version:
http://home.arcor.de/iopodx/python/What ... sonair2.py
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:
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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.
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.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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.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.
Nun, ab Revision 10 sind auch die beiden Parser von Johi eingebaut.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice