From d9e2283116110c9de7b6d4746c3c615d00d5aa0f Mon Sep 17 00:00:00 2001 From: Alhaziel01 Date: Sat, 6 Jun 2020 18:09:53 +0200 Subject: [PATCH] =?UTF-8?q?=20-=20Fix=20Blacklist=20=20-=20Aggiunta=20opzi?= =?UTF-8?q?one=20Priorit=C3=A0=20alla=20qualit=C3=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resource.language.en_gb/strings.po | 4 +++ .../resource.language.it_it/strings.po | 4 +++ resources/settings.xml | 1 + specials/autoplay.py | 29 ++++++++++++++++++- specials/setting.py | 19 ++++++++---- 5 files changed, 51 insertions(+), 6 deletions(-) diff --git a/resources/language/resource.language.en_gb/strings.po b/resources/language/resource.language.en_gb/strings.po index 14ff4e04..207401c2 100644 --- a/resources/language/resource.language.en_gb/strings.po +++ b/resources/language/resource.language.en_gb/strings.po @@ -223,6 +223,10 @@ msgctxt "#30068" msgid "Filter by servers" msgstr "" +msgctxt "#30069" +msgid "Priority to quality" +msgstr "" + msgctxt "#30100" msgid "Settings" msgstr "" diff --git a/resources/language/resource.language.it_it/strings.po b/resources/language/resource.language.it_it/strings.po index da8273c8..bc82d952 100644 --- a/resources/language/resource.language.it_it/strings.po +++ b/resources/language/resource.language.it_it/strings.po @@ -223,6 +223,10 @@ msgctxt "#30068" msgid "Filter by servers" msgstr "Filtra per server" +msgctxt "#30069" +msgid "Priority to quality" +msgstr "Priorità alla qualità" + msgctxt "#30100" msgid "Settings" msgstr "Impostazioni" diff --git a/resources/settings.xml b/resources/settings.xml index ae460786..00d413bb 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -66,6 +66,7 @@ + diff --git a/specials/autoplay.py b/specials/autoplay.py index bf94547b..d4e9eb0e 100644 --- a/specials/autoplay.py +++ b/specials/autoplay.py @@ -108,10 +108,14 @@ def start(itemlist, item): if 'server' not in item: continue + if item.server.lower() in blacklisted_servers: + continue + # If it does not have a defined quality, it assigns a 'default' quality. if item.quality == '': item.quality = 'default' # The list for custom settings is created + if priority < 2: # 0: Servers and qualities or 1: Qualities and servers # if the server and the quality are not in the favorites lists or the url is repeated, we discard the item @@ -152,15 +156,38 @@ def start(itemlist, item): # If the item reaches here we add it to the list of valid urls and to autoplay_list url_list_valid.append(item.url) item.plan_b=True + autoplay_elem['videoitem'] = item autoplay_list.append(autoplay_elem) # We order according to priority - if priority == 0: autoplay_list.sort(key=lambda orden: (orden['indice_server'], orden['indice_quality'])) # Servers and qualities + if priority == 0: autoplay_list.sort(key=lambda orden: (orden['indice_quality'], orden['indice_server'])) # Servers and qualities elif priority == 1: autoplay_list.sort(key=lambda orden: (orden['indice_quality'], orden['indice_server'])) # Qualities and servers elif priority == 2: autoplay_list.sort(key=lambda orden: (orden['indice_server'])) # Servers only elif priority == 3: autoplay_list.sort(key=lambda orden: (orden['indice_quality'])) # Only qualities + # if quality priority is active + if priority == 0 and config.get_setting('quality_priority'): + max_quality = autoplay_list[0]["indice_quality"] + for n, item in enumerate(itemlist): + if 'server' not in item: + continue + + if item.server.lower() in blacklisted_servers: + continue + + # If it does not have a defined quality, it assigns a 'default' quality. + if item.quality == '': + item.quality = 'default' + + if favorite_quality.index(item.quality.lower()) < max_quality: + item.type_b = False + autoplay_elem["indice_server"] = n + autoplay_elem["indice_quality"] = favorite_quality.index(item.quality.lower()) + autoplay_elem['videoitem'] = item + autoplay_list.append(autoplay_elem) + autoplay_list.sort(key=lambda orden: (orden['indice_quality'], orden['indice_server'])) + # Plan b is prepared, in case it is active the non-favorite elements are added at the end try: plan_b = settings_node['plan_b'] except: plan_b = True diff --git a/specials/setting.py b/specials/setting.py index 807cab8f..427729b1 100644 --- a/specials/setting.py +++ b/specials/setting.py @@ -348,12 +348,19 @@ def servers_favorites(item): dict_values = {} list_controls = [{'id': 'favorites_servers', - 'type': "bool", + 'type': 'bool', 'label': config.get_localized_string(60577), 'default': False, 'enabled': True, + 'visible': True}, + {'id': 'quality_priority', + 'type': 'bool', + 'label': config.get_localized_string(30069), + 'default': False, + 'enabled': 'eq(-1,True)', 'visible': True}] dict_values['favorites_servers'] = config.get_setting('favorites_servers') + dict_values['quality_priority'] = config.get_setting('quality_priority') if dict_values['favorites_servers'] == None: dict_values['favorites_servers'] = False @@ -368,15 +375,15 @@ def servers_favorites(item): orden = config.get_setting("favorites_servers_list", server=server) if orden > 0: - dict_values[orden] = len(server_names) - 1 + dict_values[orden] = len(server_names) - 2 - for x in range(1, 11): + for x in range(2, 12): control = {'id': x, - 'type': "list", + 'type': 'list', 'label': config.get_localized_string(60597) % x, 'lvalues': server_names, 'default': 0, - 'enabled': "eq(-%s,True)" % x, + 'enabled': 'eq(-%s,True)' % x, 'visible': True} list_controls.append(control) @@ -392,6 +399,8 @@ def cb_servers_favorites(server_names, dict_values): for i, v in list(dict_values.items()): if i == "favorites_servers": config.set_setting("favorites_servers", v) + if i == "quality_priority": + config.set_setting("quality_priority", v) elif int(v) > 0: dict_name[server_names[v]] = int(i)