예제 #1
0
	def getText(self):
		service = self.source.service
		info = service and service.info()
		if not info:
			return ""

		text = ""
		width = info.getInfo(iServiceInformation.sVideoWidth)
		height = info.getInfo(iServiceInformation.sVideoHeight)

		if self.type == self.VIDEOMODE:
			if width > 0 and height > 0:
				f = open("/proc/stb/video/videomode")
				text = f.read()[:-1].replace('\n','')
				f.close()
		elif self.type == self.VIDEOSIZE:
			if width > 0 and height > 0:
				sProgressive = info.getInfo(iServiceInformation.sProgressive)
				text = "%dx%d" % (width,height)
				#text += ("i", "p", " ")[sProgressive]
				if sProgressive:
					text += "p" + str((info.getInfo(iServiceInformation.sFrameRate) + 499) / 1000)
				else:
					text += "i" + str((info.getInfo(iServiceInformation.sFrameRate) + 499) / 500)
		elif self.type == self.VIDEOSIZEWIDTH:
			if width > 0:
				text = "%d" % (width)
		elif self.type == self.VIDEOSIZEHEIGHT:
			if height > 0:
				sProgressive = info.getInfo(iServiceInformation.sProgressive)
				text = "%d" % (height)
				#text += ("i", "p", " ")[sProgressive]
				if sProgressive:
					text += "p" + str((info.getInfo(iServiceInformation.sFrameRate) + 499) / 1000)
				else:
					text += "i" + str((info.getInfo(iServiceInformation.sFrameRate) + 499) / 500)
		elif self.type == self.VIDEOSIZESHORT:
			if width > 0 and height > 0:
				text = "%dx%d" % (width,height)
		elif self.type == self.VIDEOCODEC:
			from Components.Converter.PliExtraInfo import codec_data
			text = codec_data.get(self.info.getInfo(iServiceInformation.sVideoType), "N/A")
		elif self.type == self.VIDEOFORMAT:
			if width > 0 and height > 0:
				text = info.getInfo(iServiceInformation.sAspect)
				if text == -2:
					text = info.getInfoString(iServiceInformation.sAspect)
				elif text == -1:
					text = _("N/A")
				if text in ( 1, 2, 5, 6, 9, 0xA, 0xD, 0xE ):
					text = "4:3"
				else:
					text = "16:9"
		else:
			print "type must be {VideoMode, VideoSize, VideoSizeWidth, VideoSizeHeight, VideoSizeShort, VideoCodec, VideoFormat} for MetrixHDVideoInfo converter"
			text = "type-error"

		return text
예제 #2
0
	def ShowServiceInformation(self):
		menu_path = self.menu_path
		if self.type == TYPE_SERVICE_INFO:
			screentitle = _("Service & PIDs")
			if config.usage.show_menupath.value == 'large':
				menu_path += screentitle
				title = menu_path
				self["menu_path_compressed"] = StaticText("")
			elif config.usage.show_menupath.value == 'small':
				title = screentitle
				self["menu_path_compressed"] = StaticText(menu_path + " >" if not menu_path.endswith(' / ') else menu_path[:-3] + " >" or "")
			else:
				title = screentitle
				self["menu_path_compressed"] = StaticText("")
			Screen.setTitle(self, title)

			if self.feinfo or self.transponder_info:
				self["key_blue"].text = self["blue"].text = _("Tuner settings values")
			if self.session.nav.getCurrentlyPlayingServiceOrGroup():
				name = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference()).getServiceName()
				refstr = self.session.nav.getCurrentlyPlayingServiceReference().toString()
				reftype = self.session.nav.getCurrentlyPlayingServiceReference().type
			else:
				name = _("N/A")
				refstr = _("N/A")
				reftype = 0
			aspect = "-"
			videocodec = "-"
			resolution = "-"
			if self.info:
				from Components.Converter.PliExtraInfo import codec_data
				videocodec = codec_data.get(self.info.getInfo(iServiceInformation.sVideoType), "N/A")
				width = self.info.getInfo(iServiceInformation.sVideoWidth)
				height = self.info.getInfo(iServiceInformation.sVideoHeight)
				if width > 0 and height > 0:
					resolution = videocodec + " - "
					resolution += "%dx%d - " % (width,height)
					resolution += str((self.info.getInfo(iServiceInformation.sFrameRate) + 500) / 1000)
					resolution += ("i", "p", "")[self.info.getInfo(iServiceInformation.sProgressive)]
					aspect = self.getServiceInfoValue(iServiceInformation.sAspect)
					aspect = aspect in ( 1, 2, 5, 6, 9, 0xA, 0xD, 0xE ) and "4:3" or "16:9"
					resolution += " - "+aspect+""
				gamma = ("SDR", "HDR", "HDR10", "HLG", "")[self.info.getInfo(iServiceInformation.sGamma)]
				if gamma:
					resolution += " - " + gamma
			if "%3a//" in refstr and reftype not in (1,257,4098,4114):
				fillList = [(_("Service name"), name, TYPE_TEXT),
					(_("Videocodec, size & format"), resolution, TYPE_TEXT),
					(_("Service reference"), ":".join(refstr.split(":")[:9]), TYPE_TEXT),
					(_("URL"), refstr.split(":")[10].replace("%3a", ":"), TYPE_TEXT)]
			else:
				if ":/" in refstr:
					fillList = [(_("Service name"), name, TYPE_TEXT),
						(_("Videocodec, size & format"), resolution, TYPE_TEXT),
						(_("Service reference"), ":".join(refstr.split(":")[:9]), TYPE_TEXT),
						(_("Filename"), refstr.split(":")[10], TYPE_TEXT)]
				else:
					fillList = [(_("Service name"), name, TYPE_TEXT),
						(_("Provider"), self.getServiceInfoValue(iServiceInformation.sProvider), TYPE_TEXT),
						(_("Videocodec, size & format"), resolution, TYPE_TEXT)]
					if "%3a//" in refstr:
						fillList = fillList + [(_("Service reference"), ":".join(refstr.split(":")[:9]), TYPE_TEXT),
							(_("URL"), refstr.split(":")[10].replace("%3a", ":"), TYPE_TEXT)]
					else:
						fillList = fillList + [(_("Service reference"), refstr, TYPE_TEXT)]
				fillList = fillList + [(_("Namespace"), self.getServiceInfoValue(iServiceInformation.sNamespace), TYPE_VALUE_HEX, 8),
					(_("Service ID"), self.getServiceInfoValue(iServiceInformation.sSID), TYPE_VALUE_HEX_DEC, 4),
					(_("Video PID"), self.getServiceInfoValue(iServiceInformation.sVideoPID), TYPE_VALUE_HEX_DEC, 4),
					(_("Audio PID"), self.getServiceInfoValue(iServiceInformation.sAudioPID), TYPE_VALUE_HEX_DEC, 4),
					(_("PCR PID"), self.getServiceInfoValue(iServiceInformation.sPCRPID), TYPE_VALUE_HEX_DEC, 4),
					(_("PMT PID"), self.getServiceInfoValue(iServiceInformation.sPMTPID), TYPE_VALUE_HEX_DEC, 4),
					(_("TXT PID"), self.getServiceInfoValue(iServiceInformation.sTXTPID), TYPE_VALUE_HEX_DEC, 4),
					(_("TSID"), self.getServiceInfoValue(iServiceInformation.sTSID), TYPE_VALUE_HEX_DEC, 4),
					(_("ONID"), self.getServiceInfoValue(iServiceInformation.sONID), TYPE_VALUE_HEX_DEC, 4)]
			self.fillList(fillList)
		elif self.transponder_info:
			self.fillList(self.getFEData(self.transponder_info))
