def getPicon(sname):
    # remove URL part
    if ("://" in sname) or ("%3a//" in sname) or ("%3A//" in sname):
        sname = unquote(sname)
        sname = ":".join(sname.split(":")[:10]) + "::" + sname.split(":")[-1]

    sname = GetWithAlternative(sname)
    if sname is not None:
        pos = sname.rfind(':')
    else:
        return "/images/default_picon.png"

    if pos != -1:
        sname = sname[:pos].rstrip(':').replace(':', '_') + ".png"
    filename = getPiconPath() + sname
    if fileExists(filename):
        return "/picon/" + sname
    fields = sname.split('_', 3)
    if len(fields) > 2 and fields[2] != '2':
        #fallback to 1 for tv services with nonstandard servicetypes
        fields[2] = '1'
        sname = '_'.join(fields)
        filename = getPiconPath() + sname
        if fileExists(filename):
            return "/picon/" + sname
    return "/images/default_picon.png"
def getPicon(sname):
	# remove URL part
	if ("://" in sname) or ("%3a//" in sname) or ("%3A//" in sname):
		sname = unquote(sname)
		sname = ":".join(sname.split(":")[:10]) + "::" + sname.split(":")[-1]

	sname = GetWithAlternative(sname)
	if sname is not None:
		pos = sname.rfind(':')
	else:
		return "/images/default_picon.png"
		
	if pos != -1:
		sname = sname[:pos].rstrip(':').replace(':','_') + ".png"
	filename = getPiconPath() + sname
	if fileExists(filename):
		return "/picon/" + sname
	fields = sname.split('_', 3)
	if len(fields) > 2 and fields[2] != '2':
		#fallback to 1 for tv services with nonstandard servicetypes
		fields[2] = '1'
		sname='_'.join(fields)
		filename = getPiconPath() + sname
		if fileExists(filename):
			return "/picon/" + sname
	return "/images/default_picon.png"
def getPicon(sname):
	# remove URL part
	if ("://" in sname) or ("%3a//" in sname) or ("%3A//" in sname):
		sname = unquote(sname)
		sname = ":".join(sname.split(":")[:10]) + "::" + sname.split(":")[-1]

	sname = GetWithAlternative(sname)
	if sname is not None:
		pos = sname.rfind(':')
	else:
		return "/images/default_picon.png"
	cname = None
	if pos != -1:
		cname = ServiceReference(sname[:pos].rstrip(':')).getServiceName()
		sname = sname[:pos].rstrip(':').replace(':','_') + ".png"
	filename = getPiconPath() + sname
	if fileExists(filename):
		return "/picon/" + sname
	fields = sname.split('_', 3)
	if len(fields) > 2 and fields[2] != '2':
		#fallback to 1 for tv services with nonstandard servicetypes
		fields[2] = '1'
		sname='_'.join(fields)
		filename = getPiconPath() + sname
		if fileExists(filename):
			return "/picon/" + sname
	if cname is not None: # picon by channel name
		cname = unicodedata.normalize('NFKD', unicode(cname, 'utf_8')).encode('ASCII', 'ignore')
		cname = re.sub('[^a-z0-9]', '', cname.replace('&', 'and').replace('+', 'plus').replace('*', 'star').lower())
		if len(cname) > 0:
			filename = getPiconPath() + cname + ".png"
		if fileExists(filename):
			return "/picon/" + cname + ".png"		
	return "/images/default_picon.png"
