Ejemplo n.º 1
0
    def P_eventview(self, request):
        event = {}
        event['sref'] = ""
        event['title'] = ""
        event['picon'] = ""
        event['shortdesc'] = ""
        event['longdesc'] = ""
        event['begin'] = 0
        event['end'] = 0
        event['duration'] = 0
        event['channel'] = ""

        eventid = getUrlArg(request, "eventid")
        ref = getUrlArg(request, "eventref")
        if ref and eventid:
            event = getEvent(ref, eventid)['event']
            event['id'] = eventid
            event['picon'] = getPicon(ref)
            event['end'] = event['begin'] + event['duration']
            event['duration'] = int(event['duration'] / 60)
            event['start'] = event['begin']
            event['begin'] = strftime("%H:%M", (localtime(event['begin'])))
            event['end'] = strftime("%H:%M", (localtime(event['end'])))

        return {"event": event}
Ejemplo n.º 2
0
		def __init__(self, request, session):
			self.request = request

			mode = None
			graboptions = [GRAB_PATH, '-q', '-s']

			fileformat = getUrlArg(request, "format", "jpg")
			if fileformat == "jpg":
				graboptions.append("-j")
				graboptions.append("95")
			elif fileformat == "png":
				graboptions.append("-p")
			elif fileformat != "bmp":
				fileformat = "bmp"

			size = getUrlArg(request, "r")
			if size != None:
				graboptions.append("-r")
				graboptions.append("%d" % int(size))

			mode = getUrlArg(request, "mode")
			if mode != None:
				if mode == "osd":
					graboptions.append("-o")
				elif mode == "video":
					graboptions.append("-v")
				elif mode == "pip":
					graboptions.append("-v")
					if InfoBar.instance.session.pipshown:
						graboptions.append("-i 1")
				elif mode == "lcd":
					eDBoxLCD.getInstance().dumpLCD()
					fileformat = "png"
					command = "cat /tmp/lcdshot.%s" % fileformat

			self.filepath = "/tmp/screenshot." + fileformat
			self.container = eConsoleAppContainer()
			self.container.appClosed.append(self.grabFinished)
			self.container.stdoutAvail.append(request.write)
			self.container.setBufferSize(32768)
			if mode == "lcd":
				if self.container.execute(command):
					raise Exception("failed to execute: ", command)
				sref = 'lcdshot'
			else:
				self.container.execute(GRAB_PATH, *graboptions)
				try:
					if mode == "pip" and InfoBar.instance.session.pipshown:
						ref = InfoBar.instance.session.pip.getCurrentService().toString()
					else:
						ref = session.nav.getCurrentlyPlayingServiceReference().toString()
					sref = '_'.join(ref.split(':', 10)[:10])
					if config.OpenWebif.webcache.screenshotchannelname.value:
						sref = ServiceReference(ref).getServiceName()
				except:  # nosec # noqa: E722
					sref = 'screenshot'
			sref = sref + '_' + time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
			request.notifyFinish().addErrback(self.requestAborted)
			request.setHeader('Content-Disposition', 'inline; filename=%s.%s;' % (sref, fileformat))
			request.setHeader('Content-Type', 'image/%s' % fileformat.replace("jpg", "jpeg"))
Ejemplo n.º 3
0
	def P_epgpop(self, request):
		events = []
		timers = []
		sref = getUrlArg(request, "sref")
		sstr = getUrlArg(request, "sstr")
		if sref != None:
			ev = getChannelEpg(sref)
			events = ev["events"]
		elif sstr != None:
			fulldesc = False
			if getUrlArg(request, "full") != None:
				fulldesc = True
			bouquetsonly = False
			if getUrlArg(request, "bouquetsonly") != None:
				bouquetsonly = True
			ev = getSearchEpg(sstr, None, fulldesc, bouquetsonly)
			events = sorted(ev["events"], key=lambda ev: ev['begin_timestamp'])
		at = False
		if len(events) > 0:
			t = getTimers(self.session)
			timers = t["timers"]
			try:
				from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer  # noqa: F401
				at = True
			except ImportError:
				pass
		if config.OpenWebif.webcache.theme.value:
			theme = config.OpenWebif.webcache.theme.value
		else:
			theme = 'original'
		moviedb = config.OpenWebif.webcache.moviedb.value if config.OpenWebif.webcache.moviedb.value else EXT_EVENT_INFO_SOURCE
		extEventInfoProvider = getEventInfoProvider(moviedb)

		return {"theme": theme, "events": events, "timers": timers, "at": at, "moviedb": moviedb, "extEventInfoProvider": extEventInfoProvider}
