diff --git a/scanner/matcher/parser/rules.py b/scanner/matcher/parser/rules.py index 849e5f44..9632cfe6 100644 --- a/scanner/matcher/parser/rules.py +++ b/scanner/matcher/parser/rules.py @@ -54,21 +54,24 @@ class UnlistTitles(Rule): consequence = [RemoveMatch, AppendMatch] def when(self, matches: Matches, context) -> Any: - titles: List[Match] = matches.named("title", lambda x: x.tagged("title")) # type: ignore + fileparts: List[Match] = matches.markers.named("path") # type: ignore - if not titles or len(titles) <= 1: - return + for part in fileparts: + titles: List[Match] = matches.range(part.start, part.end, lambda x: x.name == "title") # type: ignore - title = copy(titles[0]) - for nmatch in titles[1:]: - # Check if titles are next to each other, if they are not ignore it. - next: List[Match] = matches.next(title) # type: ignore - if not next or next[0] != nmatch: - logger.warn(f"Ignoring potential part of title: {nmatch.value}") + if not titles or len(titles) <= 1: continue - title.end = nmatch.end - return [titles, [title]] + title = copy(titles[0]) + for nmatch in titles[1:]: + # Check if titles are next to each other, if they are not ignore it. + next: List[Match] = matches.next(title) # type: ignore + if not next or next[0] != nmatch: + logger.warn(f"Ignoring potential part of title: {nmatch.value}") + continue + title.end = nmatch.end + + return [titles, [title]] class EpisodeTitlePromotion(Rule):