diff --git a/app/tools/satellites.py b/app/tools/satellites.py index e9a6b665..f2931b7a 100644 --- a/app/tools/satellites.py +++ b/app/tools/satellites.py @@ -203,14 +203,16 @@ class SatellitesParser(HTMLParser): self._rows.clear() url = "https://www.flysat.com/" + sat_url if self._source is SatelliteSource.FLYSAT else sat_url request = requests.get(url=url, headers=_HEADERS) - reason = request.reason + trs = [] - if reason == "OK": + if request.status_code == 200: self.feed(request.text) if self._source is SatelliteSource.FLYSAT: self.get_transponders_for_fly_sat(trs) elif self._source is SatelliteSource.LYNGSAT: self.get_transponders_for_lyng_sat(trs) + else: + log("SatellitesParser [get transponders] error: {} {}".format(url, request.reason)) return sorted(trs, key=lambda x: int(x.frequency)) @@ -266,37 +268,29 @@ class SatellitesParser(HTMLParser): trs.extend(n_trs) def get_transponders_for_lyng_sat(self, trs): - """ Parsing transponders for LyngSat """ + """ 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) + 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_modes = {v: k for k, v in PLS_MODE.items()} + pls_mode, pls_code, pls_id = None, None, None - for r in filter(lambda x: len(x) > 8, self._rows): - for frq in r[1], r[2], r[3]: + 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) - sr_fec = re.match(sr_fec_pattern, r[-3]) + srf = " ".join(row[3:5]) + sr_fec = re.search(sr_fec_pattern, srf) if not sr_fec: continue - sr, fec, mod = sr_fec.group(1), sr_fec.group(2), sr_fec.group(3) + + 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" - - 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) + 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): diff --git a/app/ui/satellites_dialog.glade b/app/ui/satellites_dialog.glade index 1e83d9cf..e6883c0e 100644 --- a/app/ui/satellites_dialog.glade +++ b/app/ui/satellites_dialog.glade @@ -427,12 +427,12 @@ Author: Dmitriy Yefremov True False Satellites edit tool - 1 True True False + 2 True @@ -1370,7 +1370,6 @@ Author: Dmitriy Yefremov True False Satellites update - 2 True @@ -1440,6 +1439,7 @@ Author: Dmitriy Yefremov True False + 2 False @@ -2068,6 +2068,8 @@ Author: Dmitriy Yefremov True True False + 5 + 5