def changed(self, what):
     if self.instance:
         pngname = ""
         if what[0] != self.CHANGED_CLEAR:
             sname = self.source.text
             pos = sname.rfind(':http')
             sname = sname.split('http')[0]
             s_name = sname
             if sname.startswith("1:134"):
                 sname = GetWithAlternative(self.source.text)
             if sname.startswith("4097:0"):
                 sname = self.source.text
                 pos = sname.rfind(':http')
                 if pos != -1:
                     sname = sname.split('http')[0]
                 pos = sname.rfind(':rtmp')
                 if pos != -1:
                     sname = sname.split('rtmp')[0]
                 pos = sname.rfind(':rtsp')
                 if pos != -1:
                     sname = sname.split('rtsp')[0]
                 pos = sname.rfind(':rtp')
                 if pos != -1:
                     sname = sname.split('rtp')[0]
                 pos = sname.rfind(':mms')
                 if pos != -1:
                     sname = sname.split('mms')[0]
             pos = sname.rfind(':')
             if pos != -1:
                 sname = sname[:pos].rstrip(':').replace(':', '_')
             pngname = self.nameCache.get(sname, "")
             if pngname == "":
                 pngname = self.findPicon(sname)
                 if pngname == "":
                     serviceHandler = eServiceCenter.getInstance()
                     service = eServiceReference(s_name)
                     if service and service is not None:
                         info = serviceHandler.info(service)
                         if info and info is not None:
                             service_name = info.getName(service).replace(
                                 '\xc2\x86',
                                 '').replace('\xc2\x87',
                                             '').replace('/', '_')
                             pngname = self.findPicon(service_name)
                 if pngname != "":
                     self.nameCache[sname] = pngname
         if pngname == "":  # no picon for service found
             self.instance.hide()
         else:
             self.instance.show()
         if pngname != "" and self.pngname != pngname:
             if config.usage.picon_scale.value:
                 self.instance.setScale(2)
             else:
                 self.instance.setScale(0)
             self.instance.setPixmapFromFile(pngname)
             self.pngname = pngname
Exemplo n.º 2
0
def findPicon(service):
    pngname = ""
    sname = service
    s_name = sname
    if sname.startswith("1:134"):
        sname = GetWithAlternative(service)
    for protocol in ("http", "rtmp", "rtsp", "mms", "rtp"):
        pos = sname.rfind(':' + protocol)
        if pos != -1:
            sname = sname.split(protocol)[0]
            break
    pos = sname.rfind(':')
    if pos != -1:
        sname = sname[:pos].rstrip(':').replace(':', '_')
    pngname = nameCache.get(sname, "")
    if pngname == "":
        pngname = findFile(sname)
        if pngname == "":
            serviceHandler = eServiceCenter.getInstance()
            service = eServiceReference(s_name)
            if service and service is not None:
                info = serviceHandler.info(service)
                if info and info is not None:
                    service_name = info.getName(service).replace(
                        '\xc2\x86', '').replace('\xc2\x87',
                                                '').replace('/', '_')
                    print service_name
                    pngname = findFile(service_name)
        if pngname == "" and sname.startswith("4097_"):
            pngname = findFile(sname.replace("4097_", "1_", 1))
        if pngname != "":
            nameCache[sname] = pngname
    return pngname
Exemplo n.º 3
0
 def getOrbitalPos(self, ref, state):
     refstr = ''
     alternative = ''
     if hasattr(ref, 'sref'):
         refstr = str(ref.sref)
     else:
         refstr = str(ref)
     if refstr and refstr.startswith('1:134:'):
         alternative = " (A)"
         if state in (1, 2) and not hasattr(ref, 'sref'):
             current_ref = getBestPlayableServiceReference(
                 ref.ref, eServiceReference())
             if not current_ref:
                 return _("N/A") + alternative
             else:
                 refstr = current_ref.toString()
         else:
             refstr = GetWithAlternative(refstr)
     if '%3a//' in refstr:
         return "%s" % _("Stream") + alternative
     op = int(refstr.split(':', 10)[6][:-4] or "0", 16)
     if op == 0xeeee:
         return "%s" % _("DVB-T") + alternative
     if op == 0xffff:
         return "%s" % _("DVB-C") + alternative
     direction = 'E'
     if op > 1800:
         op = 3600 - op
         direction = 'W'
     return ("%d.%d\xc2\xb0%s") % (op // 10, op % 10,
                                   direction) + alternative
