From 5400c2d66985a85591b2b78085615cd2826911a4 Mon Sep 17 00:00:00 2001 From: TheTroll Date: Tue, 16 Mar 2010 13:30:04 +0100 Subject: PHP part WIP --- bin/vdr.php | 471 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 471 insertions(+) create mode 100755 bin/vdr.php (limited to 'bin/vdr.php') diff --git a/bin/vdr.php b/bin/vdr.php new file mode 100755 index 0000000..beda66c --- /dev/null +++ b/bin/vdr.php @@ -0,0 +1,471 @@ +Connect(); + $ret = $svdrp->Command($cmd); + $svdrp->Disconnect(); + + return $ret; +} + +function vdrgetinfostream($stream = "NULL", $ischan = 1) +{ + global $allepg, $allepgfilled; + $stream=stripslashes($stream); + if ($ischan) + { + // Fill epg if not yet done + if ($allepgfilled == 0) + { + $allepg = vdrsendcommand("LSTE NOW"); + $allepgfilled = 1; + } + + $channame = $stream; + } + else + { + $infofile = $stream ."/info"; + if (file_exists($infofile)) + $info= file_get_contents($infofile); + else + { + $infofile = $stream ."/info.vdr"; + if (file_exists($infofile)) + $info= file_get_contents($infofile); + else + $info=""; + } + + $allepg = explode("\n", $info); + } + + if ($ischan) + $chanfound = 0; + else + $chanfound = 1; + $epgtitlefound = 0; + + $epgtitle=""; + $epgdesc=""; + + // For all epg + $count = count($allepg); + for ($i = 0; $i < $count; $i++) + { + // Find the right chan (take the first one) + if ($chanfound == 0) + { + $streamArray = explode(";",$stream); + if (strstr($allepg[$i], $streamArray[0]) == $streamArray[0]) + $chanfound = 1; + } + else + { + // Now find T or C + if(ereg("^C", $allepg[$i])) + { + // Check if it is our chan too, else search again + if ($ischan) + { + if(!ereg("$stream$", $allepg[$i])) + { + $chanfound = 0; + continue; + } + } + else + { + $channame = substr($allepg[$i], 2); + $channames = explode(" ", $channame); + $channame = substr($channame, strlen($channames[0])+1); + } + } + else if(ereg("^T", $allepg[$i])) + $epgtitle=substr($allepg[$i], 2); + else if(ereg("^D", $allepg[$i])) + $epgdesc=substr($allepg[$i], 2); + } + } + + // Convert if needed + if (!is_utf8($epgtitle)) + $epgtitle = utf8_encode($epgtitle); + if (!is_utf8($epgdesc)) + $epgdesc = utf8_encode($epgdesc); + + + return array($epgtitle, $epgdesc, $channame); +} + +function vdrgettimerinfo($timernum=-1) +{ + if ($timernum != -1) + { + $timer = vdrsendcommand("LSTT " .$timernum); + + $timerarray = explode(":", $timer); + + $typearray = explode(" ", $timerarray[0]); + $type = $typearray[1]; + $channel = $timerarray[1]; + $date = $timerarray[2]; + $stime = $timerarray[3]; + $etime = $timerarray[4]; + $desc = $timerarray[7]; + } + else + { + $type = 1; + $channel = 1; + $date = date('Y-m-d'); + $stime = date('Hi'); + $etime = date('Hi'); + $desc = "New timer"; + } + + $channame = vdrgetchanname($channel); + + return array($type, $channame, $date, $stime, $etime, $desc); +} + +function vdrgetchannum($chan = "NULL") +{ + $channels = vdrsendcommand("LSTC"); + + // Get channel number + $channels = preg_grep(quotemeta('"'.$chan.';|'.$chan.':"'), $channels); + reset($channels); + + $channels = explode(" ", $channels[key($channels)]); + $channum = $channels[0]; + + return $channum; +} + +function vdrgetchanname($channum = 0) +{ + $channel = vdrsendcommand("LSTC " .$channum); + + // Get channel name + $chanarray = explode(":", $channel); + $chanarray = explode(";", $chanarray[0]); + $channame = $chanarray[0]; + $channame = substr($channame, strlen($channum)+1); + + return $channame; +} + + +function vdrlistcategories() +{ + global $vdrchannels; + + // All chans + print "
  • All channels
  • \r\n"; + print "
    \r\n"; + + if (!file_exists($vdrchannels)) + { + print "Error: channels file not found"; + return; + } + + $fp = fopen ($vdrchannels,"r"); + if (!fp) + { + print "Unable to open channels file"; + return; + } + while ($line = fgets($fp, 1024)) + { + // Check if it is a categorie + if ($line[0] == ":") + { + // Remove : and @ + $cat = substr($line, 1, -1); + if($cat[0] == '@') + { + $cat_array = explode(' ', $cat); + $cat = substr($cat, strlen($cat_array[0])+1); + } + + $cat2 = addslashes($cat); + + print "
  • $cat
  • \r\n"; + print "
    \r\n"; + } + } + fclose($fp); +} + +function vdrlistchannels($category = "NULL") +{ + global $epgtitle; + global $vdrchannels; + + if ($category == "All") + $cat_found=1; + else + $cat_found=0; + + if (!file_exists($vdrchannels)) + { + print "Error: channels file not found"; + return; + } + + $fp = fopen ($vdrchannels,"r"); + if (!fp) + { + print "Unable to open channels file"; + return; + } + while ($line = fgets($fp, 1024)) + { + if ($cat_found) + { + if ($line[0] == ":") + { + if ($category == "All") + continue; + else + break; + } + + $channels = explode(":", $line); + $channels = explode(";", $channels[0]); + $chan = $channels[0]; + + // Get EPG title + $epgtitle = NULL; + list($epgtitle, $epgdesc, $channame) = vdrgetinfostream($chan, 1); + print "
  • "; + $chan2=addslashes($chan); + print " \r\n"; + $channoslash = preg_replace("$/$", " ", $chan); + if (!file_exists('logos/'.$channoslash.'.png')) + print " \r\n"; + else + print " \r\n"; + print " $chan\r\n"; + print " $epgtitle\r\n
  • \r\n"; + print "
    "; + print " "; + print " "; + print " "; + print "
    \r\n"; + } + else + { + if ($line[0] == ":") + { + // Remove : and @ + $cat = substr($line, 1, -1); + if($cat[0] == '@') + { + $cat_array = explode(' ', $cat); + $cat = substr($cat, strlen($cat_array[0])+1); + } + + // Check category + if ("$cat" == "$category") + $cat_found = 1; + } + } + } + fclose($fp); +} + +function vdrlistchannelsdrop($chansel = "") +{ + global $vdrchannels; + + $chanselected = 0; + + if (!file_exists($vdrchannels)) + { + print "Error: channels file not found"; + return; + } + + $fp = fopen ($vdrchannels,"r"); + if (!fp) + { + print "Unable to open channels file"; + return; + } + while ($line = fgets($fp, 1024)) + { + if ($line[0] == ":") + continue; + + $channels = explode(":", $line); + $channels = explode(";", $channels[0]); + $chan = $channels[0]; + if (($chan == $chansel) && !$chanselected) + { + print ""; + $chanselected = 1; + } + else + print ""; + } +} + +function vdrlisttimers() +{ + $timers = vdrsendcommand("LSTT"); + + if (gettype($timers) == "string") + { + if (!is_numeric(substr($timers,0,1))) + { + print "
  • none

  • \r\n"; + return; + } + else + $timersarray[] = $timers; + } + else + $timersarray = $timers; + + foreach($timersarray as $timer) + { + // Extract timer # + $timerarray = explode(" ", $timer); + $timernum = $timerarray[0]; + + list($type, $channame, $date, $starthour, $endhour, $desc) = vdrgettimerinfo($timernum); + + print "
  • "; + print " \r\n"; + + if ($type & 0x8) + print " \"list\"\r\n"; + else if ($type & 0x1) + print " \"list\"\r\n"; + else + print " \"list\"\r\n"; + + print " {$date}: {$desc}\r\n"; + + print " \r\n"; + print "
  • \r\n"; + + print "
    \r\n"; + print " \r\n"; + print " \r\n"; + print "
    \r\n"; + } +} + +function vdrdeltimer($timer=0) +{ + return vdrsendcommand("DELT " .$timer); +} + +function vdrsettimer($prevtimer, $channame, $date, $stime, $etime, $desc, $active) +{ + $channum = vdrgetchannum($channame); + if ($active) + $type = "1"; + else + $type = "0"; + + if ($prevtimer == -1) + $command = "NEWT " .$type .":" .$channum .":" .$date .":" .$stime .":" .$etime .":99:99:" .$desc; + else + $command = "MODT " .$prevtimer ." " .$type .":" .$channum .":" .$date .":" .$stime .":" .$etime .":99:99:" .$desc; + + return vdrsendcommand($command); +} + +?> -- cgit v1.2.3