summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x[-rw-r--r--]bin/auth.php0
-rwxr-xr-xbin/backend.php9
-rwxr-xr-x[-rw-r--r--]bin/genmanifest.php0
-rwxr-xr-xbin/jsonapi.php18
-rwxr-xr-xbin/session.php4
-rwxr-xr-xbin/vdr.php88
6 files changed, 109 insertions, 10 deletions
diff --git a/bin/auth.php b/bin/auth.php
index 7e6eace..7e6eace 100644..100755
--- a/bin/auth.php
+++ b/bin/auth.php
diff --git a/bin/backend.php b/bin/backend.php
index 706dd91..ad72df7 100755
--- a/bin/backend.php
+++ b/bin/backend.php
@@ -100,6 +100,15 @@ switch ($action)
$tree = streamAudio($_REQUEST['path'], $_REQUEST['file']);
print $tree;
break;
+
+ case ("getEpg"):
+ $tree = getEpg($_REQUEST['channel'], $_REQUEST['time'], $_REQUEST['day'], $_REQUEST['programs']);
+ print $tree;
+ break;
+ case ("getEpgInfo"):
+ $tree = getEpgInfo($_REQUEST['channel'], $_REQUEST['time'], $_REQUEST['day']);
+ print $tree;
+ break;
}
?>
diff --git a/bin/genmanifest.php b/bin/genmanifest.php
index 26981c4..26981c4 100644..100755
--- a/bin/genmanifest.php
+++ b/bin/genmanifest.php
diff --git a/bin/jsonapi.php b/bin/jsonapi.php
index a567808..298806b 100755
--- a/bin/jsonapi.php
+++ b/bin/jsonapi.php
@@ -188,4 +188,22 @@ function streamAudio($path, $file)
}
+function getEpg($channel, $time, $day, $programs)
+{
+ $ret = array();
+
+ $ret['channel'] = vdrgetepg($channel, $time, $day, $programs, 0);
+
+ return json_encode($ret);
+}
+
+function getEpgInfo($channel, $time, $day)
+{
+ $ret = array();
+
+ $ret['program'] = vdrgetepg($channel, $time, $day, 1, 1);
+
+ return json_encode($ret);
+}
+
?>
diff --git a/bin/session.php b/bin/session.php
index 144b8da..0819632 100755
--- a/bin/session.php
+++ b/bin/session.php
@@ -142,8 +142,8 @@ function sessiongetinfo($session)
case 'tv':
$info['name'] = $channame;
$channum = vdrgetchannum($channame);
- list($info['now_time'], $info['now_title'], $info['now_desc']) = vdrgetchanepg($channum, 1);
- list($info['next_time'], $info['next_title'], $info['next_desc']) = vdrgetchanepg($channum, 0);
+ list($info['now_time'], $info['now_title'], $info['now_desc']) = vdrgetchanat($channum, "now");
+ list($info['next_time'], $info['next_title'], $info['next_desc']) = vdrgetchanat($channum, "next");
break;
case 'rec':
$info['channel'] = $channame;
diff --git a/bin/vdr.php b/bin/vdr.php
index 751ae32..89f4f1d 100755
--- a/bin/vdr.php
+++ b/bin/vdr.php
@@ -236,18 +236,15 @@ function vdrgetchaninfo($channum)
$info['name'] = vdrgetchanname($channum);
$info['number'] = $channum;
- list($info['now_time'], $info['now_title'], $info['now_desc']) = vdrgetchanepg($channum, 1);
- list($info['next_time'], $info['next_title'], $info['next_desc']) = vdrgetchanepg($channum, 0);
+ list($info['now_time'], $info['now_title'], $info['now_desc']) = vdrgetchanat($channum, "now");
+ list($info['next_time'], $info['next_title'], $info['next_desc']) = vdrgetchanat($channum, "next");
return $info;
}
-function vdrgetchanepg($channum, $now)
+function vdrgetchanat($channum, $at)
{
- if ($now)
- $cmd = "LSTE " .$channum ." NOW";
- else
- $cmd = "LSTE " .$channum ." NEXT";
+ $cmd = "LSTE " .$channum ." " .$at;
$epg = vdrsendcommand($cmd);
@@ -269,6 +266,9 @@ function vdrgetchanepg($channum, $now)
$timearray = explode(" ", $time);
$time = date('H\hi', $timearray[1]) ."-" .date('H\hi', $timearray[1]+$timearray[2]);
+ $endtime = $timearray[1]+$timearray[2];
+
+ $date = date('Y\/m\/d', $timearray[1]);
}
}
@@ -278,7 +278,79 @@ function vdrgetchanepg($channum, $now)
if (!is_utf8($desc))
$desc = utf8_encode($desc);
- return array($time, $title, $desc);
+ return array($date, $time, $title, $desc, $endtime);
+}
+
+function vdrgetchanepg($channame, $channum, $chancat, $time, $programs, $extended)
+{
+
+ // Create a new chan entry in epg
+ $chanentry = array();
+ $chanentry['name'] = $channame;
+ $chanentry['number'] = $channum;
+ $chanentry['category'] = $chancat;
+ $chanentry['epg']= array();
+
+ $attime = $time;
+ $nbepg = 0;
+
+ $chanepg = array();
+ do
+ {
+ if (!$extended)
+ list ($date, $chanepg['time'], $chanepg['title'], $desc, $endtime) = vdrgetchanat($channum, "at " .$attime);
+ else
+ list ($chanepg['date'], $chanepg['time'], $chanepg['title'], $chanepg['desc'], $endtime) = vdrgetchanat($channum, "at " .$attime);
+ $chanentry['epg'][] = $chanepg;
+
+ $attime = $endtime+1;
+ $nbepg++;
+ }
+ while ($nbepg < $programs);
+
+ return $chanentry;
+}
+
+function vdrgetepg($channel, $time, $day, $programs, $extended)
+{
+ $epgout = array();
+
+ // Compute time
+ $currentdate = gettimeofday();
+
+ // Remove current day minutes
+ $currentday = $currentdate['sec'] - ($currentdate['sec'] % (3600*24));
+
+ $requestedhours = (int) substr($time, 0, 2);
+ $requestedmins = (int) substr($time, 2);
+ $requestedtime = ($requestedhours * 3600) + ($requestedmins * 60);
+
+ // Comput requested date
+ $requesteddate = $currentday + ((int)$day * (3600*24)) + $requestedtime - 3600;
+
+ // Get epg
+ if ($channel == all)
+ {
+ // Get all categories
+ $categories = vdrgetcategories();
+
+ // For all categories
+ $catcount = count($categories);
+ for ($i = 0; $i < $catcount; $i++)
+ {
+ // Get all channels
+ $channels = vdrgetchannels($categories[$i]['name'], 0);
+
+ // For all channels
+ $chancount = count($channels);
+ for ($j = 0; $j < $chancount; $j++)
+ $epgout[] = vdrgetchanepg($channels[$j]['name'], $channels[$j]['number'], $categories[$i]['name'], $requesteddate, $programs, 0);
+ }
+ }
+ else
+ $epgout[] = vdrgetchanepg(vdrgetchanname($channel), $channel, "Unknown", $requesteddate, $programs, $extended);
+
+ return $epgout;
}
function vdrgetrecinfo($rec)