Example #4
0
def getPicon(sname):
	
	pp = getPiconPath()
	if pp is not None:
		# remove URL part
		if ("://" in sname) or ("%3a//" in sname) or ("%3A//" in sname):
			sname = unquote(sname)
			sname = ":".join(sname.split(":")[:10]) + "::" + sname.split(":")[-1]
	
		sname = GetWithAlternative(sname)
		if sname is not None:
			pos = sname.rfind(':')
		else:
			return "/images/default_picon.png"
		cname = None
		if pos != -1:
			cname = ServiceReference(sname[:pos].rstrip(':')).getServiceName()
			sname = sname[:pos].rstrip(':').replace(':','_') + ".png"
		filename = pp + sname
		if fileExists(filename):
			return "/picon/" + sname
		fields = sname.split('_', 8)
		if len(fields) > 7 and not fields[6].endswith("0000"):
			#remove "sub-network" from namespace
			fields[6] = fields[6][:-4] + "0000"
			sname='_'.join(fields)
			filename = pp + sname
			if fileExists(filename):
				return "/picon/" + sname
		if len(fields) > 1 and fields[0] != '1':
			#fallback to 1 for other reftypes
			fields[0] = '1'
			sname='_'.join(fields)
			filename = pp + sname
			if fileExists(filename):
				return "/picon/" + sname
		if len(fields) > 3 and fields[2] != '1':
			#fallback to 1 for tv services with nonstandard servicetypes
			fields[2] = '1'
			sname='_'.join(fields)
			filename = pp + sname
			if fileExists(filename):
				return "/picon/" + sname
		if cname is not None: # picon by channel name
			cname1 = cname.replace('\xc2\x86','').replace('\xc2\x87', '').replace('/', '_').encode('utf-8', 'ignore')
			if fileExists(pp + cname1 + ".png"):
				return "/picon/" + cname1 + ".png"
			cname = unicodedata.normalize('NFKD', unicode(cname, 'utf_8', errors='ignore')).encode('ASCII', 'ignore')
			cname = re.sub('[^a-z0-9]', '', cname.replace('&', 'and').replace('+', 'plus').replace('*', 'star').lower())
			if len(cname) > 0:
				filename = pp + cname + ".png"
			if fileExists(filename):
				return "/picon/" + cname + ".png"
			if len(cname) > 2 and cname.endswith('hd') and fileExists(pp + cname[:-2] + ".png"):
				return "/picon/" + cname[:-2] + ".png"
	return "/images/default_picon.png"
def getPicon(sname):
	sname = GetWithAlternative(sname)
	if sname is not None:
		pos = sname.rfind(':')
	else:
		return "/images/default_picon.png"
		
	if pos != -1:
		sname = sname[:pos].rstrip(':').replace(':','_') + ".png"
	filename = getPiconPath() + sname
	if fileExists(filename):
		return "/picon/" + sname
	return "/images/default_picon.png"
def getBouquetNowNextEpg(ref, servicetype, mangle_html=True):
    ret = []
    services = eServiceCenter.getInstance().list(eServiceReference(ref))
    if not services:
        return {"events": ret, "result": False}

    search = [FLAGS_WEB]
    if servicetype == -1:
        for service in services.getContent('S'):
            search.append((service, 0, -1))
            search.append((service, 1, -1))
    else:
        for service in services.getContent('S'):
            search.append((service, servicetype, -1))

    epgcache = eEPGCache.getInstance()
    events = epgcache.lookupEvent(search)

    if not events:
        return {"events": [], "result": True}

    for raw_data in events:
        e_data = ServicesEventDict(raw_data,
                                   now_next_mode=False,
                                   mangle_html=mangle_html)
        if e_data['sref'] is not None:
            achannels = GetWithAlternative(e_data['sref'], False)
            if achannels:
                e_data['asrefs'] = achannels
        ret.append(e_data)

    return {"events": ret, "result": True}
Example #7
0
def getBouquetNowNextEpg(ref, servicetype, encode=False):
    ref = unquote(ref)
    ret = []
    services = eServiceCenter.getInstance().list(eServiceReference(ref))
    if not services:
        return {"events": ret, "result": False}

    search = ['IBDCTSERNWX']
    if servicetype == -1:
        for service in services.getContent('S'):
            search.append((service, 0, -1))
            search.append((service, 1, -1))
    else:
        for service in services.getContent('S'):
            search.append((service, servicetype, -1))

    epgcache = eEPGCache.getInstance()
    events = epgcache.lookupEvent(search)
    if events is not None:
        for event in events:
            ev = {}
            ev['id'] = event[0]
            ev['begin_timestamp'] = event[1]
            ev['duration_sec'] = event[2]
            ev['title'] = filterName(event[4], encode)
            ev['shortdesc'] = convertDesc(event[5], encode)
            ev['longdesc'] = convertDesc(event[6], encode)
            if event[7] is not None:
                achannels = GetWithAlternative(event[7], False)
                if achannels:
                    ev['asrefs'] = achannels
            ev['sref'] = event[7]
            ev['sname'] = filterName(event[8], encode)
            ev['now_timestamp'] = event[3]
            ev['genre'], ev['genreid'] = convertGenre(event[9])
            ret.append(ev)

    return {"events": ret, "result": True}
Example #8
0
def getPicon(sname):

    pp = PICON_PATH
    if pp is not None:
        # remove URL part
        if ("://" in sname) or ("%3a//" in sname) or ("%3A//" in sname):
            cname = unquote(sname.split(":")[-1])
            sname = unquote(sname)
            # sname = ":".join(sname.split(":")[:10]) -> old way
            sname = ":".join(sname.split("://")[:1])
            sname = GetWithAlternative(sname)
            cname = unicodedata.normalize(
                'NFKD', unicode(cname, 'utf_8',
                                errors='ignore')).encode('ASCII', 'ignore')
            cname = re.sub(
                '[^a-z0-9]', '',
                cname.replace('&', 'and').replace('+', 'plus').replace(
                    '*', 'star').replace(':', '').lower())
            # picon by channel name for URL
            if len(cname) > 0 and fileExists(pp + cname + ".png"):
                return "/picon/" + cname + ".png"
            if len(cname) > 2 and cname.endswith('hd') and fileExists(
                    pp + cname[:-2] + ".png"):
                return "/picon/" + cname[:-2] + ".png"
            if len(cname) > 5:
                series = re.sub(r's[0-9]*e[0-9]*$', '', cname)
                if fileExists(pp + series + ".png"):
                    return "/picon/" + series + ".png"

        sname = GetWithAlternative(sname)
        if sname is not None:
            pos = sname.rfind(':')
        else:
            return "/images/default_picon.png"
        cname = None
        if pos != -1:
            cname = ServiceReference(sname[:pos].rstrip(':')).getServiceName()
            sname = sname[:pos].rstrip(':').replace(':', '_') + ".png"
        filename = pp + sname
        if fileExists(filename):
            return "/picon/" + sname
        fields = sname.split('_', 8)
        if len(fields) > 7 and not fields[6].endswith("0000"):
            # remove "sub-network" from namespace
            fields[6] = fields[6][:-4] + "0000"
            sname = '_'.join(fields)
            filename = pp + sname
            if fileExists(filename):
                return "/picon/" + sname
        if len(fields) > 1 and fields[0] != '1':
            # fallback to 1 for other reftypes
            fields[0] = '1'
            sname = '_'.join(fields)
            filename = pp + sname
            if fileExists(filename):
                return "/picon/" + sname
        if len(fields) > 3 and fields[2] != '1':
            # fallback to 1 for tv services with nonstandard servicetypes
            fields[2] = '1'
            sname = '_'.join(fields)
            filename = pp + sname
            if fileExists(filename):
                return "/picon/" + sname
        if cname is not None:  # picon by channel name
            cname1 = cname.replace('\xc2\x86',
                                   '').replace('\xc2\x87', '').replace(
                                       '/', '_').encode('utf-8', 'ignore')
            if fileExists(pp + cname1 + ".png"):
                return "/picon/" + cname1 + ".png"
            cname = unicodedata.normalize(
                'NFKD', unicode(cname, 'utf_8',
                                errors='ignore')).encode('ASCII', 'ignore')
            cname = re.sub(
                '[^a-z0-9]', '',
                cname.replace('&',
                              'and').replace('+',
                                             'plus').replace('*',
                                                             'star').lower())
            if len(cname) > 0:
                filename = pp + cname + ".png"
            if fileExists(filename):
                return "/picon/" + cname + ".png"
            if len(cname) > 2 and cname.endswith('hd') and fileExists(
                    pp + cname[:-2] + ".png"):
                return "/picon/" + cname[:-2] + ".png"
    return "/images/default_picon.png"
def getPicon(sname):
    if not PICON_PATH:
        return FALLBACK_PICON_LOCATION

    # remove URL part
    if ("://" in sname) or ("%3a//" in sname) or ("%3A//" in sname):
        sname = unquote(sname)
        sname = ":".join(sname.split(":")[:10]) + "::" + sname.split(":")[-1]

    sname = GetWithAlternative(sname)
    if sname is not None:
        pos = sname.rfind(':')
    else:
        return FALLBACK_PICON_LOCATION

    cname = None
    if pos != -1:
        cname = ServiceReference(sname[:pos].rstrip(':')).getServiceName()
        sname = sname[:pos].rstrip(':').replace(':', '_') + PICON_EXT
    filename = PICON_PATH + sname

    if os.path.isfile(filename):
        return PICON_ENDPOINT_PATH + sname

    fields = sname.split('_', 8)
    if len(fields) > 7 and not fields[6].endswith("0000"):
        # remove "sub-network" from namespace
        fields[6] = fields[6][:-4] + "0000"
        sname = '_'.join(fields)
        filename = PICON_PATH + sname
        if os.path.isfile(filename):
            return PICON_ENDPOINT_PATH + sname

    if len(fields) > 1 and fields[0] != '1':
        # fallback to 1 for other reftypes
        fields[0] = '1'
        sname = '_'.join(fields)
        filename = PICON_PATH + sname
        if os.path.isfile(filename):
            return PICON_ENDPOINT_PATH + sname

    if len(fields) > 3 and fields[2] != '1':
        # fallback to 1 for tv services with nonstandard servicetypes
        fields[2] = '1'
        sname = '_'.join(fields)
        filename = PICON_PATH + sname
        if os.path.isfile(filename):
            return PICON_ENDPOINT_PATH + sname

    if cname is not None:  # picon by channel name
        cname1 = mangle_epg_text(cname).replace('/',
                                                '_').encode('utf-8', 'ignore')

        if os.path.isfile(PICON_PATH + cname1 + PICON_EXT):
            return PICON_ENDPOINT_PATH + cname1 + PICON_EXT

        cname = unicodedata.normalize('NFKD',
                                      unicode(cname, 'utf_8',
                                              errors='ignore')).encode(
                                                  'ASCII', 'ignore')
        cname = re.sub(
            '[^a-z0-9]', '',
            cname.replace('&', 'and').replace('+',
                                              'plus').replace('*',
                                                              'star').lower())

        if len(cname) > 0:
            filename = PICON_PATH + cname + PICON_EXT

        if os.path.isfile(filename):
            return PICON_ENDPOINT_PATH + cname + PICON_EXT

        if len(cname) > 2 and cname.endswith('hd') and os.path.isfile(
                PICON_PATH + cname[:-2] + PICON_EXT):
            return PICON_ENDPOINT_PATH + cname[:-2] + PICON_EXT