Ejemplo n.º 4
0
	def render(self, request):
		request.setHeader('Content-type', 'application/xhtml+xml')
		request.setHeader('charset', 'UTF-8')
		try:
			wol_active = config.plugins.wolconfig.activate.value
			wol_location = config.plugins.wolconfig.location.value
		except:  # nosec # noqa: E722
			return createResult(False, b"WOLSetup plugin is not installed or your STB does not support WOL")

		if len(request.args):
			config_changed = False
			wol_state = getUrlArg(request, "wol")
			location = getUrlArg(request, "location")
			wol_standby = getUrlArg(request, "wolstandby")
			if wol_state != None:
				wol_state = str(wol_state).lower()
				if wol_state in ('true', '1', 'enabled', 'enable', 'active'):
					config.plugins.wolconfig.activate.value = True
				elif wol_state in ('false', '0', 'disabled', 'disable', 'inactive'):
					config.plugins.wolconfig.activate.value = False
				if wol_active != config.plugins.wolconfig.activate.value:
					config_changed = True
			elif location != None:
				if location not in config.plugins.wolconfig.location.choices:
					location = wol_location
				if location != config.plugins.wolconfig.location.value:
					config.plugins.wolconfig.location.value = location
					config_changed = True
			elif wol_standby != None:
				wol_standby = str(wol_standby).lower()
				if wol_standby in ('true', '1', 'enabled', 'enable', 'active'):
					try:
						from Plugins.SystemPlugins.WOLSetup.plugin import WOLSetup, _deviseWOL, _flagForceEnable, _flagSupportWol, _tryQuitTable, _ethDevice  # noqa: F401
						from Screens.Standby import TryQuitMainloop
					except ImportError:
						return createResult(False, b"WOLSetup plugin is not installed or your STB does not support WOL")
					WOLSetup.ActivateWOL(self.session, writeDevice=True)
					self.session.open(TryQuitMainloop, _tryQuitTable["deepstandby"])
			if config_changed:
				config.plugins.wolconfig.save()

		locations = ""
		for location_available in config.plugins.wolconfig.location.choices:
			locations += location_available + ", "
		locations = locations.rstrip(', ')

		return ensure_binary("""<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
				<e2configs>
					<e2config>
						<e2configname>wol_active</e2configname>
						<e2configvalue>%s</e2configvalue>
					</e2config>
					<e2config>
						<e2configname>wol_location</e2configname>
						<e2configchoices>%s</e2configchoices>
						<e2configvalue>%s</e2configvalue>
					</e2config>
				</e2configs>""" % (str(config.plugins.wolconfig.activate.value), locations, str(config.plugins.wolconfig.location.value)))
Ejemplo n.º 5
0
	def P_channels(self, request):
		stype = getUrlArg(request, "stype", "tv")
		idbouquet = getUrlArg(request, "id", "ALL")
		channels = getChannels(idbouquet, stype)
		channels['transcoding'] = TRANSCODING
		channels['type'] = stype
		channels['showpicons'] = config.OpenWebif.webcache.showpicons.value
		channels['showpiconbackground'] = config.OpenWebif.responsive_show_picon_background.value
		return channels
Ejemplo n.º 6
0
 def P_channels(self, request):
     stype = getUrlArg(request, "stype", "tv")
     idbouquet = getUrlArg(request, "id", "ALL")
     channels = getChannels(idbouquet, stype)
     channels['transcoding'] = TRANSCODING
     channels['type'] = stype
     channels[
         'showchannelpicon'] = config.OpenWebif.webcache.showchannelpicon.value
     return channels
