Example #1
0
    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)
Example #2
0
    def get_transponders_for_fly_sat(self, trs):
        """ Parsing transponders for FlySat. """
        frq_pol_pattern = re.compile(
            r"(\d{4,5})+\s+([RLHV]).*(DVB-S[2]?)/(.+PSK)?.*")
        pls_pattern = re.compile(r".*PLS\s+(Root|Gold|Combo)+\s(\d+)?")
        is_id_pattern = re.compile(r"Stream\s(\d+)")
        sr_fec_pattern = re.compile(r"(\d{4,5})+\s+(\d+/\d+).*")
        n_trs = []

        if self._rows:
            is_ids = []
            for r in self._rows:
                row_len = len(r)
                if row_len == 1:
                    is_ids.extend(re.findall(is_id_pattern, r[0]))
                    continue
                if row_len < 12:
                    continue

                freq = re.findall(frq_pol_pattern, r[2])
                if not freq:
                    continue
                freq, pol, sys, mod = freq[0]

                sr_fec = re.match(sr_fec_pattern, r[3])
                if not sr_fec:
                    continue
                sr, fec = sr_fec.group(1), sr_fec.group(2)

                pls = re.match(pls_pattern, r[2])
                pls_code = None
                pls_mode = None
                if pls:
                    pls_mode = self.pls_modes.get(pls.group(1), None)
                    pls_code = pls.group(2)

                if is_ids:
                    tr = trs.pop()
                    for index, is_id in enumerate(is_ids):
                        tr = tr._replace(is_id=is_id)
                        if is_transponder_valid(tr):
                            n_trs.append(tr)

                tr = Transponder(f"{freq}000", f"{sr}000", pol, fec, sys, mod,
                                 pls_mode, pls_code, None, None)
                if is_transponder_valid(tr):
                    trs.append(tr)

                is_ids.clear()
            trs.extend(n_trs)
Example #3
0
    def get_transponders_for_lyng_sat(self, trs):
        """ Parsing transponders for LyngSat """
        frq_pol_pattern = re.compile("(\d{4,5}).*([RLHV])(.*\d$)")
        sr_fec_pattern = re.compile("^(\d{4,5})-(\d/\d)(.+PSK)?(.*)?$")
        sys_pattern = re.compile("(DVB-S[2]?)(.*)?")
        zeros = "000"
        for r in filter(lambda x: len(x) > 8, self._rows):
            freq = re.match(frq_pol_pattern, r[2])
            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"
            sys = re.match(sys_pattern, r[-4])
            if not sys:
                continue
            sys = sys.group(1)

            tr = Transponder(frq + zeros, sr + zeros, pol, fec, sys, mod, None,
                             None, None)
            if is_transponder_valid(tr):
                trs.append(tr)
Example #4
0
    def get_transponders_for_fly_sat(self, trs):
        """ Parsing transponders for FlySat """
        if self._rows:
            zeros = "000"
            for r in self._rows:
                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

                tr = Transponder(freq + zeros, sr + zeros, pol, fec, sys, mod,
                                 None, None, None)
                if is_transponder_valid(tr):
                    trs.append(tr)
Example #5
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(
            r"(DVB-S[2]?)\s+(.+PSK)?.*?(\d+)\s+(\d/\d)\s*(?:T2-MI\s+PLP\s+(\d+))?.*"
        )
        zeros = "000"
        pls_mode, pls_code, pls_id = None, None, None

        for row in filter(lambda x: len(x) > 8, self._rows):
            for frq in row[1], row[2], row[3]:
                freq = re.match(frq_pol_pattern, frq)
                if freq:
                    break
            if not freq:
                continue

            frq, pol = freq.group(1), freq.group(2)
            srf = " ".join(row[3:5])
            sr_fec = re.search(sr_fec_pattern, srf)
            if not sr_fec:
                continue

            sys, mod, sr, fec = sr_fec.group(1), sr_fec.group(2), sr_fec.group(
                3), sr_fec.group(4)
            mod = mod.strip() if mod else "Auto"
            pls_id = sr_fec.group(5)

            tr = Transponder(frq + zeros, sr + zeros, pol, fec, sys, mod,
                             pls_mode, pls_code, pls_id)
            if is_transponder_valid(tr):
                trs.append(tr)
