diff --git a/core/videolibrarytools.py b/core/videolibrarytools.py
index fb3cceb4..7df20d64 100644
--- a/core/videolibrarytools.py
+++ b/core/videolibrarytools.py
@@ -7,6 +7,7 @@ import errno
import math
import traceback
import re
+import os
from core import filetools
from core import scraper
@@ -223,43 +224,71 @@ def save_movie(item):
return 0, 0, -1
def filter_list(episodelist, action=None, path=None):
- lang_sel = quality_sel = ''
+ lang_sel = quality_sel = show_title = channel =''
if action:
tvshow_path = filetools.join(path, "tvshow.nfo")
head_nfo, tvshow_item = read_nfo(tvshow_path)
channel = episodelist[0].channel
+ show_title = tvshow_item.infoLabels['tvshowtitle']
if not tvshow_item.channel_prefs:
tvshow_item.channel_prefs={channel:{}}
+
+ list_item = os.listdir(path)
+ for File in list_item:
+ if (File.endswith('.strm') or File.endswith('.json') or File.endswith('.nfo')) and not File == 'twshow.info':
+ os.remove(os.path.join(path, File))
if channel not in tvshow_item.channel_prefs:
tvshow_item.channel_prefs[channel] = {}
channel_prefs = tvshow_item.channel_prefs[channel]
-
+ logger.info(str(tvshow_item))
if action == 'get_seasons':
- if channel_prefs:
- if channel_prefs['favourite_language']:
- lang_sel = channel_prefs['favourite_language']
- if channel_prefs['favourite_quality']:
- quality_sel = channel_prefs['favourite_quality']
-
+ if 'favourite_language' not in channel_prefs:
+ channel_prefs['favourite_language'] = ''
+ if 'favourite_quality' not in channel_prefs:
+ channel_prefs['favourite_quality'] = ''
+ if channel_prefs['favourite_language']:
+ lang_sel = channel_prefs['favourite_language']
+ if channel_prefs['favourite_quality']:
+ quality_sel = channel_prefs['favourite_quality']
+ # if Download
+ if not show_title: show_title = episodelist[0].fulltitle
+ if not channel: channel= episodelist[0].channel
# SELECT EISODE BY LANG AND QUALITY
- quality_dict = {"N/A": ["n/a"],
- "BLURAY": ["br", "bluray"],
- "FULLHD": ["fullhd", "fullhd 1080", "fullhd 1080p", "full hd", "full hd 1080", "full hd 1080p", "hd1080", "hd1080p", "hd 1080", "hd 1080p", "1080", "1080p"],
- "HD": ["hd", "hd720", "hd720p", "hd 720", "hd 720p", "720", "720p", "hdtv"],
- "480P": ["sd", "480p", '480'],
- "360P": ["360p", "360"],
- "240P": ["240p", "240"],
- config.get_localized_string(70241):["MAX"]}
- quality_order = ["N/A", "240P", "360P","480P", "HD", "FULLHD", "BLURAY", config.get_localized_string(70241)]
+ quality_dict = {'N/A': ['n/a'],
+ 'BLURAY': ['br', 'bluray'],
+ 'FULLHD': ['fullhd', 'fullhd 1080', 'fullhd 1080p', 'full hd', 'full hd 1080', 'full hd 1080p', 'hd1080', 'hd1080p', 'hd 1080', 'hd 1080p', '1080', '1080p'],
+ 'HD': ['hd', 'hd720', 'hd720p', 'hd 720', 'hd 720p', '720', '720p', 'hdtv'],
+ '480P': ['sd', '480p', '480'],
+ '360P': ['360p', '360'],
+ '240P': ['240p', '240'],
+ 'MAX':['MAX']}
+ quality_order = ['N/A', '240P', '360P','480P', 'HD', 'FULLHD', 'BLURAY', 'MAX']
+
- ep_list = []
lang_list = []
- quality_list = [config.get_localized_string(70241)]
-
- # Make lang_list and Quality_list
+ sub_list = []
+ quality_list = ['MAX']
+ # Make Language List
+ for episode in episodelist:
+ if episode.contentLanguage and episode.contentLanguage not in lang_list:
+ # Make list of subtitled languages
+ if 'sub' in episode.contentLanguage.lower():
+ sub = re.sub('Sub-','', episode.contentLanguage)
+ if sub not in sub_list: sub_list.append(sub)
+ else:
+ lang_list.append(episode.contentLanguage)
+ # add to Language List subtitled languages
+ if sub_list:
+ for sub in sub_list:
+ if sub in lang_list:
+ lang_list.insert(lang_list.index(sub) + 1, 'Sub-' + sub)
+ lang_list.insert(lang_list.index(sub) + 2, sub + ' + Sub-' + sub)
+ else:
+ lang_list.append('Sub-' + sub)
+
+ # Make Quality List
for episode in episodelist:
- if episode.contentLanguage and episode.contentLanguage not in lang_list: lang_list.append(episode.contentLanguage)
for name, var in quality_dict.items():
if not episode.quality and 'N/A' not in quality_list:
quality_list.append('N/A')
@@ -269,17 +298,34 @@ def filter_list(episodelist, action=None, path=None):
# if more than one language
if len(lang_list) > 1:
- selection = lang_list.index(lang_sel) if lang_sel else platformtools.dialog_select(config.get_localized_string(70725),lang_list)
+ selection = lang_list.index(lang_sel) if lang_sel else platformtools.dialog_select(config.get_localized_string(70725) % (show_title, channel),lang_list)
+ if action: lang_sel = channel_prefs['favourite_language'] = lang_list[selection]
+ langs = lang_list[selection].split(' + ')
+
+ ep_list = []
+ count = 0
+ stop = False
+ while not stop:
+ for episode in episodelist:
+ title = scrapertools.find_single_match(episode.title, '(\d+x\d+)')
+ if not any(title in word for word in ep_list) and episode.contentLanguage == langs[count]:
+ ep_list.append(episode.title)
+ if count < len(langs)-1: count += 1
+ else: stop = True
it = []
for episode in episodelist:
- if episode.contentLanguage == lang_list[selection]:
- if action: lang_sel = channel_prefs['favourite_language'] = lang_list[selection]
+ if episode.title in ep_list:
it.append(episode)
episodelist = it
+ else: channel_prefs['favourite_language'] = ''
+
# if more than one quality
if len(quality_list) > 2:
- selection = favourite_quality_selection = quality_list.index(quality_sel) if quality_sel else platformtools.dialog_select(config.get_localized_string(70726),quality_list)
+ if config.get_setting('videolibrary_max_quality'): selection = favourite_quality_selection = len(quality_list)-1
+ else: selection = favourite_quality_selection = quality_list.index(quality_sel) if quality_sel else platformtools.dialog_select(config.get_localized_string(70726) % (show_title, channel) ,quality_list)
+
+ ep_list = []
stop = False
while not stop:
for episode in episodelist:
@@ -301,6 +347,8 @@ def filter_list(episodelist, action=None, path=None):
it.append(episode)
episodelist = it
+ else:channel_prefs['favourite_quality'] = ''
+
if action: filetools.write(tvshow_path, head_nfo + tvshow_item.tojson())
return episodelist
diff --git a/resources/language/English/strings.po b/resources/language/English/strings.po
index 9d3ddb1e..f3b6adf2 100644
--- a/resources/language/English/strings.po
+++ b/resources/language/English/strings.po
@@ -5618,11 +5618,11 @@ msgid "Channel"
msgstr ""
msgctxt "#70725"
-msgid "Select the language"
+msgid "Select the language of [B]%s[/B] in [B]%s[/B]"
msgstr ""
msgctxt "#70726"
-msgid "Seleziona la qualità"
+msgid "Select the preferred quality of [B]%s[/B] in [B]%s[/B]"
msgstr ""
msgctxt "#70727"
@@ -5632,3 +5632,7 @@ msgstr ""
msgctxt "#70728"
msgid "Include in Global Search"
msgstr ""
+
+msgctxt "#70729"
+msgid "Always add the highest quality"
+msgstr ""
diff --git a/resources/language/Italian/strings.po b/resources/language/Italian/strings.po
index 9225fe30..1a393788 100644
--- a/resources/language/Italian/strings.po
+++ b/resources/language/Italian/strings.po
@@ -5618,12 +5618,12 @@ msgid "Channel"
msgstr "Canale"
msgctxt "#70725"
-msgid "Select the language"
-msgstr "Seleziona la lingua"
+msgid "Select the language of [B]%s[/B] in [B]%s[/B]"
+msgstr "Seleziona la lingua di [B]%s[/B] su [B]%s[/B]"
msgctxt "#70726"
-msgid "Seleziona la qualità"
-msgstr "Select the quality"
+msgid "Select the preferred quality of [B]%s[/B] in [B]%s[/B]"
+msgstr "Seleziona la qualità preferita di [B]%s[/B] su [B]%s[/B]"
msgctxt "#70727"
msgid "Include in News"
@@ -5632,3 +5632,7 @@ msgstr "Includi in Novità"
msgctxt "#70728"
msgid "Include in Global Search"
msgstr "Includi in Ricerca Globale"
+
+msgctxt "#70729"
+msgid "Always add the highest quality"
+msgstr "Aggiungi sempre la qualità più alta"
diff --git a/resources/settings.xml b/resources/settings.xml
index 8b7541f5..d5bf0175 100644
--- a/resources/settings.xml
+++ b/resources/settings.xml
@@ -44,16 +44,18 @@
-
+
+
-
+
+