Example #10
0
def getTimers(session):
    rt = session.nav.RecordTimer
    timers = []
    for timer in rt.timer_list + rt.processed_timers:
        descriptionextended = "N/A"
        filename = None
        nextactivation = None
        if timer.eit and timer.service_ref:
            event = eEPGCache.getInstance().lookupEvent(
                ['EX', (str(timer.service_ref), 2, timer.eit)])
            if event and event[0][0]:
                descriptionextended = event[0][0]

        try:
            filename = timer.Filename
        except Exception:
            pass

        try:
            nextactivation = timer.next_activation
        except Exception:
            pass

        disabled = 0
        if timer.disabled:
            disabled = 1

        justplay = 0
        if timer.justplay:
            justplay = 1

        if timer.dirname:
            dirname = timer.dirname
        else:
            dirname = "None"

        dontSave = 0
        if timer.dontSave:
            dontSave = 1

        toggledisabled = 1
        if timer.disabled:
            toggledisabled = 0

        toggledisabledimg = "off"
        if timer.disabled:
            toggledisabledimg = "on"

        asrefs = ""
        achannels = GetWithAlternative(str(timer.service_ref), False)
        if achannels:
            asrefs = achannels

        vpsplugin_enabled = False
        vpsplugin_overwrite = False
        vpsplugin_time = -1
        if hasattr(timer, "vpsplugin_enabled"):
            vpsplugin_enabled = True if timer.vpsplugin_enabled else False
        if hasattr(timer, "vpsplugin_overwrite"):
            vpsplugin_overwrite = True if timer.vpsplugin_overwrite else False
        if hasattr(timer, "vpsplugin_time"):
            vpsplugin_time = timer.vpsplugin_time
            if not vpsplugin_time:
                vpsplugin_time = -1

        always_zap = -1
        if hasattr(timer, "always_zap"):
            if timer.always_zap:
                always_zap = 1
            else:
                always_zap = 0

        timers.append({
            "serviceref":
            str(timer.service_ref),
            "servicename":
            mangle_epg_text(timer.service_ref.getServiceName()),
            "eit":
            timer.eit,
            "name":
            timer.name,
            "description":
            timer.description,
            "descriptionextended":
            unicode(descriptionextended, 'utf_8',
                    errors='ignore').encode('utf_8', 'ignore'),
            "disabled":
            disabled,
            "begin":
            timer.begin,
            "end":
            timer.end,
            "duration":
            timer.end - timer.begin,
            "startprepare":
            timer.start_prepare,
            "justplay":
            justplay,
            "afterevent":
            timer.afterEvent,
            "dirname":
            dirname,
            "tags":
            " ".join(timer.tags),
            "logentries":
            timer.log_entries,
            "backoff":
            timer.backoff,
            "firsttryprepare":
            timer.first_try_prepare,
            "state":
            timer.state,
            "repeated":
            timer.repeated,
            "dontsave":
            dontSave,
            "cancelled":
            timer.cancelled,
            "toggledisabled":
            toggledisabled,
            "toggledisabledimg":
            toggledisabledimg,
            "filename":
            filename,
            "nextactivation":
            nextactivation,
            "realbegin":
            strftime("%d.%m.%Y %H:%M", (localtime(float(timer.begin)))),
            "realend":
            strftime("%d.%m.%Y %H:%M", (localtime(float(timer.end)))),
            "asrefs":
            asrefs,
            "vpsplugin_enabled":
            vpsplugin_enabled,
            "vpsplugin_overwrite":
            vpsplugin_overwrite,
            "vpsplugin_time":
            vpsplugin_time,
            "always_zap":
            always_zap
        })

    return {"result": True, "timers": timers}
            dirname = "None"

        dontSave = 0
        if timer.dontSave:
            dontSave = 1

        toggledisabled = 1
        if timer.disabled:
            toggledisabled = 0

        toggledisabledimg = "off"
        if timer.disabled:
            toggledisabledimg = "on"

        asrefs = ""
        achannels = GetWithAlternative(str(timer.service_ref), False)
        if achannels:
            asrefs = achannels

        vpsplugin_enabled = False
        vpsplugin_overwrite = False
        vpsplugin_time = -1
        if hasattr(timer, "vpsplugin_enabled"):
            vpsplugin_enabled = True
        if hasattr(timer, "vpsplugin_overwrite"):
            vpsplugin_overwrite = True
        if hasattr(timer, "vpsplugin_time"):
            vpsplugin_time = timer.vpsplugin_time
            if not vpsplugin_time:
                vpsplugin_time = -1