예제 #3
0
	def information(self):
		if self.type == TYPE_SERVICE_INFO:
			if self.session.nav.getCurrentlyPlayingServiceOrGroup():
				name = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference()).getServiceName()
				refstr = self.session.nav.getCurrentlyPlayingServiceReference().toString()
			else:
				name = _("N/A")
				refstr = _("N/A")
			aspect = "-"
			videocodec = "-"
			videomode = "-"
			resolution = "-"
			if self.info:
				from Components.Converter.PliExtraInfo import codec_data
				videocodec = codec_data.get(self.info.getInfo(iServiceInformation.sVideoType), "N/A")
				width = self.info.getInfo(iServiceInformation.sVideoWidth)
				height = self.info.getInfo(iServiceInformation.sVideoHeight)
				if width > 0 and height > 0:
					resolution = "%dx%d" % (width, height)
					resolution += ("i", "p", "-")[self.info.getInfo(iServiceInformation.sProgressive)]
					resolution += str((self.info.getInfo(iServiceInformation.sFrameRate) + 500) / 1000)
					aspect = self.getServiceInfoValue(iServiceInformation.sAspect)
					aspect = aspect in (1, 2, 5, 6, 9, 0xA, 0xD, 0xE) and "4:3" or "16:9"
					resolution += " - [" + aspect + "]"
					gammas = ("SDR", "HDR", "HDR10", "HLG", "")
					if self.info.getInfo(iServiceInformation.sGamma) < len(gammas):
						gamma = gammas[self.info.getInfo(iServiceInformation.sGamma)]
						if gamma:
							resolution += " - " + gamma
				f = open("/proc/stb/video/videomode")
				videomode = f.read()[:-1].replace('\n', '')
				f.close()

			Labels = [(_("Name"), name, TYPE_TEXT),
					(_("Provider"), self.getServiceInfoValue(iServiceInformation.sProvider), TYPE_TEXT),
					(_("Videoformat"), aspect, TYPE_TEXT),
					(_("Videomode"), videomode, TYPE_TEXT),
					(_("Videosize"), resolution, TYPE_TEXT),
					(_("Videocodec"), videocodec, TYPE_TEXT),
					(_("Namespace"), self.getServiceInfoValue(iServiceInformation.sNamespace), TYPE_VALUE_HEX, 8),
					(_("Service reference"), ":".join(refstr.split(":")[:10]), TYPE_TEXT)]

			if "%3a//" in refstr:
				Labels.append((_("URL"), refstr.split(":")[10].replace("%3a", ":"), TYPE_TEXT))

			self.fillList(Labels)
		else:
			if self.transponder_info:
				tp_info = ConvertToHumanReadable(self.transponder_info)
				conv = {"tuner_type" 				: _("Transponder type"),
						 "system"					: _("System"),
						 "modulation"				: _("Modulation"),
						 "orbital_position"			: _("Orbital position"),
						 "frequency"				: _("Frequency"),
						 "symbol_rate"				: _("Symbol rate"),
						 "bandwidth"				: _("Bandwidth"),
						 "polarization"				: _("Polarization"),
						 "inversion"				: _("Inversion"),
						 "pilot"					: _("Pilot"),
						 "rolloff"					: _("Roll-off"),
						 "is_id"					: _("Input Stream ID"),
						 "pls_mode"					: _("PLS Mode"),
						 "pls_code"					: _("PLS Code"),
						 "t2mi_plp_id"				: _("T2MI PLP ID"),
						 "t2mi_pip"					: _("T2MI PID"),
						 "fec_inner"				: _("FEC"),
						 "code_rate_lp"				: _("Coderate LP"),
						 "code_rate_hp"				: _("Coderate HP"),
						 "constellation"			: _("Constellation"),
						 "transmission_mode"		: _("Transmission mode"),
						 "guard_interval"			: _("Guard interval"),
						 "hierarchy_information"	: _("Hierarchy information")}
				Labels = [(conv[i], tp_info[i], i == "orbital_position" and TYPE_VALUE_ORBIT_DEC or TYPE_VALUE_DEC) for i in tp_info.keys() if i in conv]
				self.fillList(Labels)
예제 #4
0
    def ShowServiceInformation(self):
        if self.type == TYPE_SERVICE_INFO:
            self["Title"].text = _("Service info - service & PIDs")
            if self.feinfo or self.transponder_info:
                self["key_blue"].text = self["blue"].text = _(
                    "Tuner setting values")
            if self.session.nav.getCurrentlyPlayingServiceOrGroup():
                name = ServiceReference(
                    self.session.nav.getCurrentlyPlayingServiceReference(
                    )).getServiceName()
                refstr = self.session.nav.getCurrentlyPlayingServiceReference(
                ).toString()
                reftype = self.session.nav.getCurrentlyPlayingServiceReference(
                ).type
            else:
                name = _("N/A")
                refstr = _("N/A")
                reftype = 0
            aspect = "-"
            videocodec = "-"
            resolution = "-"
            if self.info:
                from Components.Converter.PliExtraInfo import codec_data
                videocodec = codec_data.get(
                    self.info.getInfo(iServiceInformation.sVideoType), "N/A")
                width = self.info.getInfo(iServiceInformation.sVideoWidth)
                height = self.info.getInfo(iServiceInformation.sVideoHeight)
                if width > 0 and height > 0:
                    resolution = videocodec + " - "
                    resolution += "%dx%d - " % (width, height)
                    resolution += str(
                        (self.info.getInfo(iServiceInformation.sFrameRate) +
                         500) / 1000)
                    resolution += (" i", " p", "")[self.info.getInfo(
                        iServiceInformation.sProgressive)]
                    aspect = self.getServiceInfoValue(
                        iServiceInformation.sAspect)
                    aspect = aspect in (1, 2, 5, 6, 9, 0xA, 0xD,
                                        0xE) and "4:3" or "16:9"
                    resolution += " - [" + aspect + "]"
                gamma = ("SDR", "HDR", "HDR10", "HLG",
                         "")[self.info.getInfo(iServiceInformation.sGamma)]
                if gamma:
                    resolution += " - " + gamma
            self.service = self.session.nav.getCurrentService()
            if "%3a//" in refstr and reftype not in (1, 257, 4098, 4114):
                #IPTV 4097 5001, no PIDs shown
                fillList = [
                    (_("Service name"), name, TYPE_TEXT),
                    (_("Videocodec, size & format"), resolution, TYPE_TEXT),
                    (_("Service reference"), ":".join(refstr.split(":")[:9]),
                     TYPE_TEXT),
                    (_("URL"), refstr.split(":")[10].replace("%3a",
                                                             ":"), TYPE_TEXT)
                ]
                subList = self.getSubtitleList()
            else:
                if ":/" in refstr:
                    # mp4 videos, dvb-s-t recording
                    fillList = [(_("Service name"), name, TYPE_TEXT),
                                (_("Videocodec, size & format"), resolution,
                                 TYPE_TEXT),
                                (_("Service reference"),
                                 ":".join(refstr.split(":")[:9]), TYPE_TEXT),
                                (_("Filename"), refstr.split(":")[10],
                                 TYPE_TEXT)]
                else:
                    # fallback, movistartv, live dvb-s-t
                    fillList = [
                        (_("Service name"), name, TYPE_TEXT),
                        (_("Provider"),
                         self.getServiceInfoValue(
                             iServiceInformation.sProvider), TYPE_TEXT),
                        (_("Videocodec, size & format"), resolution, TYPE_TEXT)
                    ]
                    if "%3a//" in refstr:
                        #fallback, movistartv
                        fillList = fillList + [
                            (_("Service reference"), ":".join(
                                refstr.split(":")[:9]), TYPE_TEXT),
                            (_("URL"), refstr.split(":")[10].replace(
                                "%3a", ":"), TYPE_TEXT)
                        ]
                    else:
                        #live dvb-s-t
                        fillList = fillList + [
                            (_("Service reference"), refstr, TYPE_TEXT)
                        ]
                self.audio = self.service and self.service.audioTracks()
                self.numberofTracks = self.audio and self.audio.getNumberOfTracks(
                )
                self.subList = self.getSubtitleList()
                self.togglePIDButton()
                trackList = self.getTrackList()
                fillList = fillList + (
                    [(_("Namespace & Orbital pos."),
                      self.namespace(
                          self.getServiceInfoValue(
                              iServiceInformation.sNamespace)), TYPE_TEXT),
                     (_("TSID"),
                      self.getServiceInfoValue(
                          iServiceInformation.sTSID), TYPE_VALUE_HEX_DEC, 4),
                     (_("ONID"),
                      self.getServiceInfoValue(
                          iServiceInformation.sONID), TYPE_VALUE_HEX_DEC, 4),
                     (_("Service ID"),
                      self.getServiceInfoValue(
                          iServiceInformation.sSID), TYPE_VALUE_HEX_DEC, 4),
                     (_("Video PID"),
                      self.getServiceInfoValue(iServiceInformation.sVideoPID),
                      TYPE_VALUE_HEX_DEC, 4)] + trackList +
                    [(_("PCR PID"),
                      self.getServiceInfoValue(
                          iServiceInformation.sPCRPID), TYPE_VALUE_HEX_DEC, 4),
                     (_("PMT PID"),
                      self.getServiceInfoValue(
                          iServiceInformation.sPMTPID), TYPE_VALUE_HEX_DEC, 4),
                     (_("TXT PID"),
                      self.getServiceInfoValue(iServiceInformation.sTXTPID),
                      TYPE_VALUE_HEX_DEC, 4)])
                if self.showAll == True:
                    fillList = fillList + self.subList

            self.fillList(fillList)
        elif self.transponder_info:
            self.fillList(self.getFEData(self.transponder_info))
