Tv.php
[lib.XML_Tv] / Tv.php
diff --git a/Tv.php b/Tv.php
index 00116f8..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;
+                }
+                if (!is_array($res)) {
                     continue;
                 }
-                $this->schedule[$chid][strtotime($start) + (($i *  $use_cols ) * 24 * 60 * 60 )]  = $res;
+                $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);
@@ -248,8 +278,8 @@ class XML_Tv
             if (!preg_match('/^[0-9]+:[0-9]+/', $c)) {
                 continue;
             }
-            $this->debug("GOT HOUR: $c");
-            $rdata['hour'] = trim(array_shift(explode('<', $c)));  
+            //$this->debug("GOT HOUR: $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);
@@ -414,12 +444,14 @@ class XML_Tv
                     continue;
                 }
                 foreach($sched as $item) {
-                    //print_r($item);
+                    $item['day'] = $day;
+                    
                     $bits = explode(':', $item['hour']);
                     if ($bits[0] < $last) {
                         $hoffset +=12;
                     }
                     $last = $bits[0];
+                    
                     //var_dump($bits[0] + $hoffset);
                     $start = mktime(/*hmsmdy  */
                             $bits[0] + $hoffset,
@@ -429,16 +461,20 @@ class XML_Tv
                             date('d', $day),
                             date('Y', $day)
                             );
-                    if ($start < strtotime('NOW - 1 DAY')) {
+                    if ($start < strtotime(date("Y-m-d 00:00:00", strtotime('NOW - 1 DAY')))) {
                         continue;
                     }
+                    $item['hoffset'] = $hoffset;
+                    $item['hoffset_ar'] = $bits;
+                    
+                    //$this->debug(print_r($item, true));
                     $start_str = date('YmdHis',$start) . ' ' . $this->config['gmtoffset'];
                     //var_dump($start_str);
                     //var_dump($this->channels);
                     $description =   iconv($this->channels[$chan]['encoding'], 'UTF-8',$item['description'] . 
                                 (isset($item['description2']) ? ('   ' . $item['description2']) : '')); 
                    
-                    $this->debug(date("Y-m-d H:i - "). $description); 
+                    $this->debug(date("Y-m-d H:i - ", $start). $description); 
                    
                    
                     $pg = $doc->createElement('programme');
@@ -477,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);