Fix titles join in path (#457)

This commit is contained in:
Zoe Roux 2024-04-30 19:36:54 +02:00 committed by GitHub
commit cd18ec1747
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -54,21 +54,26 @@ class UnlistTitles(Rule):
consequence = [RemoveMatch, AppendMatch] consequence = [RemoveMatch, AppendMatch]
def when(self, matches: Matches, context) -> Any: 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: for part in fileparts:
return titles: List[Match] = matches.range(
part.start, part.end, lambda x: x.name == "title"
) # type: ignore
title = copy(titles[0]) if not titles or len(titles) <= 1:
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 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): class EpisodeTitlePromotion(Rule):
@ -103,6 +108,11 @@ class EpisodeTitlePromotion(Rule):
if not ep_title: if not ep_title:
return return
# Do not promote an episode title if there is already a know episode number
ep_nbr: List[Match] = matches.named("episode") # type: ignore
if ep_nbr and len(ep_nbr) > 0:
return
to_remove = [match for match in ep_title if str(match.value).isdecimal()] to_remove = [match for match in ep_title if str(match.value).isdecimal()]
to_add = [] to_add = []
for tmatch in to_remove: for tmatch in to_remove: