mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-05-11 18:10:15 +08:00
feat: 新增修改下载任务Agent工具,查询下载任务支持返回标签
- 新增 modify_download Agent工具,支持通过hash修改下载任务的标签、开始和暂停下载 - 在 ChainBase 及三个下载器模块中新增 set_torrents_tag 方法 - DownloadingTorrent schema 新增 tags 字段 - 各下载器模块构建 DownloadingTorrent 时填充 tags - query_download_tasks 工具输出中新增 tags 字段
This commit is contained in:
@@ -318,6 +318,7 @@ class QbittorrentModule(_ModuleBase, _DownloaderBase[Qbittorrent]):
|
||||
state="paused" if torrent.get('state') in ("paused", "pausedDL") else "downloading",
|
||||
dlspeed=StringUtils.str_filesize(torrent.get('dlspeed')),
|
||||
upspeed=StringUtils.str_filesize(torrent.get('upspeed')),
|
||||
tags=torrent.get('tags'),
|
||||
left_time=StringUtils.str_secends(
|
||||
(torrent.get('total_size') - torrent.get('completed')) / torrent.get(
|
||||
'dlspeed')) if torrent.get(
|
||||
@@ -356,6 +357,21 @@ class QbittorrentModule(_ModuleBase, _DownloaderBase[Qbittorrent]):
|
||||
return None
|
||||
return server.delete_torrents(delete_file=delete_file, ids=hashs)
|
||||
|
||||
def set_torrents_tag(self, hashs: Union[str, list], tags: list,
|
||||
downloader: Optional[str] = None) -> Optional[bool]:
|
||||
"""
|
||||
设置种子标签
|
||||
:param hashs: 种子Hash
|
||||
:param tags: 标签列表
|
||||
:param downloader: 下载器
|
||||
:return: bool
|
||||
"""
|
||||
server: Qbittorrent = self.get_instance(downloader)
|
||||
if not server:
|
||||
return None
|
||||
server.set_torrents_tag(ids=hashs, tags=tags)
|
||||
return True
|
||||
|
||||
def start_torrents(self, hashs: Union[list, str],
|
||||
downloader: Optional[str] = None) -> Optional[bool]:
|
||||
"""
|
||||
|
||||
@@ -391,6 +391,7 @@ class RtorrentModule(_ModuleBase, _DownloaderBase[Rtorrent]):
|
||||
else "downloading",
|
||||
dlspeed=StringUtils.str_filesize(dlspeed),
|
||||
upspeed=StringUtils.str_filesize(upspeed),
|
||||
tags=torrent.get("tags"),
|
||||
left_time=StringUtils.str_secends(
|
||||
(total_size - completed) / dlspeed
|
||||
)
|
||||
@@ -445,6 +446,22 @@ class RtorrentModule(_ModuleBase, _DownloaderBase[Rtorrent]):
|
||||
return None
|
||||
return server.delete_torrents(delete_file=delete_file, ids=hashs)
|
||||
|
||||
def set_torrents_tag(
|
||||
self, hashs: Union[str, list], tags: list,
|
||||
downloader: Optional[str] = None,
|
||||
) -> Optional[bool]:
|
||||
"""
|
||||
设置种子标签
|
||||
:param hashs: 种子Hash
|
||||
:param tags: 标签列表
|
||||
:param downloader: 下载器
|
||||
:return: bool
|
||||
"""
|
||||
server: Rtorrent = self.get_instance(downloader)
|
||||
if not server:
|
||||
return None
|
||||
return server.set_torrents_tag(ids=hashs, tags=tags)
|
||||
|
||||
def start_torrents(
|
||||
self, hashs: Union[list, str], downloader: Optional[str] = None
|
||||
) -> Optional[bool]:
|
||||
|
||||
@@ -309,6 +309,7 @@ class TransmissionModule(_ModuleBase, _DownloaderBase[Transmission]):
|
||||
state="paused" if torrent.status == "stopped" else "downloading",
|
||||
dlspeed=StringUtils.str_filesize(dlspeed),
|
||||
upspeed=StringUtils.str_filesize(upspeed),
|
||||
tags=",".join(torrent.labels or []),
|
||||
left_time=StringUtils.str_secends(torrent.left_until_done / dlspeed) if dlspeed > 0 else ''
|
||||
))
|
||||
finally:
|
||||
@@ -353,6 +354,23 @@ class TransmissionModule(_ModuleBase, _DownloaderBase[Transmission]):
|
||||
return None
|
||||
return server.delete_torrents(delete_file=delete_file, ids=hashs)
|
||||
|
||||
def set_torrents_tag(self, hashs: Union[str, list], tags: list,
|
||||
downloader: Optional[str] = None) -> Optional[bool]:
|
||||
"""
|
||||
设置种子标签
|
||||
:param hashs: 种子Hash
|
||||
:param tags: 标签列表
|
||||
:param downloader: 下载器
|
||||
:return: bool
|
||||
"""
|
||||
# 获取下载器
|
||||
server: Transmission = self.get_instance(downloader)
|
||||
if not server:
|
||||
return None
|
||||
# 获取原标签,TR默认会覆盖,需追加
|
||||
org_tags = server.get_torrent_tags(ids=hashs)
|
||||
return server.set_torrent_tag(ids=hashs, tags=tags, org_tags=org_tags)
|
||||
|
||||
def start_torrents(self, hashs: Union[list, str],
|
||||
downloader: Optional[str] = None) -> Optional[bool]:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user