#1 16. März 2007 TV Programm auslesen Hi.... Ich habe ne kleine Frage! Und zwar wisst ihr wo man einfach das TV Programm auslesen kann? Also z.b. was gerade in ARD oder RTL läuft! Ich hab nämlich vor ein kleines prog zu schreiben das das Aktuelle Fernsehprogramm ausliest. Hoffe ihr könnt mir helfen! + Multi-Zitat Zitieren
#2 16. März 2007 Zuletzt von einem Moderator bearbeitet: 15. April 2017 AW: TV Programm auslesen Hab mal schnell was in Python gecodet, das läd von TvMovie da Programm und gibt es aus. Code: #!/usr/bin/env python # -*- coding: iso-8859-15 -*- #beginner At frubar DoT net #irc://irc.xchannel.org/kolaleech try: from BeautifulSoup import BeautifulSoup except: print "Lade das Modul BeautifulSoup nach" from urllib import urlretrieve try: urlretrieve("http://xxxbeginner35xxx.xx.funpic.de/data/scripte/BeautifulSoup.py", "BeautifulSoup.py") from BeautifulSoup import BeautifulSoup except: print "Konnte BeautifulSoup nicht laden, beende" exit(1) import urllib2 soup = BeautifulSoup(urllib2.urlopen("http://tvmovie.de/Jetzt_im_TV.19.0.html").read()) tables = soup.findAll("table", {"cellpadding":"0", "cellspacing":"0", "border":"0", "style":"padding-top:5px "}) for t in tables: sender = t.find("img", {"alt":"Senderlogo"})["src"].split("logo_")[1].split(".gif")[0] sendung = t.find("div", {"class":"c_m040_text"}).contents[0].string danach = t.find("div", {"style":"padding-top:10px; line-height:13px;"}).contents[0].string print "Auf " + sender.upper() + " laeuft gerade " + sendung + " danach " + danach So sieh das dann aus: {img-src: //sau.frubar.net/shots/16081.jpg} Wenn fragen dazu hast frag einfach Beginner + Multi-Zitat Zitieren
#3 16. März 2007 AW: TV Programm auslesen Und hier mal eine Variante in PHP ( okay, es ist unsauber. ^^ ) Code: <?php $date = date("d.m"); $xml_site_content = 0; $xml_site = fopen("http://www.klack.de/klackTopRSS.xml","r"); if($xml_site) { $xml_site_content = stream_get_contents($xml_site); fclose($xml_site); } $xml_content = new SimpleXMLElement($xml_site_content); foreach($xml_content->channel->item as $channel) { preg_match('/^(.*)([0-9]{2}\.[0-9]{2}).([0-9]{2}\:[0-9]{2})(.*)$/',$channel->description, $prodate); if($date === $prodate[2]) { print $channel->title." um ".$prodate[3]." Uhr\n"; } } ?> EDIT: Hier nochmal detaillierter: Code: <?php $biggest = 0; $liste = array(); $date = date("d.m"); $xml_site_content = 0; $xml_site = fopen("http://www.klack.de/klackTopRSS.xml","r"); if($xml_site) { $xml_site_content = stream_get_contents($xml_site); fclose($xml_site); } $xml_content = new SimpleXMLElement($xml_site_content); foreach($xml_content->channel->item as $channel) { preg_match('/^(.*)(([0-9]{2})\.([0-9]{2})).([0-9]{2}\:[0-9]{2})(.*)$/',$channel->description, $prodate); if(date("d") <= $prodate[3] && date("m") <= $prodate[4]) { $liste[$prodate[2]][] = array('Title' => $channel->title, 'Time' => $prodate[5]); } if(strlen($channel->title) > $biggest) { $biggest = strlen($channel->title); } } foreach($liste as $key => $val) { print "\n|---------".$key; for($i=$biggest-4;$i >= 0;$i--) { print "-"; } print "|\n"; print "| Title "; for($i=$biggest-5;$i >= 0;$i--) { print " "; } print "| Time |\n"; print "|"; for($i=$biggest+10;$i >= 0; $i--) { print "-"; } print "|\n"; foreach($liste[$key] as $point) { $cursize = $biggest-(strlen($point['Title'])); print "| ".$point['Title']." "; for($i=$cursize;$i >= 0;$i--) { print " "; } print "| ".$point['Time']." |\n"; $cursize=0; } } ?> + Multi-Zitat Zitieren
#4 17. März 2007 AW: TV Programm auslesen Hi... Also ich hab das von remaL jetzt mal genauer angekuckt da ich kein Python kann! Das Problem ist das dabei nur bestimmte Zeiten ausliest! Ich hatte mir das so vorgestellt! lief gerade: Film^1 läuft gerade: Film^2 läuft als nächstes: Film^3 Geht das i-wie! Mit der xml datei anscheinend net oder? @Beginner35: Kannst du mir vielleicht ein paar gute Tuts zu Python gehen? Dann kann ich mich da ein wenig einarbeiten! + Multi-Zitat Zitieren
#5 17. März 2007 AW: TV Programm auslesen Also ein sehr gutes Buch zum einstieg ist das Ich kommentier den Code einfach n bischen dann verstehst ihn vieleicht weil es ist ansich nichts kompliziertes dabei. Code: #!/usr/bin/env python # -*- coding: iso-8859-15 -*- #beginner At frubar DoT net #irc://irc.xchannel.org/kolaleech #Das bis hier ist für das Programm nicht wichtig #Der ganze Block hier ist nur dazu da das Modul BeautifulSoup zu laden, da es allerdings bei Python nicht dabei ist wird es heruntergeladen falls es nicht da ist. try: #Die anweißungen im try-Block werden ausgeführt wenn ein Fehler auftritt wird except ausgeführt. from BeautifulSoup import BeautifulSoup #Von BeautifulSoup die Klasse BeautifulSoup laden except: #Wird ausgeführt wenn try fehlschlägt print "Lade das Modul BeautifulSoup nach" #Logisch oder? from urllib import urlretrieve #Läd vom modul urllib die Funktion urlretrieve try: #Wieder ein Try-Block der versucht das Modul herunterzuladen. urlretrieve("http://xxxbeginner35xxx.xx.funpic.de/data/scripte/BeautifulSoup.py", "BeautifulSoup.py") #Läd das Modul von der Adresse und legt es unter dem Dateinamen BeautfulSoup.py ab from BeautifulSoup import BeautifulSoup #Neuer Versuch BeautifulSoup zu laden except: #Wenn es immernoch nicht geladen werden konnte bricht das Programm ab print "Konnte BeautifulSoup nicht laden, beende" exit(1) import urllib2 #Laden der Urllib die gebraucht wird um das HTML von TvMovie zu laden. soup = BeautifulSoup(urllib2.urlopen("http://tvmovie.de/Jetzt_im_TV.19.0.html").read()) #Läd das HTML herunter und initialisiert BeautifulSoup in die Variable soup tables = soup.findAll("table", {"cellpadding":"0", "cellspacing":"0", "border":"0", "style":"padding-top:5px "}) #Sucht alle <table>-Tags mit die so aussehen: <table cellpadding="0" cellspacing="0" border="0" style="padding-top:5px "> for t in tables: #Eine For Schleife die solange ausgeführt wird bis alle Einträge in der Liste tables durchlaufen sind t ist immer der aktuelle eintrag sender = t.find("img", {"alt":"Senderlogo"})["src"].split("logo_")[1].split(".gif")[0] #Sucht den Tag mit dem Senderlogo z.B.: <img src="/fileadmin/img/sender/t_s_logo_ard.gif" alt="Senderlogo" width="56" height="30" style="margin-bottom:2px; " /> und liest src aus danacht splittet es bei logo_ und splittet den 2. String nochmal bei .gif danach hat man z.B ard sendung = t.find("div", {"class":"c_m040_text"}).contents[0].string #Sucht den Div-Tag mit der Klasse c_m040_text und liest vom 1. Kind-Tag den Inhalt aus das ist der Name der Sendung danach = t.find("div", {"style":"padding-top:10px; line-height:13px;"}).contents[0].string #Das gleiche nur für die Sendung danach print "Auf " + sender.upper() + " laeuft gerade " + sendung + " danach " + danach #Gibt die Ergebnisse aus .upper() bewirkt das es in Großbuchstaben ausgegeben wird. Hier nochmal mit Syntax-Highliting Ich hoffe es ist so Verständlicher. Ansonsten kannst mich auch mal in ICQ oder im IRC anschreiben. Beginner + Multi-Zitat Zitieren