fix add_download tool

This commit is contained in:
jxxghp
2025-11-17 10:16:54 +08:00
parent d572e523ba
commit 3acf937d56

View File

@@ -4,7 +4,7 @@ from typing import Optional, Type
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from app.agent.tools.base import MoviePilotTool from app.agent.tools.base import MoviePilotTool, ToolChain
from app.chain.download import DownloadChain from app.chain.download import DownloadChain
from app.core.context import Context from app.core.context import Context
from app.core.metainfo import MetaInfo from app.core.metainfo import MetaInfo
@@ -18,6 +18,8 @@ class AddDownloadInput(BaseModel):
torrent_title: str = Field(..., torrent_title: str = Field(...,
description="The display name/title of the torrent (e.g., 'The.Matrix.1999.1080p.BluRay.x264')") description="The display name/title of the torrent (e.g., 'The.Matrix.1999.1080p.BluRay.x264')")
torrent_url: str = Field(..., description="Direct URL to the torrent file (.torrent) or magnet link") torrent_url: str = Field(..., description="Direct URL to the torrent file (.torrent) or magnet link")
torrent_description: Optional[str] = Field(None,
description="Brief description of the torrent content (optional)")
downloader: Optional[str] = Field(None, downloader: Optional[str] = Field(None,
description="Name of the downloader to use (optional, uses default if not specified)") description="Name of the downloader to use (optional, uses default if not specified)")
save_path: Optional[str] = Field(None, save_path: Optional[str] = Field(None,
@@ -31,7 +33,7 @@ class AddDownloadTool(MoviePilotTool):
description: str = "Add torrent download task to the configured downloader (qBittorrent, Transmission, etc.). Downloads the torrent file and starts the download process with specified settings." description: str = "Add torrent download task to the configured downloader (qBittorrent, Transmission, etc.). Downloads the torrent file and starts the download process with specified settings."
args_schema: Type[BaseModel] = AddDownloadInput args_schema: Type[BaseModel] = AddDownloadInput
async def run(self, torrent_title: str, torrent_url: str, async def run(self, torrent_title: str, torrent_url: str, torrent_description: Optional[str] = None,
downloader: Optional[str] = None, save_path: Optional[str] = None, downloader: Optional[str] = None, save_path: Optional[str] = None,
labels: Optional[str] = None, **kwargs) -> str: labels: Optional[str] = None, **kwargs) -> str:
logger.info( logger.info(
@@ -49,10 +51,11 @@ class AddDownloadTool(MoviePilotTool):
title=torrent_title, title=torrent_title,
download_url=torrent_url download_url=torrent_url
) )
meta_info = MetaInfo(title=torrent_title) meta_info = MetaInfo(title=torrent_title, subtitle=torrent_description)
context = Context( context = Context(
torrent_info=torrent_info, torrent_info=torrent_info,
meta_info=meta_info meta_info=meta_info,
media_info=ToolChain().recognize_media(meta=meta_info)
) )
did = download_chain.download_single( did = download_chain.download_single(