예제 #5
0
    def ShowServiceInformation(self):
        if self.type == TYPE_SERVICE_INFO:
            self.setTitle(_("Service & PIDs"))

            if self.feinfo or self.transponder_info:
                self["key_blue"].text = self["blue"].text = _(
                    "Tuner settings values")
            if self.session.nav.getCurrentlyPlayingServiceOrGroup():
                name = ServiceReference(
                    self.session.nav.getCurrentlyPlayingServiceReference(
                    )).getServiceName()
                refstr = self.session.nav.getCurrentlyPlayingServiceReference(
                ).toString()
                reftype = self.session.nav.getCurrentlyPlayingServiceReference(
                ).type
            else:
                name = _("N/A")
                refstr = _("N/A")
                reftype = 0
            aspect = "-"
            videocodec = "-"
            resolution = "-"
            if self.info:
                from Components.Converter.PliExtraInfo import codec_data
                videocodec = codec_data.get(
                    self.info.getInfo(iServiceInformation.sVideoType), "N/A")
                width = self.info.getInfo(iServiceInformation.sVideoWidth)
                height = self.info.getInfo(iServiceInformation.sVideoHeight)
                if width > 0 and height > 0:
                    resolution = videocodec + " - "
                    resolution += "%dx%d - " % (width, height)
                    resolution += str(
                        (self.info.getInfo(iServiceInformation.sFrameRate) +
                         500) / 1000)
                    resolution += ("i", "p", "")[self.info.getInfo(
                        iServiceInformation.sProgressive)]
                    aspect = self.getServiceInfoValue(
                        iServiceInformation.sAspect)
                    aspect = aspect in (1, 2, 5, 6, 9, 0xA, 0xD,
                                        0xE) and "4:3" or "16:9"
                    resolution += " - " + aspect + ""
                gamma = ("SDR", "HDR", "HDR10", "HLG",
                         "")[self.info.getInfo(iServiceInformation.sGamma)]
                if gamma:
                    resolution += " - " + gamma
            if "%3a//" in refstr and reftype not in (1, 257, 4098, 4114):
                fillList = [
                    (_("Service name"), name, TYPE_TEXT),
                    (_("Videocodec, size & format"), resolution, TYPE_TEXT),
                    (_("Service reference"), ":".join(refstr.split(":")[:9]),
                     TYPE_TEXT),
                    (_("URL"), refstr.split(":")[10].replace("%3a",
                                                             ":"), TYPE_TEXT)
                ]
            else:
                if ":/" in refstr:
                    fillList = [(_("Service name"), name, TYPE_TEXT),
                                (_("Videocodec, size & format"), resolution,
                                 TYPE_TEXT),
                                (_("Service reference"),
                                 ":".join(refstr.split(":")[:9]), TYPE_TEXT),
                                (_("Filename"), refstr.split(":")[10],
                                 TYPE_TEXT)]
                else:
                    fillList = [
                        (_("Service name"), name, TYPE_TEXT),
                        (_("Provider"),
                         self.getServiceInfoValue(
                             iServiceInformation.sProvider), TYPE_TEXT),
                        (_("Videocodec, size & format"), resolution, TYPE_TEXT)
                    ]
                    if "%3a//" in refstr:
                        fillList = fillList + [
                            (_("Service reference"), ":".join(
                                refstr.split(":")[:9]), TYPE_TEXT),
                            (_("URL"), refstr.split(":")[10].replace(
                                "%3a", ":"), TYPE_TEXT)
                        ]
                    else:
                        fillList = fillList + [
                            (_("Service reference"), refstr, TYPE_TEXT)
                        ]
                fillList = fillList + [
                    (_("Namespace"),
                     self.getServiceInfoValue(
                         iServiceInformation.sNamespace), TYPE_VALUE_HEX, 8),
                    (_("Service ID"),
                     self.getServiceInfoValue(
                         iServiceInformation.sSID), TYPE_VALUE_HEX_DEC, 4),
                    (_("Video PID"),
                     self.getServiceInfoValue(iServiceInformation.sVideoPID),
                     TYPE_VALUE_HEX_DEC, 4),
                    (_("Audio PID"),
                     self.getServiceInfoValue(iServiceInformation.sAudioPID),
                     TYPE_VALUE_HEX_DEC, 4),
                    (_("PCR PID"),
                     self.getServiceInfoValue(
                         iServiceInformation.sPCRPID), TYPE_VALUE_HEX_DEC, 4),
                    (_("PMT PID"),
                     self.getServiceInfoValue(
                         iServiceInformation.sPMTPID), TYPE_VALUE_HEX_DEC, 4),
                    (_("TXT PID"),
                     self.getServiceInfoValue(
                         iServiceInformation.sTXTPID), TYPE_VALUE_HEX_DEC, 4),
                    (_("TSID"),
                     self.getServiceInfoValue(
                         iServiceInformation.sTSID), TYPE_VALUE_HEX_DEC, 4),
                    (_("ONID"),
                     self.getServiceInfoValue(
                         iServiceInformation.sONID), TYPE_VALUE_HEX_DEC, 4)
                ]
            self.fillList(fillList)
        elif self.transponder_info:
            self.fillList(self.getFEData(self.transponder_info))
