[Thema] TV Programm auslesen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Mr.Smoke, 16. März 2007 .

  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!
     
  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:

    16081.jpg
    {img-src: //sau.frubar.net/shots/16081.jpg}


    Wenn fragen dazu hast frag einfach

    Beginner
     
  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;
     }
    }
    
    ?>
     
  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!
     
  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
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.