Browse Source

Fix enable "Perform search tasks" at config/Media Providers/Options for custom RSS.

Fix remove enable_scheduled_backlog as it is not appropriate for custom RSS.
Fix if no anime release group parsed, provider id is used to prevent skipping result.
Fix if no anime season is parsed, assume season 1 to prevent skipping result.
Change add some anime quality recognition to assist search.
tags/release_0.22.4^2
JackDandy 5 years ago
parent
commit
5b14b6eac7
  1. 11
      CHANGES.md
  2. 3
      sickbeard/common.py
  3. 13
      sickbeard/name_parser/parser.py
  4. 10
      sickbeard/providers/__init__.py
  5. 2
      sickbeard/providers/generic.py
  6. 16
      sickbeard/providers/rsstorrent.py

11
CHANGES.md

@ -1,4 +1,13 @@
### 0.22.3 (2020-10-14 15:00:00 UTC)
### 0.22.4 (2020-10-15 13:20:00 UTC)
* Fix enable "Perform search tasks" at config/Media Providers/Options for custom RSS
* Fix remove enable_scheduled_backlog as it is not appropriate for custom RSS
* Fix if no anime release group parsed, provider id is used to prevent skipping result
* Fix if no anime season is parsed, assume season 1 to prevent skipping result
* Change add some anime quality recognition to assist search
### 0.22.3 (2020-10-14 15:00:00 UTC)
* Fix use qualities saved as default during Add Show to set up qualities in Bulk Change
* Fix add manual indents to Quality dropdown select that browsers removed from CSS styles

3
sickbeard/common.py

@ -279,6 +279,7 @@ class Quality(object):
if anime:
sd_options = name_has(['360p', '480p', '848x480', 'XviD'], any)
sd_options |= name_has([r'^SD\.|\.SD$'], any) # specific to a provider
dvd_options = name_has(['dvd', 'dvdrip'], any)
blue_ray_options = name_has(['bluray', 'blu-ray', 'BD'], any)
@ -288,7 +289,9 @@ class Quality(object):
return Quality.SDDVD
hd_options = name_has(['720p', r'\[720\]', '1280x720', '960x720'], any)
hd_options |= name_has([r'^HD\s*720\.|\.HD\s*720$'], any) # specific to a provider
full_hd = name_has(['1080p', r'\[1080\]', '1920x1080'], any)
full_hd |= name_has([r'^HD(\s*1080)?\.|\.HD(\s*1080)?$'], any) # specific to a provider
if not blue_ray_options:
if hd_options and not full_hd:
return Quality.HDTV

13
sickbeard/name_parser/parser.py

@ -548,15 +548,14 @@ class NameParser(object):
return number
def parse(self, name, cache_result=True):
def parse(self, name, cache_result=True, release_group=None):
# type: (AnyStr, bool, AnyStr) -> ParseResult
"""
:param name:
:type name: AnyStr
:param cache_result:
:type cache_result: bool
:param release_group: Name to use if anime and no group, otherwise pick_best_result will fail
:return:
:rtype: ParseResult
"""
name = self._unicodify(name)
@ -629,6 +628,12 @@ class NameParser(object):
and not final_result.ab_episode_numbers and not final_result.series_name:
raise InvalidNameException('Unable to parse %s' % name.encode(sickbeard.SYS_ENCODING, 'xmlcharrefreplace'))
if final_result.show_obj and final_result.show_obj.is_anime:
if None is final_result.season_number:
final_result.season_number = 1 # assign season number or finish_find_search_results will fail
if not final_result.release_group:
final_result.release_group = release_group # use provider id or pick_best_result fails
if cache_result:
name_parser_cache.add(name, final_result)

10
sickbeard/providers/__init__.py

@ -165,14 +165,10 @@ def makeTorrentRssProvider(config_string):
search_fallback = 0
enable_recentsearch = 0
enable_backlog = 0
enable_scheduled_backlog = 1
try:
values = config_string.split('|')
if 9 == len(values):
(name, url, cookies, enabled, search_mode, search_fallback,
enable_recentsearch, enable_backlog, enable_scheduled_backlog) = values
elif 8 == len(values):
values = config_string.split('|')[0:8] # deprecated: enable_scheduled_backlog by using `[0:8]`
if 8 == len(values):
name, url, cookies, enabled, search_mode, search_fallback, enable_recentsearch, enable_backlog = values
else:
name = values[0]
@ -189,7 +185,7 @@ def makeTorrentRssProvider(config_string):
return
newProvider = torrentRss.TorrentRssProvider(name, url, cookies, search_mode, search_fallback, enable_recentsearch,
enable_backlog, enable_scheduled_backlog)
enable_backlog)
newProvider.enabled = '1' == enabled
return newProvider

2
sickbeard/providers/generic.py

@ -1107,7 +1107,7 @@ class GenericProvider(object):
parser = NameParser(False, show_obj=self.get_show(item, **kwargs), convert=True, indexer_lookup=False)
# parse the file name
try:
parse_result = parser.parse(title)
parse_result = parser.parse(title, release_group=self.get_id())
except InvalidNameException:
logger.log(u'Unable to parse the filename %s into a valid episode' % title, logger.DEBUG)
continue

16
sickbeard/providers/rsstorrent.py

@ -28,10 +28,11 @@ from _23 import make_btih
class TorrentRssProvider(generic.TorrentProvider):
def __init__(self, name, url, cookies='', search_mode='eponly', search_fallback=False,
enable_recentsearch=False, enable_backlog=False, enable_scheduled_backlog=False):
enable_recentsearch=True, enable_backlog=True):
generic.TorrentProvider.__init__(self, name, cache_update_freq=15)
self.enable_backlog = bool(try_int(enable_backlog))
self.enable_scheduled_backlog = bool(try_int(enable_scheduled_backlog))
generic.TorrentProvider.__init__(self, name, supports_backlog=self.enable_backlog, cache_update_freq=15)
# no use for rss, so disable by removal after init uses it
delattr(self, 'enable_scheduled_backlog')
self.url = url.rstrip('/')
self.url_base = self.url
@ -47,13 +48,14 @@ class TorrentRssProvider(generic.TorrentProvider):
def config_str(self):
return '%s|%s|%s|%d|%s|%d|%d|%d|%d' % (
return '%s|%s|%s|%d|%s|%d|%d|%d' % (
self.name or '', self.url or '', self.cookies or '', self.enabled,
self.search_mode or '', self.search_fallback, self.enable_recentsearch, self.enable_backlog,
self.enable_scheduled_backlog)
self.search_mode or '', self.search_fallback, self.enable_recentsearch, self.enable_backlog)
# noinspection PyUnresolvedReferences
def _title_and_url(self, item):
# note: feedparser .util.FeedParserDict has its properties defined in a dict which is hidden from typing
# therefore, unresolved references are hidden for this entire function
title, url = None, None
if item.title:

Loading…
Cancel
Save