예제 #6
0
    def getText(self):
        service = self.source.service
        try:
            info = service and service.info()
        except:
            try:
                info = eServiceCenter.getInstance().info(service)
            except:
                pass
        if not info:
            return ""

        Ret_Text = ""
        Sec_Text = ""
        Res_Text = ""
        showCryptoInfo = False

        if (self.type == self.SMART_INFO_H or self.type == self.SERVICE_INFO
                or self.type == self.CRYPTO_INFO
                or self.type == self.FREQUENCY_INFO):  # HORIZONTAL
            sep = "  "
            sep2 = " - "
        elif (self.type == self.SMART_INFO_V):  # VERTIKAL
            sep = "\n"
            sep2 = "\n"
        else:
            return ""  # unsupported orientation

        if (self.type == self.FREQUENCY_INFO):
            try:
                feinfo = (service and service.frontendInfo())
                prvd = info.getInfoString(iServiceInformation.sProvider)
                Ret_Text = self.short(prvd)
                frontendDataOrg = (feinfo and feinfo.getAll(True))
            except:
                try:
                    frontendDataOrg = info.getInfoObject(
                        service, iServiceInformation.sTransponderData)
                    prvd = info.getInfoString(service,
                                              iServiceInformation.sProvider)
                except:
                    pass

            if (frontendDataOrg is not None):
                frontendData = ConvertToHumanReadable(frontendDataOrg)
                if ((frontendDataOrg.get("tuner_type") == "DVB-S")
                        or (frontendDataOrg.get("tuner_type") == "DVB-C")):
                    frequency = (str(
                        (frontendData.get("frequency") / 1000)) + " MHz")
                    symbolrate = (str(
                        (frontendData.get("symbol_rate") / 1000)))
                    fec_inner = frontendData.get("fec_inner")
                    if (frontendDataOrg.get("tuner_type") == "DVB-S"):
                        Ret_Text += sep + frontendData.get("system")
                        orbital_pos = int(frontendDataOrg["orbital_position"])
                        if orbital_pos > 1800:
                            if orbital_pos == 3590:
                                orb_pos = 'Thor/Intelsat'
                            elif orbital_pos == 3560:
                                orb_pos = 'Amos (4'
                            elif orbital_pos == 3550:
                                orb_pos = 'Atlantic Bird'
                            elif orbital_pos == 3530:
                                orb_pos = 'Nilesat/Atlantic Bird'
                            elif orbital_pos == 3520:
                                orb_pos = 'Atlantic Bird'
                            elif orbital_pos == 3475:
                                orb_pos = 'Atlantic Bird'
                            elif orbital_pos == 3460:
                                orb_pos = 'Express'
                            elif orbital_pos == 3450:
                                orb_pos = 'Telstar'
                            elif orbital_pos == 3420:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3380:
                                orb_pos = 'Nss'
                            elif orbital_pos == 3355:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3325:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3300:
                                orb_pos = 'Hispasat'
                            elif orbital_pos == 3285:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3170:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3150:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3070:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3045:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3020:
                                orb_pos = 'Intelsat 9'
                            elif orbital_pos == 2990:
                                orb_pos = 'Amazonas'
                            elif orbital_pos == 2900:
                                orb_pos = 'Star One'
                            elif orbital_pos == 2880:
                                orb_pos = 'AMC 6 (72'
                            elif orbital_pos == 2875:
                                orb_pos = 'Echostar 6'
                            elif orbital_pos == 2860:
                                orb_pos = 'Horizons'
                            elif orbital_pos == 2810:
                                orb_pos = 'AMC5'
                            elif orbital_pos == 2780:
                                orb_pos = 'NIMIQ 4'
                            elif orbital_pos == 2690:
                                orb_pos = 'NIMIQ 1'
                            elif orbital_pos == 3592:
                                orb_pos = 'Thor/Intelsat'
                            elif orbital_pos == 2985:
                                orb_pos = 'Echostar 3,12'
                            elif orbital_pos == 2830:
                                orb_pos = 'Echostar 8'
                            elif orbital_pos == 2630:
                                orb_pos = 'Galaxy 19'
                            elif orbital_pos == 2500:
                                orb_pos = 'Echostar 10,11'
                            elif orbital_pos == 2502:
                                orb_pos = 'DirectTV 5'
                            elif orbital_pos == 2410:
                                orb_pos = 'Echostar 7 Anik F3'
                            elif orbital_pos == 2391:
                                orb_pos = 'Galaxy 23'
                            elif orbital_pos == 2390:
                                orb_pos = 'Echostar 9'
                            elif orbital_pos == 2412:
                                orb_pos = 'DirectTV 7S'
                            elif orbital_pos == 2310:
                                orb_pos = 'Galaxy 27'
                            elif orbital_pos == 2311:
                                orb_pos = 'Ciel 2'
                            elif orbital_pos == 2120:
                                orb_pos = 'Echostar 2'
                            else:
                                orb_pos = str(
                                    (float(3600 - orbital_pos)) / 10.0) + "W"
                        elif orbital_pos > 0:
                            if orbital_pos == 192:
                                orb_pos = 'Astra 1F'
                            elif orbital_pos == 130:
                                orb_pos = 'Hot Bird 6,7A,8'
                            elif orbital_pos == 235:
                                orb_pos = 'Astra 1E'
                            elif orbital_pos == 1100:
                                orb_pos = 'BSat 1A,2A'
                            elif orbital_pos == 1101:
                                orb_pos = 'N-Sat 110'
                            elif orbital_pos == 1131:
                                orb_pos = 'KoreaSat 5'
                            elif orbital_pos == 1440:
                                orb_pos = 'SuperBird 7,C2'
                            elif orbital_pos == 1006:
                                orb_pos = 'AsiaSat 2'
                            elif orbital_pos == 1030:
                                orb_pos = 'Express A2'
                            elif orbital_pos == 1056:
                                orb_pos = 'Asiasat 3S'
                            elif orbital_pos == 1082:
                                orb_pos = 'NSS 11'
                            elif orbital_pos == 881:
                                orb_pos = 'ST1'
                            elif orbital_pos == 900:
                                orb_pos = 'Yamal 201'
                            elif orbital_pos == 917:
                                orb_pos = 'Mesat'
                            elif orbital_pos == 950:
                                orb_pos = 'Insat 4B'
                            elif orbital_pos == 951:
                                orb_pos = 'NSS 6'
                            elif orbital_pos == 765:
                                orb_pos = 'Telestar'
                            elif orbital_pos == 785:
                                orb_pos = 'ThaiCom 5'
                            elif orbital_pos == 800:
                                orb_pos = 'Express'
                            elif orbital_pos == 830:
                                orb_pos = 'Insat 4A'
                            elif orbital_pos == 850:
                                orb_pos = 'Intelsat 709'
                            elif orbital_pos == 750:
                                orb_pos = 'Abs'
                            elif orbital_pos == 720:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 705:
                                orb_pos = 'Eutelsat W5'
                            elif orbital_pos == 685:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 620:
                                orb_pos = 'Intelsat 902'
                            elif orbital_pos == 600:
                                orb_pos = 'Intelsat 904'
                            elif orbital_pos == 570:
                                orb_pos = 'Nss'
                            elif orbital_pos == 530:
                                orb_pos = 'Express AM22'
                            elif orbital_pos == 480:
                                orb_pos = 'Eutelsat 2F2'
                            elif orbital_pos == 450:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 420:
                                orb_pos = 'Turksat 2A'
                            elif orbital_pos == 400:
                                orb_pos = 'Express AM1'
                            elif orbital_pos == 390:
                                orb_pos = 'Hellas Sat 2'
                            elif orbital_pos == 380:
                                orb_pos = 'Paksat 1'
                            elif orbital_pos == 360:
                                orb_pos = 'Eutelsat Sesat'
                            elif orbital_pos == 335:
                                orb_pos = 'Astra 1M'
                            elif orbital_pos == 330:
                                orb_pos = 'Eurobird 3'
                            elif orbital_pos == 328:
                                orb_pos = 'Galaxy 11'
                            elif orbital_pos == 315:
                                orb_pos = 'Astra 5A'
                            elif orbital_pos == 310:
                                orb_pos = 'Turksat'
                            elif orbital_pos == 305:
                                orb_pos = 'Arabsat'
                            elif orbital_pos == 285:
                                orb_pos = 'Eurobird 1'
                            elif orbital_pos == 284:
                                orb_pos = 'Eurobird/Astra'
                            elif orbital_pos == 282:
                                orb_pos = 'Eurobird/Astra'
                            elif orbital_pos == 1220:
                                orb_pos = 'AsiaSat'
                            elif orbital_pos == 1380:
                                orb_pos = 'Telstar 18'
                            elif orbital_pos == 260:
                                orb_pos = 'Badr 3/4'
                            elif orbital_pos == 255:
                                orb_pos = 'Eurobird 2'
                            elif orbital_pos == 215:
                                orb_pos = 'Eutelsat'
                            elif orbital_pos == 216:
                                orb_pos = 'Eutelsat W6'
                            elif orbital_pos == 210:
                                orb_pos = 'AfriStar 1'
                            elif orbital_pos == 160:
                                orb_pos = 'Eutelsat W2'
                            elif orbital_pos == 100:
                                orb_pos = 'Eutelsat W1'
                            elif orbital_pos == 90:
                                orb_pos = 'Eurobird 9'
                            elif orbital_pos == 70:
                                orb_pos = 'Eutelsat W3A'
                            elif orbital_pos == 50:
                                orb_pos = 'Sirius 4'
                            elif orbital_pos == 48:
                                orb_pos = 'Sirius 4'
                            elif orbital_pos == 30:
                                orb_pos = 'Telecom 2'
                            else:
                                orb_pos = str(
                                    (float(orbital_pos)) / 10.0) + "E"
                        Ret_Text += sep + orb_pos + "\n"
                        Ret_Text += frequency + sep + frontendData.get(
                            "polarization_abbreviation")
                        Ret_Text += sep + symbolrate
                        Ret_Text += sep + frontendData.get(
                            "modulation") + "-" + fec_inner
                    else:
                        Ret_Text += sep + "DVB-C " + frequency + " MHz" + sep + fec_inner + sep + symbolrate
                elif (frontendData.get("tuner_type") == "DVB-T"):
                    frequency = (str(
                        (frontendData.get("frequency") / 1000)) + " MHz")
                    Ret_Text = "Frequency: " + frequency

        if (self.type == self.SMART_INFO_H or self.type == self.SMART_INFO_V
                or self.type == self.SERVICE_INFO):

            xresol = info.getInfo(iServiceInformation.sVideoWidth)
            yresol = info.getInfo(iServiceInformation.sVideoHeight)
            feinfo = (service and service.frontendInfo())

            prvd = info.getInfoString(iServiceInformation.sProvider)
            Ret_Text = self.short(prvd)

            frontendDataOrg = (feinfo and feinfo.getAll(True))
            if (frontendDataOrg is not None):
                frontendData = ConvertToHumanReadable(frontendDataOrg)
                if ((frontendDataOrg.get("tuner_type") == "DVB-S")
                        or (frontendDataOrg.get("tuner_type") == "DVB-C")):
                    frequency = (str((frontendData.get("frequency") / 1000)))
                    symbolrate = (str(
                        (frontendData.get("symbol_rate") / 1000)))
                    fec_inner = frontendData.get("fec_inner")
                    if (frontendDataOrg.get("tuner_type") == "DVB-S"):
                        Ret_Text += sep + frontendData.get("system")
                        Ret_Text += sep + frequency + frontendData.get(
                            "polarization_abbreviation")
                        Ret_Text += sep + symbolrate
                        Ret_Text += sep + fec_inner + " " + frontendData.get(
                            "modulation")
                        orbital_pos = int(frontendDataOrg["orbital_position"])
                        if orbital_pos > 1800:
                            orb_pos = str(
                                (float(3600 - orbital_pos)) / 10.0) + "W"
                        elif orbital_pos > 0:
                            orb_pos = str((float(orbital_pos)) / 10.0) + "E"
                        Ret_Text += sep + orb_pos
                    else:
                        Ret_Text += sep + "DVB-C " + frequency + " MHz" + sep + fec_inner + sep + symbolrate
                elif (frontendDataOrg.get("tuner_type") == "DVB-T"):
                    frequency = (str((frontendData.get("frequency") / 1000)))
                    Ret_Text += sep + "DVB-T" + sep + "Frequency:" + sep + frequency + " MHz"

            if (feinfo is not None) and (xresol > 0):
                from Components.Converter.PliExtraInfo import codec_data
                Res_Text += codec_data.get(
                    self.info.getInfo(iServiceInformation.sVideoType), "N/A")
                Res_Text += str(xresol) + "x" + str(yresol)
                Res_Text += ("i", "p", "")[info.getInfo(
                    iServiceInformation.sProgressive)]
                Res_Text += str(
                    (info.getInfo(iServiceInformation.sFrameRate) + 500) /
                    1000)

        if (self.type == self.SMART_INFO_H or self.type == self.SMART_INFO_V
                or self.type == self.CRYPTO_INFO):

            decCI = "0"
            Sec_Text = ""
            if (info.getInfo(iServiceInformation.sIsCrypted) == 1):
                data = self.ecmdata.getEcmData()
                if not config.usage.show_cryptoinfo.value:
                    showCryptoInfo = True
                    Sec_Text = data[0] + "\n"
                decCI = data[1]
                provid = data[2]
                pid = data[3]

                if decCI != '0':
                    decCIfull = "%04x" % int(decCI, 16)
                    for idline in self.idnames:
                        if int(decCI, 16) >= int(idline[0], 16) and int(
                                decCI, 16) <= int(idline[1], 16):
                            decCIfull = idline[2] + ":" + decCIfull
                            break
                    Sec_Text += decCIfull
                    if provid != '0':
                        Sec_Text += ":%04x" % int(provid, 16)
                    else:
                        Sec_Text += ":"
                    if pid != '0':
                        Sec_Text += ":%04x:%04x" % (info.getInfo(
                            iServiceInformation.sSID), int(pid, 16))

            elif not config.usage.show_cryptoinfo.value:
                showCryptoInfo = True
                Sec_Text = "FTA"
            res = ""
            searchIDs = (info.getInfoObject(iServiceInformation.sCAIDs))
            for idline in self.idnames:
                if int(decCI, 16) >= int(idline[0], 16) and int(
                        decCI, 16) <= int(idline[1], 16):
                    color = "\c0000??00"
                else:
                    color = "\c007?7?7?"
                    try:
                        for oneID in searchIDs:
                            if oneID >= int(idline[0], 16) and oneID <= int(
                                    idline[1], 16):
                                color = "\c00????00"
                    except:
                        pass
                res += color + idline[3] + " "

            if (self.type != self.CRYPTO_INFO):
                Ret_Text += "\n"
            Ret_Text += res + "\c00?????? " + Sec_Text

        if Res_Text != "":
            if showCryptoInfo:
                Ret_Text += sep + Res_Text
            else:
                Ret_Text += "\n" + Res_Text

        return Ret_Text
