Tv.php
[lib.XML_Tv] / Tv.php
diff --git a/Tv.php b/Tv.php
index 8db2c21..84dc4da 100644 (file)
--- a/Tv.php
+++ b/Tv.php
@@ -14,6 +14,10 @@ make sure the filltv file is chmod +x
 Quick hack to generate xmltv listings from TVxb style .ini files.
 
 */
+// seriously it's this bad..
+error_reporting(E_ALL & ~E_STRICT &~E_NOTICE);
+
+
 
 
 if (!extension_loaded('mbstring')) {
@@ -113,7 +117,7 @@ class XML_Tv
             // kludge. = first monday of current week..
             // loook for... <BR>2007-12-31 Mon
             $start = preg_match('/<BR>([0-9]{4}-[0-9]{2}-[0-9]{2}) Mon/i', $odata, $matches);
-            $start = $matches[1]; // first monday..
+            $start = isset($matches[1]) ? $matches[1] : 0; // first monday..
             
             $use_cols = 1;
             foreach($days as $i=>$ddata) {
@@ -125,10 +129,20 @@ class XML_Tv
                 $res =  $this->$method($ddata,$cols,date('Y-m-d',$dn));
                 if (is_string($res)) {
                     $start = $res;
-                     $use_cols =0;
+                    $use_cols =0;
                     continue;
                 }
-                $this->schedule[$chid][strtotime($start) + (($i *  $use_cols ) * 24 * 60 * 60 )]  = $res;
+                if (!is_array($res)) {
+                    continue;
+                }
+                $day_id = strtotime($start) + (($i *  $use_cols ) * 24 * 60 * 60 );
+                
+                //print_r($res);
+                
+                if (empty($this->schedule[$chid][$day_id])) {
+                    $this->schedule[$chid][$day_id] = array();
+                }
+                $this->schedule[$chid][$day_id] = array_merge($this->schedule[$chid][$day_id],  $res); 
             }
             return;
             
@@ -190,7 +204,7 @@ class XML_Tv
     
     }
     
-    function parseJade($data, $colnames)
+    function parseJade($data, $colnames, $day=0)
     {
         
         $rows = preg_split('#</li>#i', $data);
@@ -200,7 +214,7 @@ class XML_Tv
             $r = str_ireplace('&nbsp;',' ', $r);
             $rdata = array();
             
-            list($time,$r) = explode('</span>', $r, 2);
+            @list($time,$r) = explode('</span>', $r, 2);
             
             $rdata['hour'] = trim(strip_tags($time));
             if (!strlen($rdata['hour'])) {
@@ -223,24 +237,40 @@ class XML_Tv
         
         // if it's a day row..
         
-        if (preg_match('/<div/', trim($data))) {
-            preg_match('/<BR>([0-9]{4}-[0-9]{2}-[0-9]{2})/i', $data, $matches);
-             return $matches[1];
+        $lines = explode("\n",  trim($data));
+        //var_dump($lines[1]);
+        
+        
+        if (isset($lines[1]) && preg_match('/<div/', trim($lines[1]))) {
+            
+            preg_match('/<BR>([0-9]{4}-[0-9]{2}-[0-9]{2})/i', $lines[1], $matches);
+            //var_dump($matches[1]);
+            return $matches[1];
             
         }
         $rows = preg_split('/<tr[^>]*>/i', $data);
+        if ($day == '2011-10-29') {
+            //$this->debug(print_r($rows,true));
+        }
+        if ($day < date('Y-m-d')) {
+           // $this->debug("OLD DATA  $day");
+            return array();
+        }
+        //$this->debug($day);
         //$this->debug(print_r($rows,true));
     //return; 
         array_shift($rows);
         
-        
-        $day = false;
+        $ret = array();
+        //$day = false;
         foreach($rows as $r) {
             //print_r($r);
             $cols = preg_split('/<td[^>]*>/i', $r);
             $rdata = array();
             
-            
+            if (!isset($cols[2])) {
+                continue;
+            }
             //PRINT_r($cols);
             $c= $cols[2];
              //var_dump($c);
@@ -249,7 +279,7 @@ class XML_Tv
                 continue;
             }
             //$this->debug("GOT HOUR: $c");
-            $rdata['hour'] = trim(array_shift(explode('<', $c)));  
+             $rdata['hour'] = trim(array_shift(explode('<', $c)));  
             $c =  $cols[3];
             
             $kv = preg_split('/<br>/',$c);
@@ -264,7 +294,7 @@ class XML_Tv
             
             
             
-            $c = $kv[1];
+            $c = isset($kv[1]) ? $kv[1] : ''; 
             $c = str_ireplace('<br>',' ', $c);
             $c = str_ireplace('&nbsp;',' ', $c);
             $c = str_replace("\n",' ', $c);
@@ -483,7 +513,7 @@ class XML_Tv
     {
         // remove sponsor message.
         $title_pre = '';
-        list($title, $fuldesc) = explode("&gt;&gt;",$description);
+        @list($title, $fuldesc) = explode("&gt;&gt;",$description);