mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-06 07:56:52 +08:00
fix(music): 尾部规格段剥离与书名号结构归因修复
- 新增 _strip_spec_segments 尾部纯规格段整段剥离,避免规格后缀把 艺术家/曲名拆分点推到连字符上(许茹芸 - 等得到 ... ALAC-HHWEB) - 段定位限定段内禁连字符,匹配落在最尾片段;发布组标签仅在 紧跟格式词的无空格形态或段内含规格词时剥离,保护单词曲名 - APE+CUE 联合写法的加号纳入规格段判定与悬空分隔符修剪 - 含书名号的括号注释(电影《xxx》主题曲)在结构解析前提取并拼回曲名, 单层括号消歧后缀(电影版)保留 - 书名号分支支持「曲名-歌手」艺术家段反向拆分与尾部碟号/年份提取 - MusicBrainz 候选弱匹配扩展冒号副标题与首段连字符,检索式剥离尾部年份 - 补充规格段/书名号/VA/场景点分等真实种子测试案例
This commit is contained in:
@@ -177,6 +177,12 @@ class MusicBrainzModule(_ModuleBase):
|
||||
text = re.split(r"\s*[::]\s*", str(value or ""), maxsplit=1)[0]
|
||||
return cls._normalize_text(text)
|
||||
|
||||
@classmethod
|
||||
def _head_title(cls, value: Optional[str]) -> str:
|
||||
"""提取候选「曲名-歌手」「曲名《巡演名》…」命名的首段曲名。"""
|
||||
text = re.split(r"\s*[-–—−-::]\s*|\s*《", str(value or ""), maxsplit=1)[0]
|
||||
return cls._normalize_text(text)
|
||||
|
||||
def _search_albums(self, meta: MetaMusic, limit: int) -> list[MusicInfo]:
|
||||
"""按标题和可选艺术家搜索 Release Group 专辑候选,检索式同样逐级放宽。"""
|
||||
for query in self._album_queries(meta):
|
||||
@@ -591,6 +597,8 @@ class MusicBrainzModule(_ModuleBase):
|
||||
cls._same_text(bare_title, cls._strip_parenthetical(candidate.title))
|
||||
# 条目「天國的情人:鄧麗君逝世十周年…」这类冒号副标题,主标题一致视为弱匹配
|
||||
or cls._same_text(bare_title, cls._main_title(candidate.title))
|
||||
# 条目「为你盛开-许巍《无尽光芒》…」这类连字符前置命名,首段曲名一致视为弱匹配
|
||||
or cls._same_text(bare_title, cls._head_title(candidate.title))
|
||||
)
|
||||
):
|
||||
score += 2
|
||||
@@ -645,6 +653,8 @@ class MusicBrainzModule(_ModuleBase):
|
||||
cls._same_text(bare_title, cls._strip_parenthetical(album_title))
|
||||
# 条目「天國的情人:鄧麗君逝世十周年…」这类冒号副标题,主标题一致视为弱匹配
|
||||
or cls._same_text(bare_title, cls._main_title(album_title))
|
||||
# 条目「为你盛开-许巍《无尽光芒》…」这类连字符前置命名,首段曲名一致视为弱匹配
|
||||
or cls._same_text(bare_title, cls._head_title(album_title))
|
||||
)
|
||||
):
|
||||
# 「我爱夜 (新歌+精选)」对位条目「我爱夜」这类注释差异
|
||||
|
||||
Reference in New Issue
Block a user