From df499c08947105722d9cbeea4b8b2dbc071e7794 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Alvergnat?= Date: Fri, 30 Aug 2019 11:10:02 +0200 Subject: [PATCH] Avoid trigger of useless rules consequences --- guessit/rules/processors.py | 4 +++- guessit/rules/properties/bit_rate.py | 4 +++- guessit/rules/properties/episodes.py | 24 +++++++++++++++++------ guessit/rules/properties/language.py | 8 ++++++-- guessit/rules/properties/release_group.py | 12 ++++++++---- guessit/rules/properties/source.py | 4 +++- guessit/rules/properties/title.py | 6 ++++-- 7 files changed, 45 insertions(+), 17 deletions(-) diff --git a/guessit/rules/processors.py b/guessit/rules/processors.py index cced26a5..5b018140 100644 --- a/guessit/rules/processors.py +++ b/guessit/rules/processors.py @@ -34,7 +34,9 @@ def when(self, matches, context): for match in matches.ending(group.end - 1): ending.append(match) - return starting, ending + if starting or ending: + return starting, ending + return False def then(self, matches, when_response, context): starting, ending = when_response diff --git a/guessit/rules/properties/bit_rate.py b/guessit/rules/properties/bit_rate.py index 391f1d2f..d279c9f1 100644 --- a/guessit/rules/properties/bit_rate.py +++ b/guessit/rules/properties/bit_rate.py @@ -69,4 +69,6 @@ def when(self, matches, context): else: to_rename.append(match) - return to_rename, to_remove + if to_rename or to_remove: + return to_rename, to_remove + return False diff --git a/guessit/rules/properties/episodes.py b/guessit/rules/properties/episodes.py index 5376549d..bf91c92b 100644 --- a/guessit/rules/properties/episodes.py +++ b/guessit/rules/properties/episodes.py @@ -438,7 +438,9 @@ def when(self, matches, context): if to_append: to_remove.extend(weak_dup_matches) - return to_remove, to_append + if to_remove or to_append: + return to_remove, to_append + return False class CountValidator(Rule): @@ -464,7 +466,9 @@ def when(self, matches, context): season_count.append(count) else: to_remove.append(count) - return to_remove, episode_count, season_count + if to_remove or episode_count or season_count: + return to_remove, episode_count, season_count + return False class SeePatternRange(Rule): @@ -499,7 +503,9 @@ def when(self, matches, context): to_remove.append(separator) - return to_remove, to_append + if to_remove or to_append: + return to_remove, to_append + return False class AbstractSeparatorRange(Rule): @@ -555,7 +561,9 @@ def when(self, matches, context): previous_match = next_match - return to_remove, to_append + if to_remove or to_append: + return to_remove, to_append + return False class RenameToAbsoluteEpisode(Rule): @@ -683,7 +691,9 @@ def when(self, matches, context): pass to_remove.extend(weaks) - return to_remove, to_append + if to_remove or to_append: + return to_remove, to_append + return False class RemoveWeakIfSxxExx(Rule): @@ -897,4 +907,6 @@ def when(self, matches, context): markers.append(marker) discs.extend(sorted(marker.initiator.children.named('episode'), key=lambda m: m.value)) - return discs, markers, to_remove + if discs or markers or to_remove: + return discs, markers, to_remove + return False diff --git a/guessit/rules/properties/language.py b/guessit/rules/properties/language.py index be830634..3f83bc34 100644 --- a/guessit/rules/properties/language.py +++ b/guessit/rules/properties/language.py @@ -390,7 +390,9 @@ def when(self, matches, context): to_remove.extend(matches.conflicting(lang)) if prefix in to_remove: to_remove.remove(prefix) - return to_rename, to_remove + if to_rename or to_remove: + return to_rename, to_remove + return False def then(self, matches, when_response, context): to_rename, to_remove = when_response @@ -427,7 +429,9 @@ def when(self, matches, context): to_append.append(lang) if suffix in to_remove: to_remove.remove(suffix) - return to_append, to_remove + if to_append or to_remove: + return to_append, to_remove + return False def then(self, matches, when_response, context): to_rename, to_remove = when_response diff --git a/guessit/rules/properties/release_group.py b/guessit/rules/properties/release_group.py index 5043d5ee..ecff808b 100644 --- a/guessit/rules/properties/release_group.py +++ b/guessit/rules/properties/release_group.py @@ -195,7 +195,8 @@ def when(self, matches, context): # pylint:disable=inconsistent-return-statemen if releasegroup.value: to_append.append(releasegroup) - return to_remove, to_append + if to_remove or to_append: + return to_remove, to_append class SceneReleaseGroup(Rule): @@ -312,11 +313,11 @@ def when(self, matches, context): # If a release_group is found before, ignore this kind of release_group rule. if matches.named('release_group'): - return to_remove, to_append + return False if not matches.named('episode') and not matches.named('season') and matches.named('release_group'): # This doesn't seems to be an anime, and we already found another release_group. - return to_remove, to_append + return False for filepart in marker_sorted(matches.markers.named('path'), matches): @@ -340,4 +341,7 @@ def when(self, matches, context): to_append.append(group) to_remove.extend(matches.range(empty_group.start, empty_group.end, lambda m: 'weak-language' in m.tags)) - return to_remove, to_append + + if to_remove or to_append: + return to_remove, to_append + return False diff --git a/guessit/rules/properties/source.py b/guessit/rules/properties/source.py index d2261ba4..5925e778 100644 --- a/guessit/rules/properties/source.py +++ b/guessit/rules/properties/source.py @@ -171,7 +171,9 @@ def when(self, matches, context): to_remove.append(match) to_append.append(new_source) - return to_remove, to_append + if to_remove or to_append: + return to_remove, to_append + return False class ValidateSource(Rule): diff --git a/guessit/rules/properties/title.py b/guessit/rules/properties/title.py index 63f4bf29..30e6d3d0 100644 --- a/guessit/rules/properties/title.py +++ b/guessit/rules/properties/title.py @@ -251,7 +251,7 @@ def when(self, matches, context): to_remove = [] if matches.named(self.match_name, lambda match: 'expected' in match.tags): - return ret, to_remove + return False fileparts = [filepart for filepart in list(marker_sorted(matches.markers.named('path'), matches)) if not self.filepart_filter or self.filepart_filter(filepart, matches)] @@ -284,7 +284,9 @@ def when(self, matches, context): ret.extend(titles) to_remove.extend(to_remove_c) - return ret, to_remove + if ret or to_remove: + return ret, to_remove + return False class TitleFromPosition(TitleBaseRule):