Ejemplo n.º 7
0
    def render(self, request):
        self.request = request
        self.json = False
        self.container = None
        self.action = getUrlArg(request, "command", "")
        package = getUrlArg(request, "package")
        self.json = getUrlArg(request, "format") == "json"
        fa = getUrlArg(request, "filter")
        if fa is None:
            self.filter = []
        elif fa == 'all':
            self.filter = ['dev', 'staticdev', 'dbg', 'doc', 'src', 'po']
        else:
            self.filter = fa.split(',')
        if self.action != '':
            if self.action in ("update", "upgrade"):
                return self.CallOPKG(request)
            elif self.action in ("info", "status", "install", "forceinstall",
                                 "remove", "forceremove"):
                if package != None:
                    return self.CallOPKG(request, package)
                else:
                    return self.ShowError(request,
                                          "parameter: package is missing")
            elif self.action in ("full", "listall", "list", "list_installed",
                                 "list_upgradable"):
                return self.CallOPKList(request)
            elif self.action in ("tmp"):
                import glob
                tmpfiles = glob.glob('/tmp/*.ipk')  # nosec
                ipks = []
                for tmpfile in tmpfiles:
                    ipks.append({
                        'path': tmpfile,
                        'name': (tmpfile.split('/')[-1]),
                        'size': os.stat(tmpfile).st_size,
                        'date': os.stat(tmpfile).st_mtime,
                    })
                request.setHeader("content-type", "text/plain")
                if PY3:
                    request.write(
                        json.dumps({
                            'ipkfiles': ipks
                        }).encode("ISO-8859-1"))
                else:
                    request.write(
                        json.dumps({'ipkfiles': ipks}, encoding="ISO-8859-1"))
                request.finish()
                return server.NOT_DONE_YET
            else:
                return self.ShowError(request,
                                      "Unknown command: " + self.action)
        else:
            return self.ShowHint(request)

        return self.ShowError(request, "Error")
Ejemplo n.º 8
0
 def P_event(self, request):
     event = getEvent(getUrlArg(request, "sref"),
                      getUrlArg(request, "idev"))
     event['event'][
         'recording_margin_before'] = config.recording.margin_before.value
     event['event'][
         'recording_margin_after'] = config.recording.margin_after.value
     event['at'] = HASAUTOTIMER
     event['transcoding'] = TRANSCODING
     event[
         'moviedb'] = config.OpenWebif.webcache.moviedb.value if config.OpenWebif.webcache.moviedb.value else EXT_EVENT_INFO_SOURCE
     event[
         'extEventInfoProvider'] = extEventInfoProvider = getEventInfoProvider(
             event['moviedb'])
     return event
Ejemplo n.º 9
0
	def P_event(self, request):
		event = getEvent(getUrlArg(request, "sref"), getUrlArg(request, "idev"))
		event['event']['recording_margin_before'] = config.recording.margin_before.value
		event['event']['recording_margin_after'] = config.recording.margin_after.value
		at = False
		try:
			from Plugins.Extensions.AutoTimer.AutoTimer import AutoTimer  # noqa: F401
			at = True
		except ImportError:
			pass
		event['at'] = at
		event['transcoding'] = TRANSCODING
		event['moviedb'] = config.OpenWebif.webcache.moviedb.value if config.OpenWebif.webcache.moviedb.value else EXT_EVENT_INFO_SOURCE
		event['extEventInfoProvider'] = extEventInfoProvider = getEventInfoProvider(event['moviedb'])
		return event