Exemplo n.º 4
0
	def getOrbitalPos(self, ref, state):
		refstr = ''
		alternative = ''
		if hasattr(ref, 'sref'):
			refstr = str(ref.sref)
		else:
			refstr = str(ref)
		if refstr and refstr.startswith('1:134:'):
			alternative = " (A)"
			if state in (1, 2) and not hasattr(ref, 'sref'):
				current_ref = getBestPlayableServiceReference(ref.ref, eServiceReference())
				if not current_ref:
					return _("N/A") + alternative
				else:
					refstr = current_ref.toString()
			else:
				refstr = GetWithAlternative(refstr)
		if '%3a//' in refstr:
			return "%s" % _("Stream") + alternative
		op = int(refstr.split(':', 10)[6][:-4] or "0",16)
		if op == 0xeeee:
			return "%s" % _("DVB-T") + alternative
		if op == 0xffff:
			return "%s" % _("DVB-C") + alternative
		direction = 'E'
		if op > 1800:
			op = 3600 - op
			direction = 'W'
		return ("%d.%d\xc2\xb0%s") % (op // 10, op % 10, direction) + alternative
Exemplo n.º 5
0
def findPicon(service):
    pngname = ''
    sname = service
    s_name = sname
    if sname.startswith('1:134'):
        sname = GetWithAlternative(service)
    for protocol in ('http', 'rtmp', 'rtsp', 'mms', 'rtp'):
        pos = sname.rfind(':' + protocol)
        if pos != -1:
            sname = sname.split(protocol)[0]
            break

    pos = sname.rfind(':')
    if pos != -1:
        sname = sname[:pos].rstrip(':').replace(':', '_')
    pngname = nameCache.get(sname, '')
    if pngname == '':
        pngname = findFile(sname)
        if pngname == '':
            serviceHandler = eServiceCenter.getInstance()
            service = eServiceReference(s_name)
            if service and service is not None:
                info = serviceHandler.info(service)
                if info and info is not None:
                    service_name = info.getName(service).replace(
                        '\xc2\x86', '').replace('\xc2\x87',
                                                '').replace('/', '_')
                    print service_name
                    pngname = findFile(service_name)
        if pngname == '' and sname.startswith('4097_'):
            pngname = findFile(sname.replace('4097_', '1_', 1))
        if pngname != '':
            nameCache[sname] = pngname
    return pngname
Exemplo n.º 6
0
	def changed(self, what):
		if self.instance:
			pngname = ""
			if what[0] != self.CHANGED_CLEAR:
				sname = self.source.text
				if sname.startswith("1:134"):
					sname = GetWithAlternative(self.source.text)
				pos = sname.rfind(':http')
				if pos != -1:
					sname = sname.split('http')[0]
				# strip all after last :
				pos = sname.rfind(':')
				if pos != -1:
					sname = sname[:pos].rstrip(':').replace(':','_')
				pngname = self.nameCache.get(sname, "")
				if pngname == "":
					pngname = self.findPicon(sname)
					if pngname != "":
						self.nameCache[sname] = pngname
			if pngname == "": # no XPicons for service found
				self.instance.hide()
			else:
				self.instance.show()
			if pngname != "" and self.pngname != pngname:
				self.instance.setPixmapFromFile(pngname)
				self.pngname = pngname
Exemplo n.º 7
0
	def changed(self, what):
		if self.instance:
			pngname = ""
			if what[0] != self.CHANGED_CLEAR:
				sname = self.source.text
				if sname.startswith("1:134"):
					sname = GetWithAlternative(self.source.text)
				pos = sname.rfind(':http')
				if pos != -1:
					sname = sname.split('http')[0]
				# strip all after last :
				pos = sname.rfind(':')
				if pos != -1:
					sname = sname[:pos].rstrip(':').replace(':','_')
				pngname = self.nameCache.get(sname, "")
				if pngname == "":
					pngname = self.findPicon(sname)
					if pngname != "":
						self.nameCache[sname] = pngname
			if pngname == "": # no picon for service found
				self.instance.hide()
			else:
				self.instance.show()
			if pngname != "" and self.pngname != pngname:
				if config.usage.picon_scale.value:
					self.instance.setScale(2)
				else:
					self.instance.setScale(0)
				self.instance.setPixmapFromFile(pngname)
				self.pngname = pngname
Exemplo n.º 8
0
def findPicon(service):
	pngname = ""
	sname = service
	s_name = sname
	if sname.startswith("1:134"):
		sname = GetWithAlternative(service)
	for protocol in ("http", "rtmp", "rtsp", "mms", "rtp"):
		pos = sname.rfind(':' + protocol )
		if pos != -1:
			sname = sname.split(protocol)[0]
			break
	pos = sname.rfind(':')
	if pos != -1:
		sname = sname[:pos].rstrip(':').replace(':','_')
	pngname = nameCache.get(sname, "")
	if pngname == "":
		pngname = findFile(sname)
		if pngname == "":
			serviceHandler = eServiceCenter.getInstance()
			service = eServiceReference(s_name)
			if service and service is not None:
				info = serviceHandler.info(service)
				if info and info is not None:
					service_name = info.getName(service).replace('\xc2\x86','').replace('\xc2\x87', '').replace('/', '_')
					print service_name
					pngname = findFile(service_name)
		if pngname == "" and sname.startswith("4097_"):
			pngname = findFile(sname.replace("4097_", "1_", 1))
		if pngname != "":
			nameCache[sname] = pngname
	return pngname
Exemplo n.º 9
0
	def sortEPGList(self, epglist):
		usr_ref_list = [ ]
		serviceHandler = eServiceCenter.getInstance()
		if not config.usage.multibouquet.value:
			service_types_tv = '1:7:1:0:0:0:0:0:0:0:(type == 1) || (type == 17) || (type == 22) || (type == 25) || (type == 134) || (type == 195)'
			bqrootstr = '%s FROM BOUQUET "userbouquet.favourites.tv" ORDER BY bouquet' % (service_types_tv)
			bouquet = eServiceReference(bqrootstr)
			servicelist = serviceHandler.list(bouquet)
			if not servicelist is None:
				while True:
					service = servicelist.getNext()
					if not service.valid(): break
					if not (service.flags & (eServiceReference.isMarker|eServiceReference.isDirectory)):
						if config.plugins.epgsearch.favorit_name.value:
							usr_ref_list.append(service.toString())
						else:
							usr_ref_list.append(':'.join(service.toString().split(':')[:11]))
		else:
			bqrootstr = '1:7:1:0:0:0:0:0:0:0:FROM BOUQUET "bouquets.tv" ORDER BY bouquet'
			bouquet = eServiceReference(bqrootstr)
			bouquetlist = serviceHandler.list(bouquet)
			if not bouquetlist is None:
				while True:
					bouquet = bouquetlist.getNext()
					if not bouquet.valid(): break
					if bouquet.flags & eServiceReference.isDirectory:
						servicelist = serviceHandler.list(bouquet)
						if not servicelist is None:
							while True:
								service = servicelist.getNext()
								if not service.valid(): break
								if not (service.flags & (eServiceReference.isMarker|eServiceReference.isDirectory)):
									refstr = service.toString()
									if refstr.startswith('1:134:'):
										refstr = GetWithAlternative(refstr)
									if config.plugins.epgsearch.favorit_name.value:
										usr_ref_list.append(refstr)
									else:
										usr_ref_list.append(':'.join(refstr.split(':')[:11]))
		result = [ ]
		if config.plugins.epgsearch.favorit_name.value:
			for e in epglist:
				for x in usr_ref_list:
					y = ':'.join(x.split(':')[:11]) 
					if y == e[0]:
						new_e = (x, e[1], e[2], e[3], e[4])
						result.append(new_e)
		else:
			for e in epglist:
				if e[0] in usr_ref_list:
					result.append(e)
		return result
Exemplo n.º 10
0
def findPicon(service):
	pngname = ""
	sname = service
	if sname.startswith("1:134"):
		sname = GetWithAlternative(service)
	pos = sname.rfind(':http')
	if pos != -1:
		sname = sname.split('http')[0]
	pos = sname.rfind(':')
	if pos != -1:
		sname = sname[:pos].rstrip(':').replace(':','_')
	pngname = nameCache.get(sname, "")
	if pngname == "":
		pngname = findFile(sname)
		if pngname != "":
			nameCache[sname] = pngname
	return pngname
Exemplo n.º 11
0
def findPicon(service):
    pngname = ""
    sname = service
    if sname.startswith("1:134"):
        sname = GetWithAlternative(service)
    pos = sname.rfind(':http')
    if pos != -1:
        sname = sname.split('http')[0]
    pos = sname.rfind(':')
    if pos != -1:
        sname = sname[:pos].rstrip(':').replace(':', '_')
    pngname = nameCache.get(sname, "")
    if pngname == "":
        pngname = findFile(sname)
        if pngname != "":
            nameCache[sname] = pngname
    return pngname
Exemplo n.º 12
0
    def changed(self, what):
        if self.instance:
            pngname = ''
            if what[0] != self.CHANGED_CLEAR:
                sname = self.source.text
                s_name = sname
                if sname.startswith('1:134'):
                    sname = GetWithAlternative(self.source.text)
                for protocol in ('http', 'rtmp', 'rtsp', 'mms', 'rtp'):
                    pos = sname.rfind(':' + protocol)
                    if pos != -1:
                        sname = sname.split(protocol)[0]
                        break

                pos = sname.rfind(':')
                if pos != -1:
                    sname = sname[:pos].rstrip(':').replace(':', '_')
                pngname = self.nameCache.get(sname, '')
                if pngname == '':
                    pngname = self.findPicon(sname)
                    if pngname == '':
                        serviceHandler = eServiceCenter.getInstance()
                        service = eServiceReference(s_name)
                        if service and service is not None:
                            info = serviceHandler.info(service)
                            if info and info is not None:
                                service_name = info.getName(service).replace(
                                    '\xc2\x86',
                                    '').replace('\xc2\x87',
                                                '').replace('/', '_')
                                pngname = self.findPicon(service_name)
                    if pngname == '' and sname.startswith('4097_'):
                        pngname = self.findPicon(
                            sname.replace('4097_', '1_', 1))
                    if pngname != '':
                        self.nameCache[sname] = pngname
            if pngname == '':
                self.instance.hide()
            else:
                self.instance.show()
            if pngname != '' and self.pngname != pngname:
                self.instance.setScale(2)
                self.instance.setPixmapFromFile(pngname)
                self.pngname = pngname
Exemplo n.º 13
0
    def keyGo(self, result=None):
        if not self.timerentry_service_ref.isRecordable():
            self.session.openWithCallback(
                self.selectChannelSelector, MessageBox,
                _("You didn't select a channel to record from."),
                MessageBox.TYPE_ERROR)
        elif self.timerentry_remote.value:
            service_ref = self.timerentry_service_ref
            if self.timer.eit is not None:
                event = eEPGCache.getInstance().lookupEventId(
                    service_ref.ref, self.timer.eit)
                if event:
                    n = event.getNumOfLinkageServices()
                    if n > 1:
                        tlist = []
                        ref = self.session.nav.getCurrentlyPlayingServiceReference(
                        )
                        parent = service_ref.ref
                        selection = 0
                        for x in range(n):
                            i = event.getLinkageService(parent, x)
                            if i.toString() == ref.toString():
                                selection = x
                            tlist.append((i.getName(), i))
                        self.session.openWithCallback(
                            self.RemoteSubserviceSelected,
                            ChoiceBox,
                            title=_("Please select a subservice to record..."),
                            list=tlist,
                            selection=selection)
                        return
                    elif n > 0:
                        parent = service_ref.ref
                        service_ref = ServiceReference(
                            event.getLinkageService(parent, 0))
            #resolve alternative
            alternative_ref = GetWithAlternative(str(service_ref))
            service_ref = ':'.join(alternative_ref.split(':')[:11])

            # XXX: this will - without any hassle - ignore the value of repeated
            begin, end = self.getBeginEnd()

            # when a timer end is set before the start, add 1 day
            if end < begin:
                end += 86400

            rt_name = urllib.quote(
                self.timerentry_name.value.decode('utf8').encode(
                    'utf8', 'ignore'))
            rt_description = urllib.quote(
                self.timerentry_description.value.decode('utf8').encode(
                    'utf8', 'ignore'))
            rt_disabled = 0  # XXX: do we really want to hardcode this? why do we offer this option then?
            rt_repeated = 0  # XXX: same here
            rt_dirname = "/hdd/movie"

            if self.timerentry_justplay.value == "zap":
                rt_justplay = 1
            else:
                rt_justplay = 0

            rt_eit = 0
            if self.timer.eit is not None:
                rt_eit = self.timer.eit

            rt_afterEvent = {
                "deepstandby": AFTEREVENT.DEEPSTANDBY,
                "standby": AFTEREVENT.STANDBY,
                "nothing": AFTEREVENT.NONE,
                "auto": AFTEREVENT.AUTO
            }.get(self.timerentry_afterevent.value, AFTEREVENT.AUTO)

            url = "%s/web/timeradd?sRef=%s&begin=%s&end=%s&name=%s&description=%s&disabled=%s&justplay=%s&afterevent=%s&repeated=%s&dirname=%s&eit=%s" % (
                config.usage.remote_fallback.value.rsplit(":", 1)[0],
                service_ref, begin, end, rt_name, rt_description, rt_disabled,
                rt_justplay, rt_afterEvent, rt_repeated, rt_dirname, rt_eit)
            print "[RemoteTimer] debug remote", url
            from Screens.TimerEdit import getUrl
            getUrl(url).addCallback(self.remoteTimerOK).addErrback(
                self.remoteTimerNOK)

        else:

            self.timer.name = self.timerentry_name.value
            self.timer.description = self.timerentry_description.value
            self.timer.justplay = self.timerentry_justplay.value == "zap"
            self.timer.always_zap = self.timerentry_justplay.value == "zap+record"
            self.timer.zap_wakeup = self.timerentry_zapwakeup.value
            self.timer.pipzap = self.timerentry_pipzap.value
            self.timer.rename_repeat = self.timerentry_renamerepeat.value
            self.timer.conflict_detection = self.timerentry_conflictdetection.value
            if self.timerentry_justplay.value == "zap":
                if not self.timerentry_showendtime.value:
                    self.timerentry_endtime.value = self.timerentry_starttime.value
                    self.timerentry_afterevent.value = "nothing"
            self.timer.resetRepeated()
            self.timer.afterEvent = {
                "nothing": AFTEREVENT.NONE,
                "deepstandby": AFTEREVENT.DEEPSTANDBY,
                "standby": AFTEREVENT.STANDBY,
                "auto": AFTEREVENT.AUTO
            }[self.timerentry_afterevent.value]
            self.timer.descramble = {
                "normal": True,
                "descrambled+ecm": True,
                "scrambled+ecm": False,
            }[self.timerentry_recordingtype.value]
            self.timer.record_ecm = {
                "normal": False,
                "descrambled+ecm": True,
                "scrambled+ecm": True,
            }[self.timerentry_recordingtype.value]
            self.timer.service_ref = self.timerentry_service_ref
            self.timer.tags = self.timerentry_tags

            if self.timer.dirname or self.timerentry_dirname.value != defaultMoviePath(
            ):
                self.timer.dirname = self.timerentry_dirname.value
                config.movielist.last_timer_videodir.value = self.timer.dirname
                config.movielist.last_timer_videodir.save()

            if self.timerentry_type.value == "once":
                self.timer.begin, self.timer.end = self.getBeginEnd()
            if self.timerentry_type.value == "repeated":
                if self.timerentry_repeated.value == "daily":
                    for x in (0, 1, 2, 3, 4, 5, 6):
                        self.timer.setRepeated(x)

                if self.timerentry_repeated.value == "weekly":
                    self.timer.setRepeated(self.timerentry_weekday.index)

                if self.timerentry_repeated.value == "weekdays":
                    for x in (0, 1, 2, 3, 4):
                        self.timer.setRepeated(x)

                if self.timerentry_repeated.value == "user":
                    for x in (0, 1, 2, 3, 4, 5, 6):
                        if self.timerentry_day[x].value:
                            self.timer.setRepeated(x)

                self.timer.repeatedbegindate = self.getTimestamp(
                    self.timerentry_repeatedbegindate.value,
                    self.timerentry_starttime.value)
                if self.timer.repeated:
                    self.timer.begin = self.getTimestamp(
                        self.timerentry_repeatedbegindate.value,
                        self.timerentry_starttime.value)
                    self.timer.end = self.getTimestamp(
                        self.timerentry_repeatedbegindate.value,
                        self.timerentry_endtime.value)
                else:
                    self.timer.begin = self.getTimestamp(
                        time(), self.timerentry_starttime.value)
                    self.timer.end = self.getTimestamp(
                        time(), self.timerentry_endtime.value)

                # when a timer end is set before the start, add 1 day
                if self.timer.end < self.timer.begin:
                    self.timer.end += 86400

            if self.timer.eit is not None:
                event = eEPGCache.getInstance().lookupEventId(
                    self.timer.service_ref.ref, self.timer.eit)
                if event:
                    n = event.getNumOfLinkageServices()
                    if n > 1:
                        tlist = []
                        ref = self.session.nav.getCurrentlyPlayingServiceOrGroup(
                        )
                        parent = self.timer.service_ref.ref
                        selection = 0
                        for x in range(n):
                            i = event.getLinkageService(parent, x)
                            if i.toString() == ref.toString():
                                selection = x
                            tlist.append((i.getName(), i))
                        self.session.openWithCallback(
                            self.subserviceSelected,
                            ChoiceBox,
                            title=_("Please select a subservice to record..."),
                            list=tlist,
                            selection=selection)
                        return
                    elif n > 0:
                        parent = self.timer.service_ref.ref
                        self.timer.service_ref = ServiceReference(
                            event.getLinkageService(parent, 0))
            self.saveTimer()
            self.close((True, self.timer))