Example #12
0
def getTimers(session):
    rt = session.nav.RecordTimer
    timers = []
    for timer in rt.timer_list + rt.processed_timers:

        if hasattr(timer, "wakeup_t"):
            energytimer = timer.wakeup_t or timer.standby_t or timer.shutdown_t or timer.fnc_t != "off" or 0
            if energytimer:
                continue

        descriptionextended = "N/A"
        filename = None
        nextactivation = None
        if timer.eit and timer.service_ref:
            event = eEPGCache.getInstance().lookupEvent(
                ['EX', (str(timer.service_ref), 2, timer.eit)])
            if event and event[0][0]:
                descriptionextended = event[0][0]

        try:
            filename = timer.Filename
        except Exception:
            pass

        try:
            nextactivation = timer.next_activation
        except Exception:
            pass

        disabled = 0
        if timer.disabled:
            disabled = 1

        justplay = 0
        if timer.justplay:
            justplay = 1

        if hasattr(timer, "allow_duplicate"):
            allow_duplicate = timer.allow_duplicate and 1 or 0
        else:
            allow_duplicate = 1

        autoadjust = -1
        if hasattr(timer, "autoadjust"):
            autoadjust = timer.autoadjust and 1 or 0
        elif hasattr(config.recording, "adjust_time_to_event"):
            autoadjust = config.recording.adjust_time_to_event.value and 1 or 0

        if timer.dirname:
            dirname = timer.dirname
        else:
            dirname = "None"

        dontSave = 0
        if timer.dontSave:
            dontSave = 1

        toggledisabled = 1
        if timer.disabled:
            toggledisabled = 0

        toggledisabledimg = "off"
        if timer.disabled:
            toggledisabledimg = "on"

        asrefs = ""
        achannels = GetWithAlternative(str(timer.service_ref), False)
        if achannels:
            asrefs = achannels

        vpsplugin_enabled = False
        vpsplugin_overwrite = False
        vpsplugin_time = -1
        if hasattr(timer, "vpsplugin_enabled"):
            vpsplugin_enabled = True if timer.vpsplugin_enabled else False
        if hasattr(timer, "vpsplugin_overwrite"):
            vpsplugin_overwrite = True if timer.vpsplugin_overwrite else False
        if hasattr(timer, "vpsplugin_time"):
            vpsplugin_time = timer.vpsplugin_time
            if not vpsplugin_time:
                vpsplugin_time = -1

        always_zap = -1
        if hasattr(timer, "always_zap"):
            if timer.always_zap:
                always_zap = 1
            else:
                always_zap = 0

        pipzap = -1
        if hasattr(timer, "pipzap"):
            if timer.pipzap:
                pipzap = 1
            else:
                pipzap = 0

        isAutoTimer = -1
        if hasattr(timer, "isAutoTimer"):
            if timer.isAutoTimer:
                isAutoTimer = 1
            else:
                isAutoTimer = 0

        timers.append({
            "serviceref":
            str(timer.service_ref),
            "servicename":
            timer.service_ref.getServiceName().replace('\xc2\x86', '').replace(
                '\xc2\x87', ''),
            "eit":
            timer.eit,
            "name":
            timer.name,
            "description":
            timer.description,
            "descriptionextended":
            unicode(descriptionextended, 'utf_8',
                    errors='ignore').encode('utf_8', 'ignore'),
            "disabled":
            disabled,
            "begin":
            timer.begin,
            "end":
            timer.end,
            "duration":
            timer.end - timer.begin,
            "startprepare":
            timer.start_prepare,
            "justplay":
            justplay,
            "afterevent":
            timer.afterEvent,
            "dirname":
            dirname,
            "tags":
            " ".join(timer.tags),
            "logentries":
            timer.log_entries,
            "backoff":
            timer.backoff,
            "firsttryprepare":
            timer.first_try_prepare,
            "state":
            timer.state,
            "repeated":
            timer.repeated,
            "dontsave":
            dontSave,
            "cancelled":
            timer.cancelled,
            "toggledisabled":
            toggledisabled,
            "toggledisabledimg":
            toggledisabledimg,
            "filename":
            filename,
            "nextactivation":
            nextactivation,
            "realbegin":
            strftime("%d.%m.%Y %H:%M", (localtime(float(timer.begin)))),
            "realend":
            strftime("%d.%m.%Y %H:%M", (localtime(float(timer.end)))),
            "asrefs":
            asrefs,
            "vpsplugin_enabled":
            vpsplugin_enabled,
            "vpsplugin_overwrite":
            vpsplugin_overwrite,
            "vpsplugin_time":
            vpsplugin_time,
            "always_zap":
            always_zap,
            "pipzap":
            pipzap,
            "isAutoTimer":
            isAutoTimer,
            "allow_duplicate":
            allow_duplicate,
            "autoadjust":
            autoadjust
        })

    return {"result": True, "timers": timers}