use "/web/streamsubservices?sRef=xyz" for getting subservices for a service you are currently streaming
The Result ist the same as with /web/subservices
Bump enigma2 Version requirements
Maintainer: Felix Domke <tmbinc@elitedvb.net>
Architecture: noarch
Homepage: http://enigma2-plugins.schwerkraft.elitedvb.net/
-Depends: enigma2(>2.6git20090217), twisted-web2, python-pyopenssl, python-crypt
+Depends: enigma2(>2.6git20090506), twisted-web2, python-pyopenssl, python-crypt
Source: http://enigma2-plugins.schwerkraft.elitedvb.net/
#from time import sleep
class SubServices(Source):
- def __init__(self, session):
+ def __init__(self, session, streamingScreens = None):
Source.__init__(self)
self.session = session
+ self.streamingScreens = streamingScreens
+ self.cmd = None
def handleCommand(self, cmd):
if cmd is not None:
- #TODO some logic here
- pass
+ print "[SubServices].handleCommand %s" %cmd
+ self.cmd = cmd
- def command(self):
- print "SubServices was called"
+ def getSubservices(self):
+ print "[SubServices].getSubservices called"
list = []
-
- #sleep(5) # FIXMEEEEE very ugly code !!
-
- list0 = []
- currentServiceRef = self.session.nav.getCurrentlyPlayingServiceReference()
- if currentServiceRef is not None:
- list.append([currentServiceRef.toString(),
- ServiceReference(currentServiceRef).getServiceName()]
- )
-
- currentService = self.session.nav.getCurrentService()
- subservices = currentService and currentService.subServices()
- if subservices or subservices.getNumberOfSubservices() != 0:
- n = subservices and subservices.getNumberOfSubservices()
- for x in range(n):
- sub = subservices.getSubservice(x)
- list.append([sub.toString(), sub.getName()])
-
- else:
+
+ if self.streamingScreens is None:
+ currentServiceRef = self.session.nav.getCurrentlyPlayingServiceReference()
+ if currentServiceRef is not None:
+ list.append([currentServiceRef.toString(),
+ ServiceReference(currentServiceRef).getServiceName()]
+ )
+
+ currentService = self.session.nav.getCurrentService()
+ subservices = currentService and currentService.subServices()
+ if subservices or subservices.getNumberOfSubservices() != 0:
+ n = subservices and subservices.getNumberOfSubservices()
+ for x in range(n):
+ sub = subservices.getSubservice(x)
+ list.append([sub.toString(), sub.getName()])
+
+ else:
+ list.append(["N/A", "N/A"])
+
+ print "SubServices is returning list ", list
+ return list
+
+ elif self.cmd is not None:
+ print "[SubServices].getSubservices for Streaming Service"
+ for screen in self.streamingScreens:
+ if screen is not None:
+ service = screen.getRecordService()
+ sref = ServiceReference(screen.getRecordServiceRef())
+ if service is not None:
+ print "[SubServices] serviceref: %s | cmd: %s" %(sref, self.cmd)
+
+ if sref.__str__() == self.cmd:
+ list.append([sref.__str__(), sref.getServiceName()])
+ print "[SubServices] Matching recordSerivce found!"
+ subservices = service and service.subServices()
+ if subservices or subservices.getNumberOfSubservices() != 0:
+ n = subservices and subservices.getNumberOfSubservices()
+ for x in range(n):
+ sub = subservices.getSubservice(x)
+ list.append([sub.toString(), sub.getName()])
+
+ return list
+ else:
+ print "[SubServices] no items: %s" %subservices
+ else:
+ print "[SubServices] Service is None!"
+ if len(list) == 0:
list.append(["N/A", "N/A"])
- print "SubServices is returning list ", list
return list
-
- list = property(command)
+
+ list = property(getSubservices)
lut = {"ServiceReference": 0,
"Name": 1
}
var url_getServices = "/web/getservices?sRef="; // plus serviceref
var url_subservices = "/web/subservices"; // subservices for current service
+var url_streamsubservices = "/web/streamsubservices?sRef="; // subservices for streaming service
var url_updates= "/web/updates.html";
var vlc = '';
-
+var currentServiceRef = '';
+var bouquetUpdatePoller = '';
+var currentBouquetRef = '';
/*
* incoming request-data for Current Service Epg
*/
}
function onServiceSelected() {
- var sref = $('channelSelect').options[$('channelSelect').selectedIndex].id;
+ currentServiceRef = $('channelSelect').options[$('channelSelect').selectedIndex].id;
- if(sref !== "vlcemptyservice"){
- loadVLCEPGServiceNow(sref);
- setStreamTarget(sref);
+ if(currentServiceRef !== "vlcemptyservice"){
+ loadVLCEPGServiceNow(currentServiceRef);
+ setStreamTarget(currentServiceRef);
if($('vlcZap').checked){
- doRequest("/web/zap?sRef=" + sref);
+ doRequest("/web/zap?sRef=" + currentServiceRef);
}
delayedLoadVlcSubservices();
} else {
loadVLCBouquet(bouquets[0].getServiceReference());
}
}
+function reloadVLCBouquet(){
+ loadVLCBouquet(currentBouquetRef);
+}
+
function loadVLCBouquet(servicereference) {
+// clearInterval(bouquetUpdatePoller);
+ currentBouquetRef = servicereference;
+
loadVLCChannelList(servicereference);
+
+// bouquetUpdatePoller = setInterval(reloadVLCBouquet, 30000);
}
function incomingVLCSubservices(request){
}
function loadVlcSubservices(){
- doRequest(url_subservices, incomingVLCSubservices);
+ var url = url_streamsubservices + currentServiceRef;
+ doRequest(url, incomingVLCSubservices);
}
function delayedLoadVlcSubservices(){
function loadVLCBouquets() {
url = url_getServices + bouquetsTv;
doRequest(url, incomingVLCBouquetList);
+
}
/*
--- /dev/null
+<e2:screen name="StreamSubServiceWebScreen"><?xml version="1.0" encoding="UTF-8"?>
+<e2servicelist><e2:element source="StreamSubServices" id="sRef"><e2:convert type="web:ListFiller" >
+ <e2service>
+ <e2servicereference><e2:item name="ServiceReference" filter="xml"/></e2servicereference>
+ <e2servicename><e2:item name="Name" filter="xml"/></e2servicename>
+ </e2service>
+ </e2:convert>
+ <e2:convert type="web:TextToHTML" /></e2:element>
+</e2servicelist>
+</e2:screen>
\ No newline at end of file
WebScreen.__init__(self, session, request)
self["SubServices"] = SubServices(session)
+class StreamSubServiceWebScreen(WebScreen):
+ def __init__(self, session, request):
+ WebScreen.__init__(self, session, request)
+ self["StreamSubServices"] = SubServices(session, streamingScreens)
+
class ServiceWebScreen(WebScreen):
def __init__(self, session, request):
WebScreen.__init__(self, session, request)
self["WAPdeleteOldOnSave"] = WAPfunctions(session, func=WAPfunctions.DELETEOLD)
+streamingScreens = []
+
class StreamingWebScreen(WebScreen):
def __init__(self, session, request):
WebScreen.__init__(self, session, request)
from Components.Sources.StreamService import StreamService
- self["StreamService"] = StreamService(self.session.nav)
+ self["StreamService"] = StreamService(self.session.nav)
+ streamingScreens.append(self)
+ self.screenIndex = len(streamingScreens) - 1
+
+ def getRecordService(self):
+ if self.has_key("StreamService"):
+ return self["StreamService"].getService()
+ return None
+
+ def getRecordServiceRef(self):
+ if self.has_key("StreamService"):
+ return self["StreamService"].ref
+ return None
class M3UStreamingWebScreen(WebScreen):
def __init__(self, session, request):