Ejemplo n.º 10
0
 def render(self, request):
     import struct
     import socket
     request.setHeader('Content-type', 'application/xhtml+xml')
     request.setHeader('charset', 'UTF-8')
     if len(request.args):
         port = 9
         mac = ""
         ip = ""
         man_port = getUrlArg(request, "port")
         if man_port != None:
             try:
                 port = int(man_port)
             except ValueError:
                 pass
         mac = getUrlArg(request, "mac")
         if mac != None:
             mac = str(mac).lower()
             mac = mac.split(':')
             if len(mac) != 6:
                 return b'<?xml version="1.0" encoding="UTF-8" ?><e2simplexmlresult><e2state>false</e2state><e2statetext>MAC address invalid see example: AA:BB:CC:DD:EE:FF</e2statetext></e2simplexmlresult>'
         ip = getUrlArg(request, "ip")
         if ip != None:
             ip = str(ip).lower()
             ip = ip.split('.')
             if len(ip) != 4:
                 return b'<?xml version="1.0" encoding="UTF-8" ?><e2simplexmlresult><e2state>false</e2state><e2statetext>IP address invalid see example: 192.168.2.10</e2statetext></e2simplexmlresult>'
             try:
                 for digit in ip:
                     is_int = int(digit)  # noqa: F841
             except ValueError:
                 return b'<?xml version="1.0" encoding="UTF-8" ?><e2simplexmlresult><e2state>false</e2state><e2statetext>IP address invalid see example: 192.168.2.10</e2statetext></e2simplexmlresult>'
             ip = ip[0] + "." + ip[1] + "." + ip[2] + ".255"
         if ip and mac:
             mac_struct = struct.pack('BBBBBB', int(mac[0], 16),
                                      int(mac[1], 16), int(mac[2], 16),
                                      int(mac[3], 16), int(mac[4], 16),
                                      int(mac[5], 16))
             magic = '\xff' * 6 + mac_struct * 16
             my_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
             my_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
             my_socket.sendto(magic, (ip, port))
             my_socket.close()
             return six.ensure_binary(
                 """<?xml version=\"1.0\" encoding=\"UTF-8\" ?><e2simplexmlresult><e2state>true</e2state><e2statetext>MagicPacket send to IP %s at port %d</e2statetext></e2simplexmlresult> """
                 % (ip, port))
         else:
             return b'<?xml version="1.0" encoding="UTF-8" ?><e2simplexmlresult><e2state>false</e2state><e2statetext>IP address and MAC address are mandatory arguments</e2statetext></e2simplexmlresult>'
Ejemplo n.º 11
0
def setSkinColor(self, request):
    skincolor = getUrlArg(request, "skincolor")
    if skincolor != None:
        print("save color:", skincolor)
        config.OpenWebif.responsive_skinColor.value = skincolor
        config.OpenWebif.responsive_skinColor.save()
    return {}
Ejemplo n.º 12
0
def setThemeMode(self, request):
    themeMode = getUrlArg(request, "themeMode")
    if themeMode != None:
        print("save theme mode:", themeMode)
        config.OpenWebif.responsive_themeMode.value = themeMode
        config.OpenWebif.responsive_themeMode.save()
    return {}
Ejemplo n.º 13
0
 def P_editmovie(self, request):
     sref = getUrlArg(request, "sRef")
     title = ""
     description = ""
     tags = ""
     resulttext = ""
     result = False
     if sref:
         mi = getMovieInfo(sref, NewFormat=True)
         result = mi["result"]
         if result:
             title = mi["title"]
             if title:
                 description = mi["description"]
                 tags = mi["tags"]
             else:
                 result = False
                 resulttext = "meta file not found"
         else:
             resulttext = mi["resulttext"]
     return {
         "title": title,
         "description": description,
         "sref": sref,
         "result": result,
         "tags": tags,
         "resulttext": resulttext
     }
Ejemplo n.º 14
0
    def P_timers(self, request):

        timers = getTimers(self.session)
        unsort = timers['timers']

        sorttype = getUrlArg(request, "sort")
        if sorttype == None:
            return timers

        if sorttype == 'name':
            timers['timers'] = sorted(unsort, key=lambda k: k['name'])
        elif sorttype == 'named':
            timers['timers'] = sorted(unsort,
                                      key=lambda k: k['name'],
                                      reverse=True)
        elif sorttype == 'date':
            timers['timers'] = sorted(unsort, key=lambda k: k['begin'])
        else:
            timers['timers'] = sorted(unsort,
                                      key=lambda k: k['begin'],
                                      reverse=True)
            sorttype = 'dated'

        timers['sort'] = sorttype
        return timers
Ejemplo n.º 15
0
 def render_POST(self, request):
     request.setResponseCode(http.OK)
     request.setHeader('content-type', 'text/plain')
     request.setHeader('charset', 'UTF-8')
     content = request.args[b'rfile'][0]
     filename = self.mbasename(getUrlArg(request, "filename"))
     if not content or not config.OpenWebif.allow_upload_ipk.value:
         result = [False, _('Error upload File')]
     else:
         if not filename.endswith(".ipk"):
             result = [False, _('wrong filetype')]
         else:
             FN = "/tmp/" + filename  # nosec
             fileh = os.open(FN, os.O_WRONLY | os.O_CREAT)
             bytes = 0
             if fileh:
                 bytes = os.write(fileh, content)
                 os.close(fileh)
             if bytes <= 0:
                 try:
                     os.remove(FN)
                 except OSError:
                     pass
                 result = [False, _('Error writing File')]
             else:
                 result = [True, FN]
     return six.ensure_binary(json.dumps({"Result": result}))
