From 56bda119475747d031019921f33c796d8ffd6de5 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Mon, 6 Jul 2026 12:36:06 +0800 Subject: [PATCH] fix python metainfo xxx title parsing --- app/core/meta/metavideo.py | 2 +- requirements.in | 2 +- tests/test_metainfo.py | 12 ++++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/core/meta/metavideo.py b/app/core/meta/metavideo.py index 761c8f5e..f9592ca3 100644 --- a/app/core/meta/metavideo.py +++ b/app/core/meta/metavideo.py @@ -56,7 +56,7 @@ class MetaVideo(MetaBase): _name_se_words = ['共', '第', '季', '集', '话', '話', '期'] _name_movie_words = ['剧场版', '劇場版', '电影版', '電影版'] _name_nostring_re = r"^PTS|^JADE|^AOD|^CHC|^[A-Z]{1,4}TV[\-0-9UVHDK]*" \ - r"|\d{1,2}th|\d{1,2}bit|IMAX|^3D|\s+3D|XXX|\s+DC$" \ + r"|\d{1,2}th|\d{1,2}bit|IMAX|^3D|\s+3D|\s+DC$" \ r"|[第\s共]+[0-9一二三四五六七八九十\-\s]+季" \ r"|[第\s共]+[0-9一二三四五六七八九十百零\-\s]+[集话話]" \ r"|连载|日剧|美剧|电视剧|动画片|动漫|欧美|西德|日韩|超高清|高清|无水印|下载|蓝光|翡翠台|梦幻天堂·龙网|★?\d*月?新番" \ diff --git a/requirements.in b/requirements.in index 655854bf..70581e1f 100644 --- a/requirements.in +++ b/requirements.in @@ -1,4 +1,4 @@ -moviepilot-rust~=0.2.0 +moviepilot-rust~=0.2.1 pydantic>=2.13.4,<3.0.0 pydantic-settings>=2.14.1,<3.0.0 SQLAlchemy~=2.0.50 diff --git a/tests/test_metainfo.py b/tests/test_metainfo.py index 0b8dc96f..bf2d6857 100644 --- a/tests/test_metainfo.py +++ b/tests/test_metainfo.py @@ -157,6 +157,18 @@ def test_torrent_title_match_ignores_question_mark_variants(): ) +def test_python_metainfo_fallback_preserves_xxx_movie_title(): + """Python 兜底解析不应删除合法 xXx 片名。""" + with patch("app.core.metainfo.rust_accel.parse_metainfo", return_value=None): + meta = MetaInfo("xXx 2002 1080p AMZN WEB-DL H.264 DDP 5.1-FROGWeb") + + assert meta.en_name == "Xxx" + assert meta.year == "2002" + assert meta.resource_pix == "1080p" + assert meta.edition == "WEB-DL" + assert meta.audio_encode == "DDP 5.1" + + def test_custom_words_replace_then_episode_offset(): """测试复杂识别词仍按先替换、后集数偏移的顺序处理。""" custom_words = ["旧名 => 新名 && 第 <> 集 >> EP+1"]