fix(music): retain release group types in album matching

This commit is contained in:
yanjunpu
2026-09-08 22:16:46 +08:00
parent 83a0e21035
commit abb51cda3f
2 changed files with 11 additions and 1 deletions
+4 -1
View File
@@ -884,7 +884,10 @@ class MusicBrainzModule(_ModuleBase):
_MusicBrainzRequestPlan(
path=f"/release/{release_id}",
params={
"inc": "recordings+media+artist-credits",
# Release lookup 默认只返回 Release Group 的最小引用,
# 不包含 primary-type / secondary-types。目录级专辑识别
# 后续需要这些字段执行音乐分类,因此必须显式展开。
"inc": "recordings+media+artist-credits+release-groups",
"fmt": "json",
},
)
+7
View File
@@ -54,11 +54,14 @@ def test_match_music_album_selects_release_by_count_and_duration(monkeypatch):
"""曲目数和时长一致的发行版本应被选中并返回曲目表。"""
module = MusicBrainzModule()
detail = _release_detail("release-1", "七里香", "周杰伦", ALBUM_TRACKS)
detail_request_params = None
def fake_request(path, params=None):
nonlocal detail_request_params
if path == "/release":
return {"releases": [{"id": "release-1", "title": "七里香"}]}
if path == "/release/release-1":
detail_request_params = params
return detail
return None
@@ -76,6 +79,10 @@ def test_match_music_album_selects_release_by_count_and_duration(monkeypatch):
assert [track.media_id for track in album.tracks] == ["rec-1", "rec-2", "rec-3"]
assert album.tracks[0].track_number == 1
assert album.tracks[0].album == "七里香"
assert detail_request_params is not None
assert "release-groups" in detail_request_params["inc"].split("+")
assert album.album_type == "Album"
assert album.tracks[0].album_type == "Album"
def test_match_music_album_rejects_mismatched_trackset(monkeypatch):