Ejemplo n.º 16
0
    def P_multiepg(self, request):
        epgmode = getUrlArg(request, "epgmode", "tv")
        if epgmode not in ["tv", "radio"]:
            epgmode = "tv"

        bouq = getBouquets(epgmode)
        bref = getUrlArg(request, "bref")
        if bref == None:
            bref = bouq['bouquets'][0][0]
        endtime = 1440
        begintime = -1
        day = 0
        week = 0
        wadd = 0
        _week = getUrlArg(request, "week")
        if _week != None:
            try:
                week = int(_week)
                wadd = week * 7
            except ValueError:
                pass
        _day = getUrlArg(request, "day")
        if _day != None:
            try:
                day = int(_day)
                if day > 0 or wadd > 0:
                    now = localtime()
                    begintime = int(
                        mktime(
                            (now.tm_year, now.tm_mon, now.tm_mday + day + wadd,
                             0, 0, 0, -1, -1, -1)))
            except ValueError:
                pass
        mode = 1
        if config.OpenWebif.webcache.mepgmode.value:
            try:
                mode = int(config.OpenWebif.webcache.mepgmode.value)
            except ValueError:
                pass
        epg = getMultiEpg(self, bref, begintime, endtime, mode)
        epg['bouquets'] = bouq['bouquets']
        epg['bref'] = bref
        epg['day'] = day
        epg['week'] = week
        epg['mode'] = mode
        epg['epgmode'] = epgmode
        return epg
Ejemplo n.º 17
0
def setVTiWebConfig(self, request):
    if b"moviesearchextended" in list(request.args.keys()):
        val = int(getUrlArg(request, "moviesearchextended"))
        print("save moviesearchextended:", val)
        config.OpenWebif.responsive_moviesearch_extended.value = val == 1 and True or False
        config.OpenWebif.responsive_moviesearch_extended.save()
    if b"moviesearchshort" in list(request.args.keys()):
        val = int(getUrlArg(request, "moviesearchshort"))
        print("save moviesearchshort:", val)
        config.OpenWebif.responsive_moviesearch_short.value = val == 1 and True or False
        config.OpenWebif.responsive_moviesearch_short.save()
    if b"fullsearch" in list(request.args.keys()):
        val = int(getUrlArg(request, "fullsearch"))
        print("save fullsearch:", val)
        config.OpenWebif.responsive_epgsearch_full.value = val == 1 and True or False
        config.OpenWebif.responsive_epgsearch_full.save()
    if b"bqonly" in list(request.args.keys()):
        val = int(getUrlArg(request, "bqonly"))
        print("save bqonly:", val)
        config.OpenWebif.responsive_epgsearch_only_bq.value = val == 1 and True or False
        config.OpenWebif.responsive_epgsearch_only_bq.save()
    if b"rcugrabscreen" in list(request.args.keys()):
        val = int(getUrlArg(request, "rcugrabscreen"))
        print("save rcugrabscreen:", val)
        config.OpenWebif.responsive_rcu_screenshot.value = val == 1 and True or False
        config.OpenWebif.responsive_rcu_screenshot.save()
    if b"minmovielist" in list(request.args.keys()):
        val = int(getUrlArg(request, "minmovielist"))
        print("save minmovielist:", val)
        config.OpenWebif.responsive_min_movielist.value = val == 1 and True or False
        config.OpenWebif.responsive_min_movielist.save()
    if b"mintimerlist" in list(request.args.keys()):
        val = int(getUrlArg(request, "mintimerlist"))
        print("save mintimerlist:", val)
        config.OpenWebif.responsive_min_timerlist.value = val == 1 and True or False
        config.OpenWebif.responsive_min_timerlist.save()
    if b"minepglist" in list(request.args.keys()):
        val = int(getUrlArg(request, "minepglist"))
        print("save minepglist:", val)
        config.OpenWebif.responsive_min_epglist.value = val == 1 and True or False
        config.OpenWebif.responsive_min_epglist.save()
    if b"remotecontrolview" in list(request.args.keys()):
        val = int(getUrlArg(request, "remotecontrolview"))
        print("save remotecontrolview:", val)
        config.OpenWebif.responsive_rcu_full_view.value = val == 1 and True or False
        config.OpenWebif.responsive_rcu_full_view.save()
    return ''
