diff --git a/CHANGES.md b/CHANGES.md index c37ea68a..c06335f2 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -85,6 +85,7 @@ * Enable Alpha Ratio again now that the secure login page over https is fixed * Add ability to parse command line output from unix unrar version 4 and below * Fix show search box on non-poster show list views +* Fix removal of non-release groups such that anime qualities are not trimmed from name ### 0.10.0 (2015-08-06 11:05:00 UTC) diff --git a/sickbeard/helpers.py b/sickbeard/helpers.py index afb77840..5a22430d 100644 --- a/sickbeard/helpers.py +++ b/sickbeard/helpers.py @@ -94,18 +94,18 @@ def remove_extension(name): return name -def remove_non_release_groups(name): +def remove_non_release_groups(name, anime=False): """ Remove non release groups from name """ if name: - rc = [re.compile(r'(?i)' + v) for v in - '([\s\.\-_\[\{\(]*(no-rar|nzbgeek|ripsalot|rp|siklopentan)[\s\.\-_\]\}\)]*)$', - '(?<=\w)([\s\.\-_]*[\[\{\(][\s\.\-_]*(www\.\w+.\w+)[\s\.\-_]*[\]\}\)][\s\.\-_]*)$', - '(?<=\w)([\s\.\-_]*[\[\{\(]\s*(rar(bg|tv)|((e[tz]|v)tv))[\s\.\-_]*[\]\}\)][\s\.\-_]*)$', - '(?<=\w)([\s\.\-_]*[\[\{\(][\s\.\-_]*[\w\s\.\-\_]+[\s\.\-_]*[\]\}\)][\s\.\-_]*)$' - ] + rc = [re.compile(r'(?i)' + v) for v in [ + '([\s\.\-_\[\{\(]*(no-rar|nzbgeek|ripsalot|rp|siklopentan)[\s\.\-_\]\}\)]*)$', + '(?<=\w)([\s\.\-_]*[\[\{\(][\s\.\-_]*(www\.\w+.\w+)[\s\.\-_]*[\]\}\)][\s\.\-_]*)$', + '(?<=\w)([\s\.\-_]*[\[\{\(]\s*(rar(bg|tv)|((e[tz]|v)tv))[\s\.\-_]*[\]\}\)][\s\.\-_]*)$'] + + (['(?<=\w)([\s\.\-_]*[\[\{\(][\s\.\-_]*[\w\s\.\-\_]+[\s\.\-_]*[\]\}\)][\s\.\-_]*)$'], [])[anime] + ] rename = name while rename: for regex in rc: diff --git a/sickbeard/properFinder.py b/sickbeard/properFinder.py index d754c2fa..6f2b91c8 100644 --- a/sickbeard/properFinder.py +++ b/sickbeard/properFinder.py @@ -222,8 +222,15 @@ def _downloadPropers(properList): else: + # get the show object + showObj = helpers.findCertainShow(sickbeard.showList, curProper.indexerid) + if showObj == None: + logger.log(u'Unable to find the show with indexerid ' + str( + curProper.indexerid) + ' so unable to download the proper', logger.ERROR) + continue + # make sure that none of the existing history downloads are the same proper we're trying to download - clean_proper_name = _genericName(helpers.remove_non_release_groups(curProper.name)) + clean_proper_name = _genericName(helpers.remove_non_release_groups(curProper.name, showObj.anime)) isSame = False for curResult in historyResults: # if the result exists in history already we need to skip it @@ -234,12 +241,8 @@ def _downloadPropers(properList): logger.log(u'This proper is already in history, skipping it', logger.DEBUG) continue - # get the episode object - showObj = helpers.findCertainShow(sickbeard.showList, curProper.indexerid) - if showObj == None: - logger.log(u'Unable to find the show with indexerid ' + str( - curProper.indexerid) + ' so unable to download the proper', logger.ERROR) - continue + + epObj = showObj.getEpisode(curProper.season, curProper.episode) # make the result object diff --git a/sickbeard/tv.py b/sickbeard/tv.py index b3096f9c..3eef6a2e 100644 --- a/sickbeard/tv.py +++ b/sickbeard/tv.py @@ -2156,14 +2156,14 @@ class TVEpisode(object): def us(name): return re.sub('[ -]', '_', name) - def release_name(name): + def release_name(show, name): if name: - name = helpers.remove_non_release_groups(helpers.remove_extension(name)) + name = helpers.remove_non_release_groups(helpers.remove_extension(name), show.anime) return name def release_group(show, name): if name: - name = helpers.remove_non_release_groups(helpers.remove_extension(name)) + name = helpers.remove_non_release_groups(helpers.remove_extension(name), show.anime) else: return "" @@ -2205,7 +2205,7 @@ class TVEpisode(object): '%0XE': '%02d' % self.scene_episode, '%AB': '%(#)03d' % {'#': self.absolute_number}, '%XAB': '%(#)03d' % {'#': self.scene_absolute_number}, - '%RN': release_name(self.release_name), + '%RN': release_name(self.show, self.release_name), '%RG': release_group(self.show, self.release_name), '%AD': str(self.airdate).replace('-', ' '), '%A.D': str(self.airdate).replace('-', '.'), diff --git a/tests/helpers_tests.py b/tests/helpers_tests.py index 1ca736c5..1acd9bc1 100644 --- a/tests/helpers_tests.py +++ b/tests/helpers_tests.py @@ -29,6 +29,14 @@ class HelpersTests(unittest.TestCase): self.assertEqual(helpers.sizeof_fmt(2 ** 20), '1.0 MB') self.assertEqual(helpers.sizeof_fmt(1234567), '1.2 MB') + def test_remove_non_release_groups(self): + test_names = { + ('[HorribleSubs] Hidan no Aria AA - 08 [1080p]', True): '[HorribleSubs] Hidan no Aria AA - 08 [1080p]', + ('The.Last.Man.On.Earth.S02E08.No.Bull.1080p.WEB-DL.DD5.1.H264-BTN[rartv]', False): 'The.Last.Man.On.Earth.S02E08.No.Bull.1080p.WEB-DL.DD5.1.H264-BTN', + } + for test_name, test_result in test_names.items(): + self.assertEqual(test_result, helpers.remove_non_release_groups(test_name[0], test_name[1])) + if __name__ == '__main__': suite = unittest.TestLoader().loadTestsFromTestCase(HelpersTests)