예제 #7
0
 def information(self):
     if self.type == TYPE_SERVICE_INFO:
         if self.session.nav.getCurrentlyPlayingServiceOrGroup():
             name = ServiceReference(
                 self.session.nav.getCurrentlyPlayingServiceReference(
                 )).getServiceName()
             refstr = self.session.nav.getCurrentlyPlayingServiceReference(
             ).toString()
         else:
             name = _('N/A')
             refstr = _('N/A')
         aspect = '-'
         videocodec = '-'
         videomode = '-'
         resolution = '-'
         if self.info:
             from Components.Converter.PliExtraInfo import codec_data
             videocodec = codec_data.get(
                 self.info.getInfo(iServiceInformation.sVideoType), 'N/A')
             width = self.info.getInfo(iServiceInformation.sVideoWidth)
             height = self.info.getInfo(iServiceInformation.sVideoHeight)
             if width > 0 and height > 0:
                 resolution = '%dx%d' % (width, height)
                 resolution += ('i', 'p', '-')[self.info.getInfo(
                     iServiceInformation.sProgressive)]
                 resolution += str(
                     (self.info.getInfo(iServiceInformation.sFrameRate) +
                      500) / 1000)
                 aspect = self.getServiceInfoValue(
                     iServiceInformation.sAspect)
                 aspect = aspect in (1, 2, 5, 6, 9, 10, 13,
                                     14) and '4:3' or '16:9'
                 resolution += ' - [' + aspect + ']'
                 gammas = ('SDR', 'HDR', 'HDR10', 'HLG', '')
                 if self.info.getInfo(
                         iServiceInformation.sGamma) < len(gammas):
                     gamma = gammas[self.info.getInfo(
                         iServiceInformation.sGamma)]
                     if gamma:
                         resolution += ' - ' + gamma
             f = open('/proc/stb/video/videomode')
             videomode = f.read()[:-1].replace('\n', '')
             f.close()
         Labels = ((_('Name'), name, TYPE_TEXT),
                   (_('Provider'),
                    self.getServiceInfoValue(iServiceInformation.sProvider),
                    TYPE_TEXT), (_('Videoformat'), aspect, TYPE_TEXT),
                   (_('Videomode'), videomode,
                    TYPE_TEXT), (_('Videosize'), resolution, TYPE_TEXT),
                   (_('Videocodec'), videocodec, TYPE_TEXT),
                   (_('Namespace'),
                    self.getServiceInfoValue(
                        iServiceInformation.sNamespace), TYPE_VALUE_HEX,
                    8), (_('Service reference'),
                         ':'.join(refstr.split(':')[:10]), TYPE_TEXT),
                   (_('URL'), refstr.split(':')[10].replace('%3a', ':'),
                    TYPE_TEXT))
         self.fillList(Labels)
     elif self.transponder_info:
         tp_info = ConvertToHumanReadable(self.transponder_info)
         conv = {
             'tuner_type': _('Transponder type'),
             'system': _('System'),
             'modulation': _('Modulation'),
             'orbital_position': _('Orbital position'),
             'frequency': _('Frequency'),
             'symbol_rate': _('Symbol rate'),
             'bandwidth': _('Bandwidth'),
             'polarization': _('Polarization'),
             'inversion': _('Inversion'),
             'pilot': _('Pilot'),
             'rolloff': _('Roll-off'),
             'is_id': _('Input Stream ID'),
             'pls_mode': _('PLS Mode'),
             'pls_code': _('PLS Code'),
             't2mi_plp_id': _('T2MI PLP ID'),
             't2mi_pip': _('T2MI PID'),
             'fec_inner': _('FEC'),
             'code_rate_lp': _('Coderate LP'),
             'code_rate_hp': _('Coderate HP'),
             'constellation': _('Constellation'),
             'transmission_mode': _('Transmission mode'),
             'guard_interval': _('Guard interval'),
             'hierarchy_information': _('Hierarchy information')
         }
         Labels = [(conv[i], tp_info[i],
                    i == 'orbital_position' and TYPE_VALUE_ORBIT_DEC
                    or TYPE_VALUE_DEC) for i in tp_info.keys() if i in conv]
         self.fillList(Labels)
예제 #8
0
	def information(self):
		if self.type == TYPE_SERVICE_INFO:
			if self.session.nav.getCurrentlyPlayingServiceOrGroup():
				name = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference()).getServiceName()
				refstr = self.session.nav.getCurrentlyPlayingServiceReference().toString()
			else:
				name = _("N/A")
				refstr = _("N/A")
			aspect = "-"
			videocodec = "-"
			videomode = "-"
			resolution = "-"
			if self.info:
				from Components.Converter.PliExtraInfo import codec_data
				videocodec = codec_data.get(self.info.getInfo(iServiceInformation.sVideoType), "N/A")
				width = self.info.getInfo(iServiceInformation.sVideoWidth)
				height = self.info.getInfo(iServiceInformation.sVideoHeight)
				if width > 0 and height > 0:
					resolution = "%dx%d" % (width,height)
					resolution += ("i", "p", "-")[self.info.getInfo(iServiceInformation.sProgressive)]
					resolution += str((self.info.getInfo(iServiceInformation.sFrameRate) + 500) / 1000)
					aspect = self.getServiceInfoValue(iServiceInformation.sAspect)
					aspect = aspect in ( 1, 2, 5, 6, 9, 0xA, 0xD, 0xE ) and "4:3" or "16:9"
					resolution += " - ["+aspect+"]"
					gammas = ("SDR", "HDR", "HDR10", "HLG", "")
					if self.info.getInfo(iServiceInformation.sGamma) < len(gammas):
						gamma = gammas[self.info.getInfo(iServiceInformation.sGamma)]
						if gamma:
							resolution += " - " + gamma
				f = open("/proc/stb/video/videomode")
				videomode = f.read()[:-1].replace('\n','')
				f.close()

			Labels = ( (_("Name"), name, TYPE_TEXT),
					(_("Provider"), self.getServiceInfoValue(iServiceInformation.sProvider), TYPE_TEXT),
					(_("Videoformat"), aspect, TYPE_TEXT),
					(_("Videomode"), videomode, TYPE_TEXT),
					(_("Videosize"), resolution, TYPE_TEXT),
					(_("Videocodec"), videocodec, TYPE_TEXT),
					(_("Namespace"), self.getServiceInfoValue(iServiceInformation.sNamespace), TYPE_VALUE_HEX, 8),
					(_("Service reference"), refstr, TYPE_TEXT))

			self.fillList(Labels)
		else:
			if self.transponder_info:
				tp_info = ConvertToHumanReadable(self.transponder_info)
				conv = { "tuner_type" 				: _("Transponder type"),
						 "system"					: _("System"),
						 "modulation"				: _("Modulation"),
						 "orbital_position"			: _("Orbital position"),
						 "frequency"				: _("Frequency"),
						 "symbol_rate"				: _("Symbol rate"),
						 "bandwidth"				: _("Bandwidth"),
						 "polarization"				: _("Polarization"),
						 "inversion"				: _("Inversion"),
						 "pilot"					: _("Pilot"),
						 "rolloff"					: _("Roll-off"),
						 "is_id"					: _("Input Stream ID"),
						 "pls_mode"					: _("PLS Mode"),
						 "pls_code"					: _("PLS Code"),
						 "t2mi_plp_id"				: _("T2MI PLP ID"),
						 "t2mi_pip"					: _("T2MI PID"),
						 "fec_inner"				: _("FEC"),
						 "code_rate_lp"				: _("Coderate LP"),
						 "code_rate_hp"				: _("Coderate HP"),
						 "constellation"			: _("Constellation"),
						 "transmission_mode"		: _("Transmission mode"),
						 "guard_interval"			: _("Guard interval"),
						 "hierarchy_information"	: _("Hierarchy information")}
				Labels = [(conv[i], tp_info[i], i == "orbital_position" and TYPE_VALUE_ORBIT_DEC or TYPE_VALUE_DEC) for i in tp_info.keys() if i in conv]
				self.fillList(Labels)
예제 #9
0
	def ShowServiceInformation(self):
		if self.type == TYPE_SERVICE_INFO:
			self["Title"].text = _("Service info - service & PIDs")
			if self.feinfo or self.transponder_info:
				self["key_blue"].text = self["blue"].text = _("Tuner setting values")
			if self.session.nav.getCurrentlyPlayingServiceOrGroup():
				name = ServiceReference(self.session.nav.getCurrentlyPlayingServiceReference()).getServiceName()
				refstr = self.session.nav.getCurrentlyPlayingServiceReference().toString()
				reftype = self.session.nav.getCurrentlyPlayingServiceReference().type
			else:
				name = _("N/A")
				refstr = _("N/A")
				reftype = 0
			aspect = "-"
			videocodec = "-"
			resolution = "-"
			if self.info:
				from Components.Converter.PliExtraInfo import codec_data
				videocodec = codec_data.get(self.info.getInfo(iServiceInformation.sVideoType), "N/A")
				width = self.info.getInfo(iServiceInformation.sVideoWidth)
				height = self.info.getInfo(iServiceInformation.sVideoHeight)
				if width > 0 and height > 0:
					resolution = videocodec + " - "
					resolution += "%dx%d - " % (width,height)
					resolution += str((self.info.getInfo(iServiceInformation.sFrameRate) + 500) / 1000)
					resolution += (" i", " p", "")[self.info.getInfo(iServiceInformation.sProgressive)]
					aspect = self.getServiceInfoValue(iServiceInformation.sAspect)
					aspect = aspect in ( 1, 2, 5, 6, 9, 0xA, 0xD, 0xE ) and "4:3" or "16:9"
					resolution += " - ["+aspect+"]"
				gamma = ("SDR", "HDR", "HDR10", "HLG", "")[self.info.getInfo(iServiceInformation.sGamma)]
				if gamma:
					resolution += " - " + gamma
			self.service = self.session.nav.getCurrentService()
			if "%3a//" in refstr and reftype not in (1,257,4098,4114):
			#IPTV 4097 5001, no PIDs shown
				fillList = [(_("Service name"), name, TYPE_TEXT),
					(_("Videocodec, size & format"), resolution, TYPE_TEXT),
					(_("Service reference"), ":".join(refstr.split(":")[:9]), TYPE_TEXT),
					(_("Namespace"), self.getServiceInfoValue(iServiceInformation.sNamespace), TYPE_VALUE_HEX, 8),
					(_("URL"), refstr.split(":")[10].replace("%3a", ":"), TYPE_TEXT)]
				subList = self.getSubtitleList()
			else:
				if ":/" in refstr:
				# mp4 videos, dvb-s-t recording
					fillList = [(_("Service name"), name, TYPE_TEXT),
						(_("Videocodec, size & format"), resolution, TYPE_TEXT),
						(_("Service reference"), ":".join(refstr.split(":")[:9]), TYPE_TEXT),
						(_("Filename"), refstr.split(":")[10], TYPE_TEXT)]
				else:
				# fallback, movistartv, live dvb-s-t
					fillList = [(_("Service name"), name, TYPE_TEXT),
						(_("Provider"), self.getServiceInfoValue(iServiceInformation.sProvider), TYPE_TEXT),
						(_("Videocodec, size & format"), resolution, TYPE_TEXT)]
					if "%3a//" in refstr:
					#fallback, movistartv
						fillList = fillList + [(_("Service reference"), ":".join(refstr.split(":")[:9]), TYPE_TEXT),
							(_("URL"), refstr.split(":")[10].replace("%3a", ":"), TYPE_TEXT)]
					else:
					#live dvb-s-t
						fillList = fillList + [(_("Service reference"), refstr, TYPE_TEXT)]
				self.audio = self.service and self.service.audioTracks()
				self.numberofTracks = self.audio and self.audio.getNumberOfTracks()
				self.subList = self.getSubtitleList()
				self.togglePIDButton()
				trackList = self.getTrackList()
				fillList = fillList + ([(_("Namespace & Orbital pos."), self.namespace(self.getServiceInfoValue(iServiceInformation.sNamespace)), TYPE_TEXT),
					(_("TSID"), self.getServiceInfoValue(iServiceInformation.sTSID), TYPE_VALUE_HEX_DEC, 4),
					(_("ONID"), self.getServiceInfoValue(iServiceInformation.sONID), TYPE_VALUE_HEX_DEC, 4),
					(_("Service ID"), self.getServiceInfoValue(iServiceInformation.sSID), TYPE_VALUE_HEX_DEC, 4),
					(_("Video PID"), self.getServiceInfoValue(iServiceInformation.sVideoPID), TYPE_VALUE_HEX_DEC, 4)]
					+ trackList + [(_("PCR PID"), self.getServiceInfoValue(iServiceInformation.sPCRPID), TYPE_VALUE_HEX_DEC, 4),
					(_("PMT PID"), self.getServiceInfoValue(iServiceInformation.sPMTPID), TYPE_VALUE_HEX_DEC, 4),
					(_("TXT PID"), self.getServiceInfoValue(iServiceInformation.sTXTPID), TYPE_VALUE_HEX_DEC, 4)])
				if self.showAll == True:
					fillList = fillList + self.subList

			self.fillList(fillList)
		elif self.transponder_info:
			self.fillList(self.getFEData(self.transponder_info))
예제 #10
0
 def createVideoCodec(self, info):
     #return ("MPEG2", "MPEG4", "MPEG1", "MPEG4-II", "VC1", "VC1-SM", "H265_HEVC", "")[info.getInfo(iServiceInformation.sVideoType)]
     from Components.Converter.PliExtraInfo import codec_data
     return codec_data.get(info.getInfo(iServiceInformation.sVideoType), "")
