Beispiel #1
0
    def __init__(self,
                 source=SatelliteSource.LYNGSAT,
                 entities=False,
                 separator=' '):

        HTMLParser.__init__(self)

        self._S_TYPES = {
            "": "2",
            "MPEG-2 SD": "1",
            "MPEG-2/SD": "1",
            "SD": "1",
            "MPEG-4 SD": "22",
            "MPEG-4/SD": "22",
            "MPEG-4": "22",
            "HEVC SD": "22",
            "MPEG-4/HD": "25",
            "MPEG-4 HD": "25",
            "MPEG-4 HD 1080": "25",
            "MPEG-4 HD 720": "25",
            "HEVC HD": "25",
            "HEVC/HD": "25",
            "HEVC": "31",
            "HEVC/UHD": "31",
            "HEVC UHD": "31",
            "HEVC UHD 4K": "31",
            "3": "Data"
        }

        self._TR = "s {}000:{}000:{}:{}:{}:{}:{}:{}"
        self._S2_TR = "{}:{}:{}:{}"

        self._POS_PAT = re.compile(r".*?(\d+\.\d°[EW]).*")
        # LyngSat.
        self._TR_PAT = re.compile(
            (r".*?(\d+)\.?\d?\s+([RLHV]).*(DVB-S[2]?)/?(.*PSK)?\s"
             r"?(T2-MI)?\s?(PLS\s+Multistream)?\s?"
             r"SR-FEC:\s(\d+)-(\d/\d)\s+.*ONID-TID:\s+(\d+)-(\d+).*"))

        self._MULTI_PAT = re.compile(
            r"PLS\s+(Root|Gold|Combo)+\s(\d+)?\s+(?:Stream\s(\d+))")
        # KingOfSat.
        self._KING_TR_PAT = re.compile(
            (r"(DVB-S[2]?)\s?(?:T2-MI,\s+PLP\s+(\d+))?.*"
             r"?(?:PLS:\s+(Root|Gold|Combo)\+(\d+))?"
             r"\s+(.*PSK).*?(?:.*Stream\s+(\d+))?.*"))

        self._parse_html_entities = entities
        self._separator = separator
        self._is_td = False
        self._is_th = False
        self._is_mux_div = False
        self._current_row = []
        self._current_cell_text = []
        self._current_cell = Cell()
        self._rows = []
        self._source = source
        self._t_url = ""
        self._use_short_names = True
        self._pls_modes = {v: k for k, v in PLS_MODE.items()}
Beispiel #2
0
    def init_enigma2_transponder_data(self, srv):
        """ Transponder data initialisation """
        data = srv.data_id.split(":")
        tr_data = srv.transponder.split(":")

        if srv.system == "DVB-S2":
            self.select_active_text(self._mod_combo_box,
                                    MODULATION.get(tr_data[8]))
            self.select_active_text(self._rolloff_combo_box,
                                    ROLL_OFF.get(tr_data[9]))
            self.select_active_text(self._pilot_combo_box,
                                    Pilot(tr_data[10]).name)
            self._tr_flag_entry.set_text(tr_data[7])
            if len(tr_data) > 12:
                self._stream_id_entry.set_text(tr_data[11])
                self._pls_code_entry.set_text(tr_data[12])
                self.select_active_text(self._pls_mode_combo_box,
                                        PLS_MODE.get(tr_data[13]))

        self._namespace_entry.set_text(str(int(data[1], 16)))
        self._transponder_id_entry.set_text(str(int(data[2], 16)))
        self._network_id_entry.set_text(str(int(data[3], 16)))
        self.select_active_text(self._invertion_combo_box,
                                Inversion(tr_data[5]).name)
        # Should be called last to properly initialize the reference
        self._srv_type_entry.set_text(data[4])
