/**
* 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_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)
);
$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;
+ /**
+ * 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