예제 #11
0
    def information(self):
        if self.type == TYPE_SERVICE_INFO:
            if self.session.nav.getCurrentlyPlayingServiceOrGroup():
                name = ServiceReference(
                    self.session.nav.getCurrentlyPlayingServiceReference(
                    )).getServiceName()
                refstr = self.session.nav.getCurrentlyPlayingServiceReference(
                ).toString()
            else:
                name = _("N/A")
                refstr = _("N/A")
            aspect = "-"
            videocodec = "-"
            videomode = "-"
            resolution = "-"
            if self.info:
                from Components.Converter.PliExtraInfo import codec_data
                videocodec = codec_data.get(
                    self.info.getInfo(iServiceInformation.sVideoType), "N/A")
                width = self.info.getInfo(iServiceInformation.sVideoWidth)
                height = self.info.getInfo(iServiceInformation.sVideoHeight)
                if width > 0 and height > 0:
                    resolution = "%dx%d" % (width, height)
                    resolution += ("i", "p", "-")[self.info.getInfo(
                        iServiceInformation.sProgressive)]
                    resolution += str(
                        (self.info.getInfo(iServiceInformation.sFrameRate) +
                         500) / 1000)
                    aspect = self.getServiceInfoValue(
                        iServiceInformation.sAspect)
                    aspect = aspect in (1, 2, 5, 6, 9, 0xA, 0xD,
                                        0xE) and "4:3" or "16:9"
                    resolution += " - [" + aspect + "]"
                    gammas = ("SDR", "HDR", "HDR10", "HLG", "")
                    if self.info.getInfo(
                            iServiceInformation.sGamma) < len(gammas):
                        gamma = gammas[self.info.getInfo(
                            iServiceInformation.sGamma)]
                        if gamma:
                            resolution += " - " + gamma
                f = open("/proc/stb/video/videomode")
                videomode = f.read()[:-1].replace('\n', '')
                f.close()
            codenumbers = subprocess.check_output([
                'dvbsnoop -n 1 -nph 1 | grep CA_system_ID | awk -F "=" "{print $2}" | awk -F "]" "{print $1}" | wc -l'
            ],
                                                  shell=True)
            codesystem = subprocess.check_output([
                "dvbsnoop -n 1 -nph 1 | grep CA_system_ID | awk -F '=' '{print $2}' | awk -F ']' '{print $1}'"
            ],
                                                 shell=True)
            caidssyst = subprocess.check_output([
                "dvbsnoop -n 1 -nph 1 | grep CA_system_ID | awk -F '(' '{print $2}' | awk -F ')' '{print $1}'"
            ],
                                                shell=True)
            Labels = ((_("Name"), name, TYPE_TEXT),
                      (_("Provider"),
                       self.getServiceInfoValue(iServiceInformation.sProvider),
                       TYPE_TEXT), (_("Videoformat"), aspect, TYPE_TEXT),
                      (_("Videomode"), videomode,
                       TYPE_TEXT), (_("Videosize"), resolution, TYPE_TEXT),
                      (_("Videocodec"), videocodec, TYPE_TEXT),
                      (_("Namespace"),
                       self.getServiceInfoValue(
                           iServiceInformation.sNamespace), TYPE_VALUE_HEX,
                       8), (_("Service reference"), refstr, TYPE_TEXT),
                      (_("Coding Systems"), codenumbers, TYPE_TEXT))

            if codenumbers > 0:
                i = 0
                caidssyst1 = caidssyst.splitlines()
                codesystem1 = codesystem.splitlines()
                while i < int(codenumbers):
                    caidsystem = caidssyst1[i] + " " + codesystem1[i]
                    i += 1
                    newlabel = ((_("%s " % i), caidsystem, TYPE_TEXT))
                    Labels = Labels + (newlabel, )

            self.fillList(Labels)
        else:
            if self.transponder_info:
                tp_info = ConvertToHumanReadable(self.transponder_info)
                conv = {
                    "tuner_type": _("Transponder type"),
                    "system": _("System"),
                    "modulation": _("Modulation"),
                    "orbital_position": _("Orbital position"),
                    "frequency": _("Frequency"),
                    "symbol_rate": _("Symbol rate"),
                    "bandwidth": _("Bandwidth"),
                    "polarization": _("Polarization"),
                    "inversion": _("Inversion"),
                    "pilot": _("Pilot"),
                    "rolloff": _("Roll-off"),
                    "is_id": _("Input Stream ID"),
                    "pls_mode": _("PLS Mode"),
                    "pls_code": _("PLS Code"),
                    "t2mi_plp_id": _("T2MI PID-PLP ID"),
                    "fec_inner": _("FEC"),
                    "code_rate_lp": _("Coderate LP"),
                    "code_rate_hp": _("Coderate HP"),
                    "constellation": _("Constellation"),
                    "transmission_mode": _("Transmission mode"),
                    "guard_interval": _("Guard interval"),
                    "hierarchy_information": _("Hierarchy information")
                }
                Labels = [(conv[i], tp_info[i],
                           i == "orbital_position" and TYPE_VALUE_ORBIT_DEC
                           or TYPE_VALUE_DEC) for i in tp_info.keys()
                          if i in conv]
                self.fillList(Labels)