Example #6
0
    def get_transponders_for_king_of_sat(self, trs):
        """ Getting transponders for KingOfSat source.

            Since the *.ini file contains incomplete information, it is not used.
        """
        zeros = "000"
        pos_pat = re.compile(r".*?(\d+\.\d°[EW]).*")
        pat = re.compile(
            r"(\d+).00\s+([RLHV])\s+(DVB-S[2]?)\s+(?:T2-MI, PLP (\d+)\s+)?(.*PSK).*?(?:Stream\s+(\d+))?\s+(\d+)\s+(\d+/\d+)$")

        for row in filter(lambda r: len(r) == 16 and pos_pat.match(r[0]), self._rows):
            res = pat.search(" ".join((row[0], row[2], row[3], row[8], row[9], row[10])))
            if res:
                freq, sr, pol, fec, sys = res.group(1), res.group(7), res.group(2), res.group(8), res.group(3)
                mod, pls_id, pls_code = res.group(5), res.group(4), res.group(6)

                tr = Transponder(freq + zeros, sr + zeros, pol, fec, sys, mod, None, pls_code, pls_id)
                if is_transponder_valid(tr):
                    trs.append(tr)
Example #7
0
    def get_transponders_for_king_of_sat(self, trs):
        """ Getting transponders for KingOfSat source.

            Since the *.ini file contains incomplete information, it is not used.
        """
        sys_pat = re.compile(
            r"(DVB-S[2]?)\s?(?:T2-MI,\s+PLP\s+(\d+))?.*?(?:PLS:\s+(Root|Gold|Combo)\+(\d+))?"
        )
        mod_pat = re.compile(r"(.*PSK).*?(?:.*Stream\s+(\d+))?.*")
        sr_fec_pattern = re.compile(r"(\d{4,5})+\s+(\d+/\d+).*")

        for row in filter(lambda r: len(r) == 16 and self.POS_PAT.match(r[0]),
                          self._rows):
            freq, pol = row[2].replace(".", "0"), row[3]
            if not freq.isdigit() or pol not in "VHLR":
                continue

            res = re.match(sys_pat, row[8])
            if not res:
                continue
            sys, t2_mi, pls_id, pls_code = res.group(1), res.group(
                2), res.group(3), res.group(4)
            pls_id = self.pls_modes.get(pls_id, None)

            res = re.match(mod_pat, row[9])
            if not res:
                continue
            mod, is_id = res.group(1), res.group(2)

            res = re.match(sr_fec_pattern, row[10])
            if not res:
                continue
            sr, fec = res.group(1), res.group(2)

            if t2_mi:
                log(f"Detected T2-MI transponder! [{freq} {sr} {pol}] ")

            tr = Transponder(freq, f"{sr}000", pol, fec, sys, mod, pls_id,
                             pls_code, is_id, None)
            if is_transponder_valid(tr):
                trs.append(tr)
Example #8
0
    def get_transponders_for_lyng_sat(self, trs):
        """ Parsing transponders for LyngSat. """
        frq_pol_pattern = re.compile(r"(\d{4,5})\s+([RLHV]).*")
        sr_fec_pattern = re.compile(
            (r"(DVB-S[2]?)\s+(.+PSK)?.*?(\d+)\s+(\d/\d)\s?"
             r"(?:T2-MI\s+PLP\s+(\d+))?.*"
             r"?(?:PLS\s+(Root|Gold|Combo)\s+(\d+))?"
             r"(?:.*Stream\s+(\d+))?.*"))

        for row in filter(lambda x: len(x) > 8, self._rows):
            for freq in row[1], row[2], row[3]:
                res = re.match(frq_pol_pattern, freq)
                if res:
                    break
            if not res:
                continue

            freq, pol = res.group(1), res.group(2)
            res = re.search(sr_fec_pattern, row[3])
            if not res:
                continue

            sys, mod, sr, fec = res.group(1), res.group(2), res.group(
                3), res.group(4)
            mod = mod.strip() if mod else "Auto"
            plp, pls_mode, pls_code, is_id = res.group(5), res.group(
                6), res.group(7), res.group(8)
            pls_mode = self.pls_modes.get(pls_mode, None)

            if plp is not None:
                log(f"Detected T2-MI transponder! [{freq} {sr} {pol}] ")

            tr = Transponder(f"{freq}000", f"{sr}000", pol, fec, sys, mod,
                             pls_mode, pls_code, is_id, None)
            if is_transponder_valid(tr):
                trs.append(tr)
Example #9
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)