mirror of
https://github.com/d0zingcat/MoviePilot-Plugins.git
synced 2026-05-13 15:09:12 +00:00
259 lines
6.8 KiB
Python
259 lines
6.8 KiB
Python
from typing import Set, List
|
||
|
||
class Constants():
|
||
"""
|
||
常量
|
||
"""
|
||
# 下载器ID
|
||
# qb下载器id
|
||
qb_downloader_id: str = 'qbittorrent'
|
||
# tr下载器id
|
||
tr_downloader_id: str = 'transmission'
|
||
|
||
class TaskResult():
|
||
"""
|
||
任务执行结果
|
||
"""
|
||
def __init__(self, name: str):
|
||
self.__name: str = name
|
||
self.__success: bool = True
|
||
self.__total: int = 0
|
||
self.__seeding: int = 0
|
||
self.__tagging: int = 0
|
||
self.__delete: int = 0
|
||
|
||
def get_name(self) -> str:
|
||
return self.__name
|
||
|
||
def set_success(self, success: bool):
|
||
self.__success = success
|
||
return self
|
||
|
||
def is_success(self):
|
||
return self.__success
|
||
|
||
def set_total(self, total: int):
|
||
self.__total = total
|
||
return self
|
||
|
||
def get_total(self):
|
||
return self.__total
|
||
|
||
def set_seeding(self, seeding: int):
|
||
self.__seeding = seeding
|
||
return self
|
||
|
||
def get_seeding(self):
|
||
return self.__seeding
|
||
|
||
def set_tagging(self, tagging: int):
|
||
self.__tagging = tagging
|
||
return self
|
||
|
||
def get_tagging(self):
|
||
return self.__tagging
|
||
|
||
def set_delete(self, delete: int):
|
||
self.__delete = delete
|
||
return self
|
||
|
||
def get_delete(self):
|
||
return self.__delete
|
||
|
||
class TaskContext():
|
||
"""
|
||
任务上下文
|
||
"""
|
||
def __init__(self):
|
||
# 选择的下载器集合,为None时表示选择全部
|
||
self.__selected_downloaders: Set[str] = None
|
||
|
||
# 启用的子任务
|
||
# 启用做种
|
||
self.__enable_seeding: bool = True
|
||
# 启用打标
|
||
self.__enable_tagging: bool = True
|
||
# 启用删种
|
||
self.__enable_delete: bool = True
|
||
|
||
# 选择的种子,为None时表示选择全部
|
||
#self.__selected_torrents: Set[str] = None
|
||
self.__selected_torrents = None
|
||
|
||
# 源文件删除事件数据
|
||
self.__deleted_event_data = None
|
||
|
||
# 任务结果集
|
||
self.__results: List[TaskResult] = None
|
||
|
||
# 操作用户名
|
||
self.__username: str = None
|
||
|
||
def select_downloader(self, downloader_id: str):
|
||
"""
|
||
选择下载器
|
||
:param downloader_id: 下载器id
|
||
"""
|
||
if not downloader_id:
|
||
return self
|
||
if not self.__selected_downloaders:
|
||
self.__selected_downloaders = set()
|
||
self.__selected_downloaders.add(downloader_id)
|
||
return self
|
||
|
||
def select_downloaders(self, downloader_ids: List[str]):
|
||
"""
|
||
选择下载器
|
||
:param downloader_ids: 下载器ids
|
||
"""
|
||
if not downloader_ids:
|
||
return self
|
||
for downloader_id in downloader_ids:
|
||
self.select_downloader(downloader_id)
|
||
return self
|
||
|
||
def __is_selected_the_downloader(self, downloader_id: str) -> bool:
|
||
"""
|
||
是否选择了指定的下载器
|
||
:param downloader_id: 下载器id
|
||
:return: 是否选择了指定的下载器
|
||
"""
|
||
if not downloader_id:
|
||
return False
|
||
return True if self.__selected_downloaders == None \
|
||
or downloader_id in self.__selected_downloaders \
|
||
else False
|
||
|
||
def is_selected_qb_downloader(self) -> bool:
|
||
"""
|
||
是否选择了qb下载器
|
||
:return: 是否选择了qb下载器
|
||
"""
|
||
return self.__is_selected_the_downloader(Constants.qb_downloader_id)
|
||
|
||
def is_selected_tr_downloader(self) -> bool:
|
||
"""
|
||
是否选择了tr下载器
|
||
:return: 是否选择了tr下载器
|
||
"""
|
||
return self.__is_selected_the_downloader(Constants.tr_downloader_id)
|
||
|
||
def enable_seeding(self, enable_seeding: bool = True):
|
||
"""
|
||
是否启用做种
|
||
:param enable_seeding: 是否启用做种
|
||
"""
|
||
self.__enable_seeding = enable_seeding if enable_seeding else False
|
||
return self
|
||
|
||
def is_enabled_seeding(self) -> bool:
|
||
"""
|
||
是否启用了做种
|
||
:return: 是否启用了做种
|
||
"""
|
||
return self.__enable_seeding
|
||
|
||
def enable_tagging(self, enable_tagging: bool = True):
|
||
"""
|
||
是否启用打标
|
||
:param enable_tagging: 是否启用打标
|
||
"""
|
||
self.__enable_tagging = enable_tagging if enable_tagging else False
|
||
return self
|
||
|
||
def is_enabled_tagging(self) -> bool:
|
||
"""
|
||
是否启用了打标
|
||
:return: 是否启用了打标
|
||
"""
|
||
return self.__enable_tagging
|
||
|
||
def enable_delete(self, enable_delete: bool = True):
|
||
"""
|
||
是否启用删种
|
||
:param enable_delete: 是否启用删种
|
||
"""
|
||
self.__enable_delete = enable_delete if enable_delete else False
|
||
return self
|
||
|
||
def is_enabled_delete(self) -> bool:
|
||
"""
|
||
是否启用了删种
|
||
:return: 是否启用了删种
|
||
"""
|
||
return self.__enable_delete
|
||
|
||
def select_torrent(self, torrent: str):
|
||
"""
|
||
选择种子
|
||
:param torrent: 种子key
|
||
"""
|
||
if not torrent:
|
||
return self
|
||
if not self.__selected_torrents:
|
||
self.__selected_torrents = set()
|
||
self.__selected_torrents.add(torrent)
|
||
return self
|
||
|
||
def select_torrents(self, torrents: List[str]):
|
||
"""
|
||
选择种子
|
||
:param torrents: 种子keys
|
||
"""
|
||
if not torrents:
|
||
return self
|
||
for torrent in torrents:
|
||
self.select_torrent(torrent)
|
||
return self
|
||
|
||
#def get_selected_torrents(self) -> Set[str]:
|
||
def get_selected_torrents(self):
|
||
"""
|
||
获取所有选择的种子
|
||
"""
|
||
return self.__selected_torrents
|
||
|
||
def set_deleted_event_data(self, deleted_event_data: dict):
|
||
"""
|
||
设置源文件删除事件数据
|
||
"""
|
||
self.__deleted_event_data = deleted_event_data
|
||
return self
|
||
|
||
def get_deleted_event_data(self) -> dict:
|
||
"""
|
||
获取源文件删除事件数据
|
||
"""
|
||
return self.__deleted_event_data
|
||
|
||
def save_result(self, result: TaskResult):
|
||
"""
|
||
存储结果
|
||
:param result: 结果
|
||
"""
|
||
if not result:
|
||
return self
|
||
if not self.__results:
|
||
self.__results = []
|
||
self.__results.append(result)
|
||
return self
|
||
|
||
def get_results(self) -> List[TaskResult]:
|
||
"""
|
||
获取结果集
|
||
"""
|
||
return self.__results
|
||
|
||
def set_username(self, username: str):
|
||
"""
|
||
设置操作用户名
|
||
"""
|
||
self.__username = username
|
||
return self
|
||
|
||
def get_username(self) -> str:
|
||
"""
|
||
获取操作用户名
|
||
"""
|
||
return self.__username
|