diff --git a/app/core/meta/metabase.py b/app/core/meta/metabase.py index 543adf2e..04f05151 100644 --- a/app/core/meta/metabase.py +++ b/app/core/meta/metabase.py @@ -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): """ diff --git a/tests/cases/meta.py b/tests/cases/meta.py index 63d815dd..6df283c4 100644 --- a/tests/cases/meta.py +++ b/tests/cases/meta.py @@ -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 + } }] diff --git a/tests/test_metainfo.py b/tests/test_metainfo.py index 689f021f..ac464594 100644 --- a/tests/test_metainfo.py +++ b/tests/test_metainfo.py @@ -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}")