X-Git-Url: https://git.cweiske.de/enigtomb.git/blobdiff_plain/e729de79bba9547f1dcb6fd8e4f12b9b29eb1259..ac6d786c54cfa00ff4d54dc4e184e3524600ce40:/DreamboxBouqets.php diff --git a/DreamboxBouqets.php b/DreamboxBouqets.php index 2e420d5..3541e6b 100644 --- a/DreamboxBouqets.php +++ b/DreamboxBouqets.php @@ -3,31 +3,70 @@ * Fetches bouqet information from the dreambox * * @author Christian Weiske +* @license LGPL http://www.gnu.org/copyleft/lesser.html */ class DreamboxBouqets { /** * Fetch radio bouqets * - * @param string $ip IP-address or hostname of the dreambox + * @param string $ip IP-address or hostname of the dreambox + * @param boolean $bEpgData If EPG data shall be fetched, too * * @return array Array of bouqets and the items */ - public static function fetchRadioBouqets($ip) + public static function fetchRadioBouqets($ip, $bEpgData = true) + { + return self::fetchBouqets( + $ip, + //TODO: fetch from dreambox config.js + '1:7:2:0:0:0:0:0:0:0:(type == 2)FROM BOUQUET "bouquets.radio" ORDER BY bouquet', + $bEpgData + ); + }//public static function fetchRadioBouqets(..) + + + + /** + * Fetch TV bouqets + * + * @param string $ip IP-address or hostname of the dreambox + * @param boolean $bEpgData If EPG data shall be fetched, too + * + * @return array Array of bouqets and the items + */ + public static function fetchTvBouqets($ip, $bEpgData = true) + { + return self::fetchBouqets( + $ip, + //TODO: fetch from dreambox config.js + '1:7:2:0:0:0:0:0:0:0:(type == 2)FROM BOUQUET "bouquets.tv" ORDER BY bouquet', + $bEpgData + ); + }//public static function fetchTvBouqets(..) + + + + /** + * Fetch bouqets + * + * @param string $ip IP-address or hostname of the dreambox + * @param string $sql SQL query to fetch bouqet from database + * @param boolean $bEpgData If EPG data shall be fetched, too + * + * @return array Array of bouqets (name is key) and the items (sub arrays) + */ + public static function fetchBouqets($ip, $sql, $bEpgData = true) { $host = 'http://' . $ip; $streamhost = 'http://' . $ip . ':8001'; $url_getServices = $host . "/web/getservices?sRef="; $url_stream_playlist = $host . '/web/stream.m3u?ref='; - //1%3A7%3A2%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3A(type%20%3D%3D%202)%20FROM%20BOUQUET%20%22userbouquet.info_______________radio_.radio%22%20ORDER%20BY%20bouquet $url_bouqet_epg = $host . '/web/epgnow?bRef='; $url_stream = $streamhost . '/'; - //TODO: fetch from dreambox config.js - $bouqet_radio = '1:7:2:0:0:0:0:0:0:0:(type == 2)FROM BOUQUET "bouquets.radio" ORDER BY bouquet'; - - $url = $url_getServices . urlencode($bouqet_radio); + $url = $url_getServices . urlencode($sql); $radiobouqets = new SimpleXMLElement( file_get_contents($url) ); @@ -46,30 +85,32 @@ class DreamboxBouqets $url ) ); + foreach ($stations->e2service as $station) { $strStationRef = (string)$station->e2servicereference; $arBouqets[$strBouqetName][$strStationRef] = array( 'name' => (string)$station->e2servicename, - 'playlist' => $url_stream_playlist . $strStationRef, - 'stream' => $url_stream . $strStationRef + 'playlist' => $url_stream_playlist . self::encodeUrl($strStationRef), + 'stream' => $url_stream . self::encodeUrl($strStationRef), ); } - $epgs = new SimpleXMLElement( - file_get_contents($epgurl) - ); - foreach ($epgs->e2event as $epg) { - $strStationRef = (string)$epg->e2eventservicereference; - $arBouqets[$strBouqetName][$strStationRef] = array_merge( - $arBouqets[$strBouqetName][$strStationRef], - array( - 'epgtitle' => (string)$epg->e2eventtitle, - 'epgdescription' => (string)$epg->e2eventdescription, - 'epgdescription2' => (string)$epg->e2eventdescriptionextendet, - ) + if ($bEpgData) { + $epgs = new SimpleXMLElement( + file_get_contents($epgurl) ); - } - + foreach ($epgs->e2event as $epg) { + $strStationRef = (string)$epg->e2eventservicereference; + $arBouqets[$strBouqetName][$strStationRef] = array_merge( + $arBouqets[$strBouqetName][$strStationRef], + array( + 'epgtitle' => (string)$epg->e2eventtitle, + 'epgdescription' => (string)$epg->e2eventdescription, + 'epgdescription2' => (string)$epg->e2eventdescriptionextendet, + ) + ); + } + }//if $bEpgData } return $arBouqets; @@ -77,10 +118,29 @@ class DreamboxBouqets + /** + * Fix the given bouqet name, make it a nice readable one. + * Removes some special chars and spaces. + * + * @param string $name Bouqet name + * + * @return string Fixed bouqet name + */ protected static function properBouqetName($name) { return trim(preg_replace('#\(.+\)$#', '', $name)); - } + }//protected static function properBouqetName(..) + + + + protected static function encodeUrl($strUrl) + { + return str_replace( + array(' ', '"'), + array('%20', '%22'), + $strUrl + ); + }//protected static function encodeUrl(..) } ?> \ No newline at end of file