Ejemplo n.º 18
0
	def P_index(self, request):
		if config.OpenWebif.responsive_enabled.value and os.path.exists(VIEWS_PATH + "/responsive"):
			return {}
		mode = getUrlArg(request, "mode", "")
		uagent = request.getHeader('User-Agent')
		if uagent and mode != 'fullpage' and os.path.exists(getPublicPath('mobile')):
			if uagent.lower().find("iphone") != -1 or uagent.lower().find("ipod") != -1 or uagent.lower().find("blackberry") != -1 or uagent.lower().find("mobile") != -1:
				request.setHeader("Location", "/mobile/")
				request.setResponseCode(http.FOUND)
				return ""
		return {}
Ejemplo n.º 19
0
	def render(self, request):
		request.setHeader('Content-Type', 'application/xhtml+xml')
		request.setHeader('Charset', 'UTF-8')
		if len(request.args):
			port = 9
			mac = ""
			ip = ""
			man_port = getUrlArg(request, "port")
			if man_port != None:
				try:
					port = int(man_port)
				except ValueError:
					pass
			mac = getUrlArg(request, "mac")
			if mac != None:
				mac = str(mac).lower()
				mac = mac.split(':')
				if len(mac) != 6:
					return createResult(False, b"MAC address invalid see example: AA:BB:CC:DD:EE:FF")
			ip = getUrlArg(request, "ip")
			if ip != None:
				ip = str(ip).lower()
				ip = ip.split('.')
				if len(ip) != 4:
					return createResult(False, b"IP address invalid see example: 192.168.2.10")
				try:
					for digit in ip:
						is_int = int(digit)  # noqa: F841
				except ValueError:
					return createResult(False, b"IP address invalid see example: 192.168.2.10")
				ip = ip[0] + "." + ip[1] + "." + ip[2] + ".255"
			if ip and mac:
				mac_struct = pack('BBBBBB', int(mac[0], 16), int(mac[1], 16), int(mac[2], 16), int(mac[3], 16), int(mac[4], 16), int(mac[5], 16))
				magic = ensure_binary(('\xff' * 6) + str(mac_struct * 16))
				my_socket = socket(AF_INET, SOCK_DGRAM)
				my_socket.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
				my_socket.sendto(magic, (ip, port))
				my_socket.close()
				return createResult(True, ensure_binary("MagicPacket send to IP %s at port %d" % (ip, port)))
		return createResult(False, b"'ip' and 'mac' are mandatory arguments")
Ejemplo n.º 20
0
	def render_POST(self, request):
		request.setResponseCode(http.OK)
		request.setHeader('content-type', 'text/plain')
		request.setHeader('charset', 'UTF-8')
		result = [False, 'Error upload File']
		if getUrlArg(request, "json") != None:
			try:
				from Plugins.Extensions.OpenWebif.controllers.BouquetEditor import BouquetEditor
				bqe = BouquetEditor(self.session, func=BouquetEditor.IMPORT_BOUQUET)
				bqe.handleCommand(request.args)
				result = bqe.result
			except ImportError:
				result = [False, 'BouquetEditor plugin not found']

		return json.dumps({"Result": result})
Ejemplo n.º 21
0
	def P_index(self, request):
		if config.OpenWebif.responsive_enabled.value and os.path.exists(VIEWS_PATH + "/responsive"):
			return {}
		# TODO: enable this if modern UI is finished for mobile
		# setMobile()
		mode = getUrlArg(request, "mode", "")
		uagent = request.getHeader('User-Agent')
		# TODO: enable this if modern UI is finished for mobile
		#if os.path.exists(VIEWS_PATH + "/responsive"):
		#	if uagent.lower().find("iphone") != -1 or uagent.lower().find("ipod") != -1 or uagent.lower().find("blackberry") != -1 or uagent.lower().find("mobile") != -1:
		#		setMobile(True)
		#		return {}

		# TODO: remove this if mobile parts removed
		if uagent and mode != 'fullpage' and os.path.exists(getPublicPath('mobile')):
			if uagent.lower().find("iphone") != -1 or uagent.lower().find("ipod") != -1 or uagent.lower().find("blackberry") != -1 or uagent.lower().find("mobile") != -1:
				request.setHeader("Location", "/mobile/")
				request.setResponseCode(http.FOUND)
				return ""
		return {}
