Commit e0c8d634 authored by echel0n's avatar echel0n

Merge branch '9.4.119'

parents 2ebd7fc5 30e8a1b7
# Changelog
- * edc07c8d7 - 2019-07-11: Resolved issue for saving custom qualities, black/white lists, and scene exceptions.
- * 2084c5190 - 2019-07-11: Fixed issue `self[klass().id] = klass() TypeError: 'NoneType' object is not callable`
- * 3b88e82e0 - 2019-07-11: Resolves `can't concat str to bytes` in sickrage.providers in _get_season_search_strings
- * 63354dce5 - 2019-07-10: Release v9.4.118
- * f472dcac4 - 2019-07-10: Resolved issues with BTN Torrent provider.
- * f6fce2766 - 2019-07-10: Places search result from indexer into list object if returned as dict.
- * 9c3a3c04f - 2019-07-10: Resolved sqlite3.IntegrityError: NOT NULL constraint failed: history.release_group
......
......@@ -50,9 +50,7 @@ def indexerImage(id=None, which=None):
image_type = which[0:6]
if image_type not in ('fanart', 'poster', 'banner'):
sickrage.app.log.error(
"Invalid image type " + str(image_type) + ", couldn't find it in the " + IndexerApi(
INDEXER_TVDB).name + " object")
sickrage.app.log.error("Invalid image type " + str(image_type) + ", couldn't find it in the " + IndexerApi(INDEXER_TVDB).name + " object")
return
try:
......@@ -82,5 +80,4 @@ def indexerImage(id=None, which=None):
elif image_type == 'poster':
return Poster(int(id), media_format)
except (indexer_error, IOError) as e:
sickrage.app.log.warning("{}: Unable to look up show on ".format(id) + IndexerApi(
INDEXER_TVDB).name + ", not downloading images: {}".format(e))
sickrage.app.log.warning("{}: Unable to look up show on ".format(id) + IndexerApi(INDEXER_TVDB).name + ", not downloading images: {}".format(e))
......@@ -713,7 +713,7 @@ class PipUpdateManager(UpdateManager):
def _find_installed_version(self):
out, __, exit_status = self._pip_cmd(self._pip3_path, 'show sickrage')
if exit_status == 0:
return out.split('\n')[1].split()[1]
return out.split(b'\n')[1].split()[1]
return ""
def need_update(self):
......
......@@ -1024,9 +1024,9 @@ class EditShowHandler(BaseHandler, ABC):
async def post(self, *args, **kwargs):
show = self.get_argument('show')
location = self.get_argument('location', None)
any_qualities = self.get_argument('anyQualities', '')
best_qualities = self.get_argument('bestQualities', '')
exceptions_list = self.get_argument('exceptions_list', '')
any_qualities = self.get_arguments('anyQualities')
best_qualities = self.get_arguments('bestQualities')
exceptions_list = self.get_arguments('exceptions_list')
flatten_folders = self.get_argument('flatten_folders', None)
paused = self.get_argument('paused', None)
direct_call = bool(self.get_argument('directCall', None))
......@@ -1084,10 +1084,6 @@ class EditShowHandler(BaseHandler, ABC):
else:
do_update_scene_numbering = True
any_qualities = any_qualities.split(',') if len(any_qualities) else []
best_qualities = best_qualities.split(',') if len(best_qualities) else []
exceptions_list = exceptions_list.split(',') if len(exceptions_list) else []
show_obj.paused = paused
show_obj.scene = scene
show_obj.anime = anime
......
......@@ -28,7 +28,7 @@
</div>
<div class="row">
<div class="col-md-12">
<select id="white" multiple="multiple" size="12" title="white">
<select id="white" multiple="multiple" size="12" title="white" style="min-width:200px;height:99px;">
% for keyword in whitelist:
<option value="${keyword}">${keyword}</option>
% endfor
......@@ -49,7 +49,7 @@
</div>
<div class="row">
<div class="col-md-12">
<select id="pool" multiple="multiple" size="12" title="pool">
<select id="pool" multiple="multiple" size="12" title="pool" style="min-width:200px;height:99px;">
% for group in groups:
% if group['name'] not in whitelist and group['name'] not in blacklist:
<option value="${group['name']}">${group['name']} | ${group['rating']}
......@@ -74,7 +74,7 @@
</div>
<div class="row">
<div class="col-md-12">
<select id="black" multiple="multiple" size="12" title="black">
<select id="black" multiple="multiple" size="12" title="black" style="min-width:200px;height:99px;">
% for keyword in blacklist:
<option value="${keyword}">${keyword}</option>
% endfor
......
......@@ -30,8 +30,8 @@ class ResponseResolver:
@staticmethod
def parse(data):
resline = data.split('\n', 1)[0]
lines = data.split('\n')[1:-1]
resline = data.split(b'\n', 1)[0]
lines = data.split(b'\n')[1:-1]
rescode, resstr = resline.split(' ', 1)
if rescode[0] == 'T':
......@@ -42,7 +42,7 @@ class ResponseResolver:
datalines = []
for line in lines:
datalines.append(line.split('|'))
datalines.append(line.split(b'|'))
return restag, rescode, resstr, datalines
......
......@@ -876,8 +876,10 @@ class MetadataProviders(dict):
for name in names:
if not name:
continue
klass = self._get_klass(name.group(1))
self[klass().id] = klass()
if klass:
self[klass().id] = klass()
@staticmethod
def _get_klass(name):
......
......@@ -106,8 +106,10 @@ class NotifierProviders(dict):
for name in names:
if not name:
continue
klass = self._get_klass(name.group(1))
self[klass().id] = klass()
if klass:
self[klass().id] = klass()
@staticmethod
def _get_klass(name):
......
......@@ -158,7 +158,7 @@ class GenericProvider(object):
episode_object = show_object.get_episode(season, episode)
for show_name in all_possible_show_names(show_id, episode_object.scene_season):
episode_string = show_name + ' '
episode_string = "{}{}".format(show_name, self.search_separator)
if show_object.air_by_date or show_object.sports:
episode_string += str(episode_object.airdate).split('-')[0]
......
9.4.118
\ No newline at end of file
9.4.119
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment