From ce6819d539ea3e8ea897b63f0e0494a8ff5769ea Mon Sep 17 00:00:00 2001 From: DYefremov Date: Thu, 19 Dec 2024 00:38:55 +0300 Subject: [PATCH] file naming for oscam picon converter --- app/tools/picons.py | 37 +++++++++++++++++++++++-------------- app/ui/picons.py | 2 +- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/app/tools/picons.py b/app/tools/picons.py index 8fa9315e..8d217e1e 100644 --- a/app/tools/picons.py +++ b/app/tools/picons.py @@ -514,8 +514,9 @@ def download_picon(src_url, dest_path): err_msg = f"Saving picon [{dest_path}] error: {e}" log(err_msg) + @run_task -def convert_to(src_path, dest_path, p_format, ids=None, done_callback=None): +def convert_to(src_path, dest_path, p_format, ids=None, services=None, done_callback=None): """ Converts format [names] of picons. Copies resulting files from src to dest and writes state to callback. @@ -532,7 +533,7 @@ def convert_to(src_path, dest_path, p_format, ids=None, done_callback=None): if p_format is PiconFormat.NEUTRINO: convert_to_neutrino(to_convert, dest_path) elif p_format is PiconFormat.OSCAM: - convert_to_oscam(to_convert, dest_path) + convert_to_oscam(to_convert, dest_path, services) if done_callback: done_callback() @@ -547,7 +548,7 @@ def convert_to_neutrino(files, dest_path): shutil.copyfile(file, dest) -def convert_to_oscam(files, dest_path): +def convert_to_oscam(files, dest_path, services): if not files: return @@ -558,15 +559,20 @@ def convert_to_oscam(files, dest_path): from PIL import Image for base_name, file in files: - sid = base_name - caid = "0000" - data = base_name.split("_") - - if len(data): - sid = data[3].rjust(4, "0") - - dest_file = f"{dest_path}{os.sep}IC_{caid}_{sid}.tpl" - log(f'Converting "{base_name}" to "{dest_file}"') + to_convert = [] + srv = services.get(base_name, None) + if srv: + sid, flags = srv.ssid, srv.flags_cas + if flags: + cas = list(map(lambda c: c.lstrip("C:"), filter(lambda x: x.startswith("C:"), flags.split(",")))) + if cas: + [to_convert.append(f"{dest_path}{os.sep}IC_{c.upper()}_{sid.upper()}.tpl") for c in cas] + else: + to_convert.append(f"{dest_path}{os.sep}{base_name}.tpl") + else: + to_convert.append(f"{dest_path}{os.sep}{base_name}.tpl") + else: + to_convert.append(f"{dest_path}{os.sep}{base_name}.tpl") image = Image.open(file) image.thumbnail((100, 60)) @@ -575,8 +581,11 @@ def convert_to_oscam(files, dest_path): image.save(buff, format="PNG") data_bytes = b"data:image/png;base64," + base64.b64encode(buff.getvalue()) - with open(dest_file, "wb") as f: - f.write(data_bytes) + for dest_file in to_convert: + log(f'Converting "{base_name}" to "{dest_file}"') + + with open(dest_file, "wb") as f: + f.write(data_bytes) if __name__ == "__main__": diff --git a/app/ui/picons.py b/app/ui/picons.py index 703def37..9a8c5b55 100644 --- a/app/ui/picons.py +++ b/app/ui/picons.py @@ -1023,7 +1023,7 @@ class PiconManager(Gtk.Box): services = self._app.current_services ids = {services.get(s).picon_id for s in self._app.current_bouquets.get(bq_selected) if s in services} - convert_to(src_path=picons_path, dest_path=save_path, p_format=p_format, ids=ids, + convert_to(src_path=picons_path, dest_path=save_path, p_format=p_format, ids=ids, services=self._services, done_callback=lambda: self.show_info_message(translate("Done!"), Gtk.MessageType.INFO)) @run_idle