feat(music): 支持多源识别与元数据刮削

This commit is contained in:
jxxghp
2026-08-11 23:33:14 +08:00
parent 1197ece12b
commit 3f1b0cdb05
38 changed files with 3764 additions and 284 deletions

View File

@@ -9,6 +9,11 @@ MEDIA_SOURCE_ALIASES = {
"douban": "douban",
"bangumi": "bangumi",
"anilist": "anilist",
"musicbrainz": "musicbrainz",
"theaudiodb": "theaudiodb",
"audio_db": "theaudiodb",
"doubanmusic": "doubanmusic",
"douban_music": "doubanmusic",
}
MEDIA_SOURCE_PREFIXES = {
@@ -16,6 +21,9 @@ MEDIA_SOURCE_PREFIXES = {
"douban": "douban",
"bangumi": "bangumi",
"anilist": "anilist",
"musicbrainz": "musicbrainz",
"theaudiodb": "theaudiodb",
"doubanmusic": "doubanmusic",
}
MEDIA_SOURCE_ID_FIELDS = {
@@ -23,8 +31,19 @@ MEDIA_SOURCE_ID_FIELDS = {
"douban": ("douban_id", "doubanid"),
"bangumi": ("bangumi_id", "bangumiid"),
"anilist": ("anilist_id", "anilistid"),
"musicbrainz": ("media_id",),
"theaudiodb": ("media_id", "theaudiodb_id"),
"doubanmusic": ("media_id", "douban_id", "doubanid"),
}
MUSIC_MEDIA_SOURCE_ORDER = ("musicbrainz", "theaudiodb", "doubanmusic")
MUSIC_MEDIA_SOURCES = frozenset(MUSIC_MEDIA_SOURCE_ORDER)
def is_music_media_source(source: Optional[str]) -> bool:
"""判断单个请求级来源是否为内置音乐元数据源。"""
return normalize_media_source(source) in MUSIC_MEDIA_SOURCES
def normalize_media_source(source: Optional[str]) -> Optional[str]:
"""规范化媒体数据源名称,兼容外部使用的 ``tmdb`` 前缀。"""