Beispiel #3
0
    def init_enigma2_transponder_data(self, srv):
        """ Transponder data initialisation """
        data = srv.data_id.split(":")
        tr_data = srv.transponder.split(":")
        tr_type = TrType(srv.transponder_type)

        self._namespace_entry.set_text(str(int(data[1], 16)))
        self._transponder_id_entry.set_text(str(int(data[2], 16)))
        self._network_id_entry.set_text(str(int(data[3], 16)))

        if tr_type is TrType.Satellite:
            self.select_active_text(self._invertion_combo_box,
                                    Inversion(tr_data[5]).name)
            if srv.system == "DVB-S2":
                self.select_active_text(self._mod_combo_box,
                                        MODULATION.get(tr_data[8]))
                self.select_active_text(self._rolloff_combo_box,
                                        ROLL_OFF.get(tr_data[9]))
                self.select_active_text(self._pilot_combo_box,
                                        Pilot(tr_data[10]).name)
                self._tr_flag_entry.set_text(tr_data[7])
                if len(tr_data) > 12:
                    self._stream_id_entry.set_text(tr_data[11])
                    self._pls_code_entry.set_text(tr_data[12])
                    self.select_active_text(self._pls_mode_combo_box,
                                            PLS_MODE.get(tr_data[13]))
        elif tr_type is TrType.Cable:
            self.select_active_text(self._invertion_combo_box,
                                    Inversion(tr_data[2]).name)
            self.select_active_text(self._mod_combo_box,
                                    C_MODULATION.get(tr_data[3]))
            self.select_active_text(self._fec_combo_box,
                                    FEC_DEFAULT.get(tr_data[4]))
            self.select_active_text(self._sys_combo_box,
                                    SystemCable(tr_data[5]).name)
        elif tr_type is TrType.Terrestrial:
            self.select_active_text(self._fec_combo_box, T_FEC.get(tr_data[2]))
            self.select_active_text(self._rate_lp_combo_box,
                                    T_FEC.get(tr_data[3]))
            # Pol -> Bandwidth
            self.select_active_text(self._pol_combo_box,
                                    BANDWIDTH.get(tr_data[1]))
            self.select_active_text(self._mod_combo_box,
                                    T_MODULATION.get(tr_data[4]))
            # Transmission Mode -> Roll off
            self.select_active_text(self._rolloff_combo_box,
                                    TRANSMISSION_MODE.get(tr_data[5]))
            # GuardInterval -> Pilot
            self.select_active_text(self._pilot_combo_box,
                                    GUARD_INTERVAL.get(tr_data[6]))
            # Hierarchy -> Pls Mode
            self.select_active_text(self._pls_mode_combo_box,
                                    HIERARCHY.get(tr_data[7]))
            self.select_active_text(self._invertion_combo_box,
                                    Inversion(tr_data[8]).name)
            self.select_active_text(self._sys_combo_box,
                                    T_SYSTEM.get(tr_data[9]))
        # Should be called last to properly initialize the reference
        self._srv_type_entry.set_text(data[4])
 def init_transponder(self, transponder):
     self._freq_entry.set_text(transponder.frequency)
     self._rate_entry.set_text(transponder.symbol_rate)
     self._pol_box.set_active_id(transponder.polarization)
     self._fec_box.set_active_id(transponder.fec_inner)
     self._sys_box.set_active_id(transponder.system)
     self._mod_box.set_active_id(transponder.modulation)
     self._pls_mode_box.set_active_id(PLS_MODE.get(transponder.pls_mode, None))
     self._is_id_entry.set_text(transponder.is_id if transponder.is_id else "")
     self._pls_code_entry.set_text(transponder.pls_code if transponder.pls_code else "")
    def get_transponders_for_fly_sat(self, trs):
        """ Parsing transponders for FlySat """
        pls_pattern = re.compile("(PLS:)+ (Root|Gold|Combo)+ (\\d+)?")
        is_id_pattern = re.compile("(Stream) (\\d+)")
        pls_modes = {v: k for k, v in PLS_MODE.items()}
        n_trs = []

        if self._rows:
            zeros = "000"
            is_ids = []
            for r in self._rows:
                if len(r) == 1:
                    is_ids.extend(re.findall(is_id_pattern, r[0]))
                    continue
                if len(r) < 3:
                    continue
                data = r[2].split(" ")
                if len(data) != 2:
                    continue
                sr, fec = data
                data = r[1].split(" ")
                if len(data) < 3:
                    continue
                freq, pol, sys = data[0], data[1], data[2]
                sys = sys.split("/")
                if len(sys) != 2:
                    continue
                sys, mod = sys
                mod = "QPSK" if sys == "DVB-S" else mod

                pls = re.findall(pls_pattern, r[1])
                pls_code = None
                pls_mode = None

                if pls:
                    pls_code = pls[0][2]
                    pls_mode = pls_modes.get(pls[0][1], None)

                if is_ids:
                    tr = trs.pop()
                    for index, is_id in enumerate(is_ids):
                        tr = tr._replace(is_id=is_id[1])
                        if is_transponder_valid(tr):
                            n_trs.append(tr)
                else:
                    tr = Transponder(freq + zeros, sr + zeros, pol, fec, sys,
                                     mod, pls_mode, pls_code, None)
                    if is_transponder_valid(tr):
                        trs.append(tr)
                is_ids.clear()
            trs.extend(n_trs)
Beispiel #6
0
    def __init__(self,
                 source=SatelliteSource.FLYSAT,
                 entities=False,
                 separator=' '):

        HTMLParser.__init__(self)

        self._parse_html_entities = entities
        self._separator = separator
        self._is_td = False
        self._is_th = False
        self._is_provider = False
        self._current_row = []
        self._current_cell = []
        self._rows = []
        self._source = source
        self.pls_modes = {v: k for k, v in PLS_MODE.items()}
Beispiel #7
0
    def get_transponders_for_lyng_sat(self, trs):
        """ Parsing transponders for LyngSat """
        frq_pol_pattern = re.compile("(\\d{4,5})\\s+([RLHV]).*")
        sr_fec_pattern = re.compile("^(\\d{4,5})-(\\d/\\d)(.+PSK)?(.*)?$")
        sys_pattern = re.compile("(DVB-S[2]?) ?(PLS+ (Root|Gold|Combo)+ (\\d+))* ?(multistream stream (\\d+))?",
                                 re.IGNORECASE)
        zeros = "000"
        pls_modes = {v: k for k, v in PLS_MODE.items()}

        for r in filter(lambda x: len(x) > 8, self._rows):
            for frq in r[1], r[2], r[3]:
                freq = re.match(frq_pol_pattern, frq)
                if freq:
                    break
            if not freq:
                continue
            frq, pol = freq.group(1), freq.group(2)
            sr_fec = re.match(sr_fec_pattern, r[-3])
            if not sr_fec:
                continue
            sr, fec, mod = sr_fec.group(1), sr_fec.group(2), sr_fec.group(3)
            mod = mod.strip() if mod else "Auto"

            res = re.match(sys_pattern, r[-4])
            if not res:
                continue

            sys = res.group(1)
            pls_mode = res.group(3)
            pls_mode = pls_modes.get(pls_mode.capitalize(), None) if pls_mode else pls_mode
            pls_code = res.group(4)
            pls_id = res.group(6)

            tr = Transponder(frq + zeros, sr + zeros, pol, fec, sys, mod, pls_mode, pls_code, pls_id)
            if is_transponder_valid(tr):
                trs.append(tr)