Ejemplo n.º 22
0
    def P_channelinfo(self, request):
        channelinfo = {}
        channelepg = {}
        sref = getUrlArg(request, "sref")
        if sref != None:
            channelepg = getChannelEpg(sref)
            # Detect if sRef contains a stream
            if ("://" in sref):
                # Repair sRef (URL part gets unquoted somewhere in between but MUST NOT)
                sref = ":".join(sref.split(':')[:10]) + ":" + quote(":".join(
                    sref.split(':')[10:-1])) + ":" + sref.split(':')[-1]
                # Get service name from last part of the sRef
                channelinfo['sname'] = sref.split(':')[-1]
                # Use quoted sref when stream has EPG
                if len(channelepg['events']) > 1:
                    channelepg['events'][0]['sref'] = sref
            else:
                # todo: Get service name
                channelinfo['sname'] = ""
            # Assume some sane blank defaults
            channelinfo['sref'] = sref
            channelinfo['title'] = ""
            channelinfo['picon'] = ""
            channelinfo['shortdesc'] = ""
            channelinfo['longdesc'] = ""
            channelinfo['begin'] = 0
            channelinfo['end'] = 0

        # Got EPG information?
        if len(channelepg['events']) > 1:
            # Return the EPG
            return {
                "channelinfo": channelepg["events"][0],
                "channelepg": channelepg["events"]
            }
        else:
            # Make sure at least some basic channel info gets returned when there is no EPG
            return {"channelinfo": channelinfo, "channelepg": None}
Ejemplo n.º 23
0
def getStreamSubservices(session, request):
	services = []
	currentServiceRef = session.nav.getCurrentlyPlayingServiceReference()

	# TODO : this will only work if sref = current channel
	# the DMM webif can also show subservices for other channels like the current
	# ideas are welcome

	sRef = getUrlArg(request, "sRef")
	if sRef != None:
		currentServiceRef = eServiceReference(sRef)

	if currentServiceRef is not None:
		currentService = session.nav.getCurrentService()
		subservices = currentService.subServices()

		services.append({
			"servicereference": currentServiceRef.toString(),
			"servicename": ServiceReference(currentServiceRef).getServiceName()
		})
		if subservices and subservices.getNumberOfSubservices() != 0:
			n = subservices and subservices.getNumberOfSubservices()
			z = 0
			while z < n:
				sub = subservices.getSubservice(z)
				services.append({
					"servicereference": sub.toString(),
					"servicename": sub.getName()
				})
				z += 1
	else:
		services.append = ({
			"servicereference": "N/A",
			"servicename": "N/A"
		})

	return {"services": services}
Ejemplo n.º 24
0
 def P_eventdescription(self, request):
     return getEventDesc(getUrlArg(request, "sref"),
                         getUrlArg(request, "idev"))
Ejemplo n.º 25
0
 def P_satellites(self, request):
     stype = getUrlArg(request, "stype", "tv")
     sat = getSatellites(stype)
     return {"satellites": sat['satellites'], "stype": stype}
Ejemplo n.º 26
0
 def P_providers(self, request):
     stype = getUrlArg(request, "stype", "tv")
     prov = getProviders(stype)
     return {"providers": prov['providers'], "stype": stype}
Ejemplo n.º 27
0
 def P_bouquets(self, request):
     stype = getUrlArg(request, "stype", "tv")
     bouq = getBouquets(stype)
     return {"bouquets": bouq['bouquets'], "stype": stype}
Ejemplo n.º 28
0
 def P_config(self, request):
     section = getUrlArg(request, "section", "usage")
     return getConfigs(section)
Ejemplo n.º 29
0
 def P_tvradio(self, request):
     epgmode = getUrlArg(request, "epgmode", "tv")
     if epgmode not in ["tv", "radio"]:
         epgmode = "tv"
     return {"epgmode": epgmode}
Ejemplo n.º 30
0
 def P_channels(self, request):
     stype = getUrlArg(request, "stype", "tv")
     idbouquet = getUrlArg(request, "id", "ALL")
     channels = getChannels(idbouquet, stype)
     channels['transcoding'] = TRANSCODING
     return channels