mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 15:38:19 +08:00
fix(music): align album tracks by exact title
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import asyncio
|
||||
from pathlib import Path
|
||||
from unittest.mock import AsyncMock, Mock
|
||||
|
||||
import pytest
|
||||
@@ -165,6 +166,57 @@ def test_recognize_album_directory_maps_files(tmp_path, media_chain, monkeypatch
|
||||
source_chain.match_music_album.assert_called_once()
|
||||
|
||||
|
||||
def test_align_album_tracks_prefers_exact_titles_over_conflicting_positions():
|
||||
"""本地曲序与发行版本冲突时,精确曲名必须优先,避免整张专辑错位。"""
|
||||
files = [
|
||||
Path("费玉清-真的好想你.flac"),
|
||||
Path("费玉清-冬之夜.flac"),
|
||||
Path("费玉清-愛是一個圓.flac"),
|
||||
Path("04.flac"),
|
||||
]
|
||||
metas = [
|
||||
MetaMusic(title="真的好想你", track_number=1),
|
||||
MetaMusic(title="冬之夜", track_number=2),
|
||||
MetaMusic(title="愛是一個圓", track_number=3),
|
||||
MetaMusic(title="04", track_number=4),
|
||||
]
|
||||
tracks = [
|
||||
MusicInfo(
|
||||
media_source="musicbrainz",
|
||||
media_id="winter",
|
||||
title="冬之夜",
|
||||
track_number=1,
|
||||
),
|
||||
MusicInfo(
|
||||
media_source="musicbrainz",
|
||||
media_id="circle",
|
||||
title="爱是一个圆",
|
||||
track_number=2,
|
||||
),
|
||||
MusicInfo(
|
||||
media_source="musicbrainz",
|
||||
media_id="miss",
|
||||
title="真的好想你",
|
||||
track_number=3,
|
||||
),
|
||||
MusicInfo(
|
||||
media_source="musicbrainz",
|
||||
media_id="fallback",
|
||||
title="一生的朋友",
|
||||
track_number=4,
|
||||
),
|
||||
]
|
||||
|
||||
matched = MediaChain._align_music_album_tracks(files, metas, tracks)
|
||||
|
||||
assert [matched[file].media_id for file in files] == [
|
||||
"miss",
|
||||
"winter",
|
||||
"circle",
|
||||
"fallback",
|
||||
]
|
||||
|
||||
|
||||
def test_async_recognize_album_directory_calls_async_module(
|
||||
tmp_path,
|
||||
media_chain,
|
||||
|
||||
Reference in New Issue
Block a user