From e0923807c6024833d8ad9f1f577e47e91ae4b1ec Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Tue, 30 Apr 2024 19:25:09 +0200 Subject: [PATCH] Fix titles join in path --- scanner/matcher/parser/rules.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) 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):