From b6e73e5e7adeffaf1723995c9e5515406fd7f510 Mon Sep 17 00:00:00 2001 From: DYefremov Date: Tue, 26 Nov 2024 21:08:09 +0300 Subject: [PATCH] pos sort for picons downloader --- app/ui/main_helper.py | 5 ++++- app/ui/picons.py | 11 ++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/ui/main_helper.py b/app/ui/main_helper.py index 115fdf40..6c3914e3 100644 --- a/app/ui/main_helper.py +++ b/app/ui/main_helper.py @@ -819,7 +819,10 @@ def get_pos_num(pos): if len(pos) > 1: m = -1 if pos[-1] == "W" else 1 - return float(pos[:-1]) * m + try: + return float(pos[:-1]) * m + except ValueError: + return -183 return -181.0 if pos == "T" else -182.0 diff --git a/app/ui/picons.py b/app/ui/picons.py index 74a2f462..0b06a38b 100644 --- a/app/ui/picons.py +++ b/app/ui/picons.py @@ -44,7 +44,7 @@ from app.tools.picons import (PiconsParser, parse_providers, Provider, convert_t from app.tools.satellites import SatellitesParser, SatelliteSource from .dialogs import show_dialog, DialogType, translate, get_builder, get_chooser_dialog from .main_helper import (scroll_to, on_popup_menu, get_base_model, set_picon, get_picon_pixbuf, get_picon_dialog, - get_picon_file_name, get_pixbuf_from_data, get_pixbuf_at_scale) + get_picon_file_name, get_pixbuf_from_data, get_pixbuf_at_scale, get_pos_num) from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, TV_ICON, Column, KeyboardKey, Page, ViewTarget @@ -680,7 +680,7 @@ class PiconManager(Gtk.Box): model.clear() try: - for sat in sorted(sats): + for sat in sorted(sats, key=lambda s: get_pos_num(s[1]), reverse=True): pos = sat[1] name = f"{sat[0]} ({pos})" if is_filter and pos not in self._sat_positions: @@ -825,9 +825,10 @@ class PiconManager(Gtk.Box): services = self._app.current_services ids = set() - for s in (services.get(fav_id) for fav_id in fav_bouquet): - ids.add(s.picon_id) - ids.add(get_picon_file_name(s.service)) + for s in (services.get(fav_id, None) for fav_id in fav_bouquet): + if s: + ids.add(s.picon_id) + ids.add(get_picon_file_name(s.service)) return ids def process_provider(self, prv, picons_path):