mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 07:27:15 +08:00
fix: improve manual transfer recognition preview
This commit is contained in:
@@ -222,6 +222,9 @@ def manual_transfer(
|
|||||||
explicit_selected_files = bool(transer_item.fileitems)
|
explicit_selected_files = bool(transer_item.fileitems)
|
||||||
|
|
||||||
def _build_failure_preview_item(file_item: FileItem, message: str) -> dict:
|
def _build_failure_preview_item(file_item: FileItem, message: str) -> dict:
|
||||||
|
"""
|
||||||
|
构造手动整理预览失败项。
|
||||||
|
"""
|
||||||
return {
|
return {
|
||||||
"source": file_item.path if file_item else None,
|
"source": file_item.path if file_item else None,
|
||||||
"target": None,
|
"target": None,
|
||||||
@@ -234,9 +237,16 @@ def manual_transfer(
|
|||||||
"episode": None,
|
"episode": None,
|
||||||
"episode_end": None,
|
"episode_end": None,
|
||||||
"part": None,
|
"part": None,
|
||||||
|
"org_string": None,
|
||||||
|
"apply_words": [],
|
||||||
|
"resource_team": None,
|
||||||
|
"customization": None,
|
||||||
}
|
}
|
||||||
|
|
||||||
def _merge_messages(messages: List[str]) -> str:
|
def _merge_messages(messages: List[str]) -> str:
|
||||||
|
"""
|
||||||
|
合并手动整理批量预览提示信息。
|
||||||
|
"""
|
||||||
valid_messages = [msg for msg in messages if msg]
|
valid_messages = [msg for msg in messages if msg]
|
||||||
if not valid_messages:
|
if not valid_messages:
|
||||||
return ""
|
return ""
|
||||||
|
|||||||
@@ -2792,6 +2792,10 @@ class TransferChain(ChainBase, ConfigReloadMixin, metaclass=Singleton):
|
|||||||
"episode": item_meta.begin_episode if item_meta else None,
|
"episode": item_meta.begin_episode if item_meta else None,
|
||||||
"episode_end": item_meta.end_episode if item_meta else None,
|
"episode_end": item_meta.end_episode if item_meta else None,
|
||||||
"part": item_meta.part if item_meta else None,
|
"part": item_meta.part if item_meta else None,
|
||||||
|
"org_string": item_meta.org_string if item_meta else None,
|
||||||
|
"apply_words": item_meta.apply_words if item_meta else [],
|
||||||
|
"resource_team": item_meta.resource_team if item_meta else None,
|
||||||
|
"customization": item_meta.customization if item_meta else None,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
return transferinfo.success, transferinfo.message
|
return transferinfo.success, transferinfo.message
|
||||||
@@ -2867,6 +2871,10 @@ class TransferChain(ChainBase, ConfigReloadMixin, metaclass=Singleton):
|
|||||||
"episode": transfer_task.meta.begin_episode if transfer_task.meta else None,
|
"episode": transfer_task.meta.begin_episode if transfer_task.meta else None,
|
||||||
"episode_end": transfer_task.meta.end_episode if transfer_task.meta else None,
|
"episode_end": transfer_task.meta.end_episode if transfer_task.meta else None,
|
||||||
"part": transfer_task.meta.part if transfer_task.meta else None,
|
"part": transfer_task.meta.part if transfer_task.meta else None,
|
||||||
|
"org_string": transfer_task.meta.org_string if transfer_task.meta else None,
|
||||||
|
"apply_words": transfer_task.meta.apply_words if transfer_task.meta else [],
|
||||||
|
"resource_team": transfer_task.meta.resource_team if transfer_task.meta else None,
|
||||||
|
"customization": transfer_task.meta.customization if transfer_task.meta else None,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
fail_num += 1
|
fail_num += 1
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
Cython~=3.1.2
|
Cython~=3.1.2
|
||||||
moviepilot-rust~=0.1.5
|
moviepilot-rust~=0.1.6
|
||||||
pydantic>=2.0.0,<3.0.0
|
pydantic>=2.0.0,<3.0.0
|
||||||
pydantic-settings>=2.0.0,<3.0.0
|
pydantic-settings>=2.0.0,<3.0.0
|
||||||
SQLAlchemy~=2.0.41
|
SQLAlchemy~=2.0.41
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
from unittest.mock import patch
|
||||||
|
|
||||||
from tests.cases.groups import release_group_cases
|
from tests.cases.groups import release_group_cases
|
||||||
from app.core.meta.releasegroup import ReleaseGroupsMatcher
|
from app.core.meta.releasegroup import ReleaseGroupsMatcher
|
||||||
|
|
||||||
@@ -12,3 +14,18 @@ class MetaInfoTest(TestCase):
|
|||||||
print(f"\tmatch release group {release_group}, should be: {item.get('group')}")
|
print(f"\tmatch release group {release_group}, should be: {item.get('group')}")
|
||||||
self.assertEqual(item.get("group"), release_group)
|
self.assertEqual(item.get("group"), release_group)
|
||||||
print(f"完成 {info.get('domain')}")
|
print(f"完成 {info.get('domain')}")
|
||||||
|
|
||||||
|
def test_custom_release_group_matches_multiple_adjacent_groups(self):
|
||||||
|
"""自定义制作组共用分隔符时,应完整保留所有命中项。"""
|
||||||
|
matcher = ReleaseGroupsMatcher()
|
||||||
|
|
||||||
|
with patch.object(
|
||||||
|
matcher.systemconfig,
|
||||||
|
"get",
|
||||||
|
return_value=["VCB-Studio|hyakuhuyu|DMG|GM-Team"],
|
||||||
|
):
|
||||||
|
release_group = matcher.match(
|
||||||
|
"[DMG&VCB-Studio] Youkoso Jitsuryoku Shijou Shugi no Kyoushitsu e"
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual("DMG@VCB-Studio", release_group)
|
||||||
|
|||||||
Reference in New Issue
Block a user