예제 #12
0
    def getText(self):
        service = self.source.service
        try:
            info = service and service.info()
        except:
            try:
                info = eServiceCenter.getInstance().info(service)
            except:
                pass

        if not info:
            return ''
        Ret_Text = ''
        Sec_Text = ''
        Res_Text = ''
        showCryptoInfo = False
        if self.type == self.SMART_INFO_H or self.type == self.SERVICE_INFO or self.type == self.CRYPTO_INFO or self.type == self.FREQUENCY_INFO:
            sep = '  '
            sep2 = ' - '
        elif self.type == self.SMART_INFO_V:
            sep = '\n'
            sep2 = '\n'
        else:
            return ''
        if self.type == self.FREQUENCY_INFO:
            try:
                feinfo = service and service.frontendInfo()
                prvd = info.getInfoString(iServiceInformation.sProvider)
                Ret_Text = self.short(prvd)
                frontendDataOrg = feinfo and feinfo.getAll(True)
            except:
                try:
                    frontendDataOrg = info.getInfoObject(
                        service, iServiceInformation.sTransponderData)
                    prvd = info.getInfoString(service,
                                              iServiceInformation.sProvider)
                except:
                    pass

            if frontendDataOrg is not None:
                frontendData = ConvertToHumanReadable(frontendDataOrg)
                if frontendDataOrg.get(
                        'tuner_type') == 'DVB-S' or frontendDataOrg.get(
                            'tuner_type') == 'DVB-C':
                    frequency = str(
                        frontendData.get('frequency') / 1000) + ' MHz'
                    symbolrate = str(frontendData.get('symbol_rate') / 1000)
                    fec_inner = frontendData.get('fec_inner')
                    if frontendDataOrg.get('tuner_type') == 'DVB-S':
                        Ret_Text += sep + frontendData.get('system')
                        orbital_pos = int(frontendDataOrg['orbital_position'])
                        if orbital_pos > 1800:
                            if orbital_pos == 3590:
                                orb_pos = 'Thor/Intelsat'
                            elif orbital_pos == 3560:
                                orb_pos = 'Amos (4'
                            elif orbital_pos == 3550:
                                orb_pos = 'Atlantic Bird'
                            elif orbital_pos == 3530:
                                orb_pos = 'Nilesat/Atlantic Bird'
                            elif orbital_pos == 3520:
                                orb_pos = 'Atlantic Bird'
                            elif orbital_pos == 3475:
                                orb_pos = 'Atlantic Bird'
                            elif orbital_pos == 3460:
                                orb_pos = 'Express'
                            elif orbital_pos == 3450:
                                orb_pos = 'Telstar'
                            elif orbital_pos == 3420:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3380:
                                orb_pos = 'Nss'
                            elif orbital_pos == 3355:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3325:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3300:
                                orb_pos = 'Hispasat'
                            elif orbital_pos == 3285:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3170:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3150:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3070:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3045:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 3020:
                                orb_pos = 'Intelsat 9'
                            elif orbital_pos == 2990:
                                orb_pos = 'Amazonas'
                            elif orbital_pos == 2900:
                                orb_pos = 'Star One'
                            elif orbital_pos == 2880:
                                orb_pos = 'AMC 6 (72'
                            elif orbital_pos == 2875:
                                orb_pos = 'Echostar 6'
                            elif orbital_pos == 2860:
                                orb_pos = 'Horizons'
                            elif orbital_pos == 2810:
                                orb_pos = 'AMC5'
                            elif orbital_pos == 2780:
                                orb_pos = 'NIMIQ 4'
                            elif orbital_pos == 2690:
                                orb_pos = 'NIMIQ 1'
                            elif orbital_pos == 3592:
                                orb_pos = 'Thor/Intelsat'
                            elif orbital_pos == 2985:
                                orb_pos = 'Echostar 3,12'
                            elif orbital_pos == 2830:
                                orb_pos = 'Echostar 8'
                            elif orbital_pos == 2630:
                                orb_pos = 'Galaxy 19'
                            elif orbital_pos == 2500:
                                orb_pos = 'Echostar 10,11'
                            elif orbital_pos == 2502:
                                orb_pos = 'DirectTV 5'
                            elif orbital_pos == 2410:
                                orb_pos = 'Echostar 7 Anik F3'
                            elif orbital_pos == 2391:
                                orb_pos = 'Galaxy 23'
                            elif orbital_pos == 2390:
                                orb_pos = 'Echostar 9'
                            elif orbital_pos == 2412:
                                orb_pos = 'DirectTV 7S'
                            elif orbital_pos == 2310:
                                orb_pos = 'Galaxy 27'
                            elif orbital_pos == 2311:
                                orb_pos = 'Ciel 2'
                            elif orbital_pos == 2120:
                                orb_pos = 'Echostar 2'
                            else:
                                orb_pos = str(
                                    float(3600 - orbital_pos) / 10.0) + 'W'
                        elif orbital_pos > 0:
                            if orbital_pos == 192:
                                orb_pos = 'Astra 1F'
                            elif orbital_pos == 130:
                                orb_pos = 'Hot Bird 6,7A,8'
                            elif orbital_pos == 235:
                                orb_pos = 'Astra 1E'
                            elif orbital_pos == 1100:
                                orb_pos = 'BSat 1A,2A'
                            elif orbital_pos == 1101:
                                orb_pos = 'N-Sat 110'
                            elif orbital_pos == 1131:
                                orb_pos = 'KoreaSat 5'
                            elif orbital_pos == 1440:
                                orb_pos = 'SuperBird 7,C2'
                            elif orbital_pos == 1006:
                                orb_pos = 'AsiaSat 2'
                            elif orbital_pos == 1030:
                                orb_pos = 'Express A2'
                            elif orbital_pos == 1056:
                                orb_pos = 'Asiasat 3S'
                            elif orbital_pos == 1082:
                                orb_pos = 'NSS 11'
                            elif orbital_pos == 881:
                                orb_pos = 'ST1'
                            elif orbital_pos == 900:
                                orb_pos = 'Yamal 201'
                            elif orbital_pos == 917:
                                orb_pos = 'Mesat'
                            elif orbital_pos == 950:
                                orb_pos = 'Insat 4B'
                            elif orbital_pos == 951:
                                orb_pos = 'NSS 6'
                            elif orbital_pos == 765:
                                orb_pos = 'Telestar'
                            elif orbital_pos == 785:
                                orb_pos = 'ThaiCom 5'
                            elif orbital_pos == 800:
                                orb_pos = 'Express'
                            elif orbital_pos == 830:
                                orb_pos = 'Insat 4A'
                            elif orbital_pos == 850:
                                orb_pos = 'Intelsat 709'
                            elif orbital_pos == 750:
                                orb_pos = 'Abs'
                            elif orbital_pos == 720:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 705:
                                orb_pos = 'Eutelsat W5'
                            elif orbital_pos == 685:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 620:
                                orb_pos = 'Intelsat 902'
                            elif orbital_pos == 600:
                                orb_pos = 'Intelsat 904'
                            elif orbital_pos == 570:
                                orb_pos = 'Nss'
                            elif orbital_pos == 530:
                                orb_pos = 'Express AM22'
                            elif orbital_pos == 480:
                                orb_pos = 'Eutelsat 2F2'
                            elif orbital_pos == 450:
                                orb_pos = 'Intelsat'
                            elif orbital_pos == 420:
                                orb_pos = 'Turksat 2A'
                            elif orbital_pos == 400:
                                orb_pos = 'Express AM1'
                            elif orbital_pos == 390:
                                orb_pos = 'Hellas Sat 2'
                            elif orbital_pos == 380:
                                orb_pos = 'Paksat 1'
                            elif orbital_pos == 360:
                                orb_pos = 'Eutelsat Sesat'
                            elif orbital_pos == 335:
                                orb_pos = 'Astra 1M'
                            elif orbital_pos == 330:
                                orb_pos = 'Eurobird 3'
                            elif orbital_pos == 328:
                                orb_pos = 'Galaxy 11'
                            elif orbital_pos == 315:
                                orb_pos = 'Astra 5A'
                            elif orbital_pos == 310:
                                orb_pos = 'Turksat'
                            elif orbital_pos == 305:
                                orb_pos = 'Arabsat'
                            elif orbital_pos == 285:
                                orb_pos = 'Eurobird 1'
                            elif orbital_pos == 284:
                                orb_pos = 'Eurobird/Astra'
                            elif orbital_pos == 282:
                                orb_pos = 'Eurobird/Astra'
                            elif orbital_pos == 1220:
                                orb_pos = 'AsiaSat'
                            elif orbital_pos == 1380:
                                orb_pos = 'Telstar 18'
                            elif orbital_pos == 260:
                                orb_pos = 'Badr 3/4'
                            elif orbital_pos == 255:
                                orb_pos = 'Eurobird 2'
                            elif orbital_pos == 215:
                                orb_pos = 'Eutelsat'
                            elif orbital_pos == 216:
                                orb_pos = 'Eutelsat W6'
                            elif orbital_pos == 210:
                                orb_pos = 'AfriStar 1'
                            elif orbital_pos == 160:
                                orb_pos = 'Eutelsat W2'
                            elif orbital_pos == 100:
                                orb_pos = 'Eutelsat W1'
                            elif orbital_pos == 90:
                                orb_pos = 'Eurobird 9'
                            elif orbital_pos == 70:
                                orb_pos = 'Eutelsat W3A'
                            elif orbital_pos == 50:
                                orb_pos = 'Sirius 4'
                            elif orbital_pos == 48:
                                orb_pos = 'Sirius 4'
                            elif orbital_pos == 30:
                                orb_pos = 'Telecom 2'
                            else:
                                orb_pos = str(float(orbital_pos) / 10.0) + 'E'
                        Ret_Text += sep + orb_pos + '\n'
                        Ret_Text += frequency + sep + frontendData.get(
                            'polarization_abbreviation')
                        Ret_Text += sep + symbolrate
                        Ret_Text += sep + frontendData.get(
                            'modulation') + '-' + fec_inner
                    else:
                        Ret_Text += sep + 'DVB-C ' + frequency + ' MHz' + sep + fec_inner + sep + symbolrate
                elif frontendData.get('tuner_type') == 'DVB-T':
                    frequency = str(
                        frontendData.get('frequency') / 1000) + ' MHz'
                    Ret_Text = 'Frequency: ' + frequency
        if self.type == self.SMART_INFO_H or self.type == self.SMART_INFO_V or self.type == self.SERVICE_INFO:
            xresol = info.getInfo(iServiceInformation.sVideoWidth)
            yresol = info.getInfo(iServiceInformation.sVideoHeight)
            feinfo = service and service.frontendInfo()
            prvd = info.getInfoString(iServiceInformation.sProvider)
            Ret_Text = self.short(prvd)
            frontendDataOrg = feinfo and feinfo.getAll(True)
            if frontendDataOrg is not None:
                frontendData = ConvertToHumanReadable(frontendDataOrg)
                if frontendDataOrg.get(
                        'tuner_type') == 'DVB-S' or frontendDataOrg.get(
                            'tuner_type') == 'DVB-C':
                    frequency = str(frontendData.get('frequency') / 1000)
                    symbolrate = str(frontendData.get('symbol_rate') / 1000)
                    fec_inner = frontendData.get('fec_inner')
                    if frontendDataOrg.get('tuner_type') == 'DVB-S':
                        Ret_Text += sep + frontendData.get('system')
                        Ret_Text += sep + frequency + frontendData.get(
                            'polarization_abbreviation')
                        Ret_Text += sep + symbolrate
                        Ret_Text += sep + fec_inner + ' ' + frontendData.get(
                            'modulation')
                        orbital_pos = int(frontendDataOrg['orbital_position'])
                        if orbital_pos > 1800:
                            orb_pos = str(
                                float(3600 - orbital_pos) / 10.0) + 'W'
                        elif orbital_pos > 0:
                            orb_pos = str(float(orbital_pos) / 10.0) + 'E'
                        Ret_Text += sep + orb_pos
                    else:
                        Ret_Text += sep + 'DVB-C ' + frequency + ' MHz' + sep + fec_inner + sep + symbolrate
                elif frontendDataOrg.get('tuner_type') == 'DVB-T':
                    frequency = str(frontendData.get('frequency') / 1000)
                    Ret_Text += sep + 'DVB-T' + sep + 'Frequency:' + sep + frequency + ' MHz'
            if feinfo is not None and xresol > 0:
                from Components.Converter.PliExtraInfo import codec_data
                Res_Text += codec_data.get(
                    self.info.getInfo(iServiceInformation.sVideoType), 'N/A')
                Res_Text += str(xresol) + 'x' + str(yresol)
                Res_Text += ('i', 'p', '')[info.getInfo(
                    iServiceInformation.sProgressive)]
                Res_Text += str(
                    (info.getInfo(iServiceInformation.sFrameRate) + 500) /
                    1000)
        if self.type == self.SMART_INFO_H or self.type == self.SMART_INFO_V or self.type == self.CRYPTO_INFO:
            decCI = '0'
            Sec_Text = ''
            if info.getInfo(iServiceInformation.sIsCrypted) == 1:
                data = self.ecmdata.getEcmData()
                if not config.usage.show_cryptoinfo.value:
                    showCryptoInfo = True
                    Sec_Text = data[0] + '\n'
                decCI = data[1]
                provid = data[2]
                pid = data[3]
                if decCI != '0':
                    decCIfull = '%04x' % int(decCI, 16)
                    for idline in self.idnames:
                        if int(decCI, 16) >= int(idline[0], 16) and int(
                                decCI, 16) <= int(idline[1], 16):
                            decCIfull = idline[2] + ':' + decCIfull
                            break

                    Sec_Text += decCIfull
                    if provid != '0':
                        Sec_Text += ':%04x' % int(provid, 16)
                    else:
                        Sec_Text += ':'
                    if pid != '0':
                        Sec_Text += ':%04x:%04x' % (info.getInfo(
                            iServiceInformation.sSID), int(pid, 16))
            elif not config.usage.show_cryptoinfo.value:
                showCryptoInfo = True
                Sec_Text = 'FTA'
            res = ''
            searchIDs = info.getInfoObject(iServiceInformation.sCAIDs)
            for idline in self.idnames:
                if int(decCI, 16) >= int(idline[0], 16) and int(
                        decCI, 16) <= int(idline[1], 16):
                    color = '\\c0000??00'
                else:
                    color = '\\c007?7?7?'
                    try:
                        for oneID in searchIDs:
                            if oneID >= int(idline[0], 16) and oneID <= int(
                                    idline[1], 16):
                                color = '\\c00????00'

                    except:
                        pass

                res += color + idline[3] + ' '

            if self.type != self.CRYPTO_INFO:
                Ret_Text += '\n'
            Ret_Text += res + '\\c00?????? ' + Sec_Text
        if Res_Text != '':
            if showCryptoInfo:
                Ret_Text += sep + Res_Text
            else:
                Ret_Text += '\n' + Res_Text
        return Ret_Text