diff --git a/app/eparser/__init__.py b/app/eparser/__init__.py index 27176511..7a42caa0 100644 --- a/app/eparser/__init__.py +++ b/app/eparser/__init__.py @@ -29,7 +29,7 @@ from app.commons import run_task from app.settings import SettingsType from .ecommons import Service, Satellite, Transponder, Bouquet, Bouquets, is_transponder_valid from .enigma.blacklist import get_blacklist, write_blacklist -from .enigma.bouquets import to_bouquet_id, BouquetsWriter, BouquetsReader +from .enigma.bouquets import BouquetsWriter, BouquetsReader from .enigma.lamedb import get_services as get_enigma_services, write_services as write_enigma_services from .iptv import parse_m3u from .neutrino.bouquets import get_bouquets as get_neutrino_bouquets, write_bouquets as write_neutrino_bouquets diff --git a/app/eparser/enigma/bouquets.py b/app/eparser/enigma/bouquets.py index ad6cd2b7..e3a26f10 100644 --- a/app/eparser/enigma/bouquets.py +++ b/app/eparser/enigma/bouquets.py @@ -138,11 +138,10 @@ class BouquetsWriter: bouquet.append(self._ALT.format(f_name)) self.write_bouquet(f"{p.parent}/{f_name}", srv.service, services) else: - data = to_bouquet_id(srv) if srv.service: - bouquet.append(f"#SERVICE {data}:{srv.service}\n#DESCRIPTION {srv.service}\n") + bouquet.append(f"#SERVICE {srv.fav_id}:{srv.service}\n#DESCRIPTION {srv.service}\n") else: - bouquet.append(f"#SERVICE {data}\n") + bouquet.append(f"#SERVICE {srv.fav_id}\n") with open(path, "w", encoding="utf-8", newline="\n") as file: file.writelines(bouquet) @@ -300,23 +299,14 @@ class BouquetsReader: desc = desc.lstrip(":").strip() if desc else srv_data[-1].strip() services.append(BouquetService(desc, BqServiceType.IPTV, srv, num)) else: - fav_id = f"{srv_data[3]}:{srv_data[4]}:{srv_data[5]}:{srv_data[6]}" + fav_id = srv.strip().upper() name = None if data_len == 12: name, sep, desc = str(srv_data[-1]).partition("\n#DESCRIPTION") - services.append(BouquetService(name, BqServiceType.DEFAULT, fav_id.upper(), num)) + services.append(BouquetService(name, BqServiceType.DEFAULT, fav_id, num)) return bq_name.lstrip("#NAME").strip(), services -def to_bouquet_id(srv): - """ Creates bouquet channel id. """ - data_type = srv.data_id - if data_type and len(data_type) > 4: - data_type = int(srv.data_id.split(":")[4]) - - return "{}:0:{:X}:{}:0:0:0:".format(1, data_type, srv.fav_id) - - if __name__ == "__main__": pass diff --git a/app/eparser/enigma/lamedb.py b/app/eparser/enigma/lamedb.py index d69e19ef..f2e2c33f 100644 --- a/app/eparser/enigma/lamedb.py +++ b/app/eparser/enigma/lamedb.py @@ -171,15 +171,14 @@ class LameDbReader: ssid = str(data[0]).lstrip(sp).upper() onid = str(data[1]).lstrip(sp).upper() # For comparison in bouquets. Needed in upper case!!! - fav_id = f"{ssid}:{tid}:{nid}:{onid}" + fav_id = f"1:0:{srv_type:X}:{ssid}:{tid}:{nid}:{onid}:0:0:0:" picon_id = f"1_0_{srv_type:X}_{ssid}_{tid}_{nid}_{onid}_0_0_0.png" - s_id = f"1:0:{srv_type:X}:{ssid}:{tid}:{nid}:{onid}:0:0:0:" all_flags = srv[2].split(",") coded = CODED_ICON if list(filter(lambda x: x.startswith("C:"), all_flags)) else None flags = list(filter(lambda x: x.startswith("f:"), all_flags)) hide = HIDE_ICON if flags and Flag.is_hide(Flag.parse(flags[0])) else None - locked = LOCKED_ICON if s_id in blacklist else None + locked = LOCKED_ICON if fav_id in blacklist else None package = list(filter(lambda x: x.startswith("p:"), all_flags)) package = package[0][2:] if package else "" diff --git a/app/tools/satellites.py b/app/tools/satellites.py index 1eae0648..6b33d318 100644 --- a/app/tools/satellites.py +++ b/app/tools/satellites.py @@ -767,7 +767,7 @@ class ServicesParser(HTMLParser): def get_service_data(s_type, pkg, sid, tid, nid, namespace, v_pid, a_pid, cas, use_pids=False): sid = int(sid) data_id = f"{sid:04x}:{namespace}:{tid:04x}:{nid:04x}:{s_type}:0:0" - fav_id = f"{sid}:{tid}:{nid}:{namespace}" + fav_id = f"1:0:{int(s_type):X}:{sid}:{tid}:{nid}:{namespace}:0:0:0:" picon_id = f"1_0_{int(s_type):X}_{sid}_{tid}_{nid}_{namespace}_0_0_0.png" # Flags. flags = f"p:{pkg}" diff --git a/app/ui/main_helper.py b/app/ui/main_helper.py index b6af17b8..115fdf40 100644 --- a/app/ui/main_helper.py +++ b/app/ui/main_helper.py @@ -49,7 +49,7 @@ from gi.repository import GdkPixbuf, GLib, Gio from app.eparser import Service from app.eparser.ecommons import Flag, BouquetService, Bouquet, BqType -from app.eparser.enigma.bouquets import BqServiceType, to_bouquet_id +from app.eparser.enigma.bouquets import BqServiceType from app.settings import SettingsType, SEP, IS_WIN, IS_DARWIN, IS_LINUX from .dialogs import show_dialog, DialogType, translate from .uicommons import ViewTarget, BqGenType, Gtk, Gdk, HIDE_ICON, LOCKED_ICON, KeyboardKey, Column @@ -294,7 +294,7 @@ def set_lock(blacklist, services, model, paths, target, services_model): fav_id = model.get_value(itr, Column.SRV_FAV_ID if target is ViewTarget.SERVICES else Column.FAV_ID) srv = services.get(fav_id, None) if srv and srv.service_type not in skip_type: - bq_id = srv.data_id if srv.service_type == BqServiceType.IPTV.name else to_bouquet_id(srv) + bq_id = srv.data_id if srv.service_type == BqServiceType.IPTV.name else srv.fav_id if not bq_id: continue blacklist.discard(bq_id) if locked else blacklist.add(bq_id) diff --git a/app/ui/service_details_dialog.py b/app/ui/service_details_dialog.py index 5e7b021a..d492dfc8 100644 --- a/app/ui/service_details_dialog.py +++ b/app/ui/service_details_dialog.py @@ -47,7 +47,7 @@ _UI_PATH = UI_RESOURCES_PATH + "service_details_dialog.glade" class ServiceDetailsDialog: _ENIGMA2_DATA_ID = "{:04x}:{:08x}:{:04x}:{:04x}:{}:{}" - _ENIGMA2_FAV_ID = "{:X}:{:X}:{:X}:{:X}" + _ENIGMA2_FAV_ID = "1:0:{}{:X}:{:X}:{:X}:{:X}:0:0:0:" _ENIGMA2_TRANSPONDER_DATA = "{} {}:{}:{}:{}:{}:{}:{}" @@ -593,7 +593,7 @@ class ServiceDetailsDialog: if self._s_type is SettingsType.ENIGMA_2: namespace = int(self._namespace_entry.get_text()) data_id = self._ENIGMA2_DATA_ID.format(ssid, namespace, tr_id, net_id, service_type, 0) - fav_id = self._ENIGMA2_FAV_ID.format(ssid, tr_id, net_id, namespace) + fav_id = f"{self._reference_label.get_text()}:" return fav_id, data_id elif self._s_type is SettingsType.NEUTRINO_MP: data = get_attributes(self._old_service.data_id)