增强MetaBase类以支持tmdbid和doubanid的赋值,并为Emby格式ID识别添加测试用例。

This commit is contained in:
jxxghp
2025-05-18 13:03:35 +08:00
parent bedcd94020
commit a8f8bf5872
3 changed files with 114 additions and 0 deletions

View File

@@ -582,6 +582,12 @@ class MetaBase(object):
# Part
if not self.part:
self.part = meta.part
# tmdbid
if not self.tmdbid and meta.tmdbid:
self.tmdbid = meta.tmdbid
# doubanid
if not self.doubanid and meta.doubanid:
self.doubanid = meta.doubanid
def to_dict(self):
"""

View File

@@ -1037,4 +1037,84 @@ meta_cases = [{
"video_codec": "",
"audio_codec": ""
}
}, {
"path": "/movies/The Vampire Diaries (2009) [tmdbid=18165]/The.Vampire.Diaries.S01E01.1080p.mkv",
"target": {
"type": "电视剧",
"cn_name": "",
"en_name": "The Vampire Diaries",
"year": "2009",
"part": "",
"season": "S01",
"episode": "E01",
"restype": "",
"pix": "1080p",
"video_codec": "",
"audio_codec": "",
"tmdbid": 18165
}
}, {
"path": "/movies/Inception (2010) [tmdbid-27205]/Inception.2010.1080p.mkv",
"target": {
"type": "未知",
"cn_name": "",
"en_name": "Inception",
"year": "2010",
"part": "",
"season": "",
"episode": "",
"restype": "",
"pix": "1080p",
"video_codec": "",
"audio_codec": "",
"tmdbid": 27205
}
}, {
"path": "/movies/Breaking Bad (2008) [tmdb=1396]/Season 1/Breaking.Bad.S01E01.1080p.mkv",
"target": {
"type": "电视剧",
"cn_name": "",
"en_name": "Breaking Bad",
"year": "2008",
"part": "",
"season": "S01",
"episode": "E01",
"restype": "",
"pix": "1080p",
"video_codec": "",
"audio_codec": "",
"tmdbid": 1396
}
}, {
"path": "/tv/Game of Thrones (2011) {tmdb=1399}/Season 1/Game.of.Thrones.S01E01.1080p.mkv",
"target": {
"type": "电视剧",
"cn_name": "",
"en_name": "Game Of Thrones",
"year": "2011",
"part": "",
"season": "S01",
"episode": "E01",
"restype": "",
"pix": "1080p",
"video_codec": "",
"audio_codec": "",
"tmdbid": 1399
}
}, {
"path": "/movies/Avatar (2009) {tmdb-19995}/Avatar.2009.1080p.mkv",
"target": {
"type": "未知",
"cn_name": "",
"en_name": "Avatar",
"year": "2009",
"part": "",
"season": "",
"episode": "",
"restype": "",
"pix": "1080p",
"video_codec": "",
"audio_codec": "",
"tmdbid": 19995
}
}]

View File

@@ -32,4 +32,32 @@ class MetaInfoTest(TestCase):
"video_codec": meta_info.video_encode or "",
"audio_codec": meta_info.audio_encode or ""
}
# 检查tmdbid
if info.get("target").get("tmdbid"):
target["tmdbid"] = meta_info.tmdbid
self.assertEqual(target, info.get("target"))
def test_emby_format_ids(self):
"""
测试Emby格式ID识别
"""
# 测试文件路径
test_paths = [
# 文件名中包含tmdbid
("/movies/The Vampire Diaries (2009) [tmdbid=18165]/The.Vampire.Diaries.S01E01.1080p.mkv", 18165),
# 目录名中包含tmdbid
("/movies/Inception (2010) [tmdbid-27205]/Inception.2010.1080p.mkv", 27205),
# 父目录名中包含tmdbid
("/movies/Breaking Bad (2008) [tmdb=1396]/Season 1/Breaking.Bad.S01E01.1080p.mkv", 1396),
# 祖父目录名中包含tmdbid
("/tv/Game of Thrones (2011) {tmdb=1399}/Season 1/Game.of.Thrones.S01E01.1080p.mkv", 1399),
# 测试{tmdb-xxx}格式
("/movies/Avatar (2009) {tmdb-19995}/Avatar.2009.1080p.mkv", 19995),
]
for path_str, expected_tmdbid in test_paths:
meta = MetaInfoPath(Path(path_str))
self.assertEqual(meta.tmdbid, expected_tmdbid,
f"路径 {path_str} 期望的tmdbid为 {expected_tmdbid},实际识别为 {meta.tmdbid}")