This commit is contained in:
jxxghp
2023-06-07 20:03:53 +08:00
parent a1d65b7c87
commit 061c16c659
14 changed files with 91 additions and 53 deletions

View File

@ -28,10 +28,16 @@ class TransmissionModule(_ModuleBase):
"""
# 如果要选择文件则先暂停
is_paused = True if episodes else False
# 标签
if settings.TORRENT_TAG:
labels = [settings.TORRENT_TAG]
else:
labels = None
# 添加任务
torrent = self.transmission.add_torrent(content=torrent_path.read_bytes(),
download_dir=settings.DOWNLOAD_PATH,
is_paused=is_paused,
labels=labels,
cookie=cookie)
if not torrent:
return None, f"添加种子任务失败:{torrent_path}"
@ -70,16 +76,22 @@ class TransmissionModule(_ModuleBase):
else:
return torrent_hash, "添加下载任务成功"
def transfer_completed(self, hashs: Union[str, list]) -> bool:
"""
转移完成后的处理
:param hashs: 种子Hash
:return: 处理状态
"""
return self.transmission.set_torrent_tag(ids=hashs, tag=['已整理'])
def list_torrents(self, status: TorrentStatus) -> Optional[List[dict]]:
"""
获取下载器种子列表
:param status: 种子状态
:return: 下载器中符合状态的种子列表
"""
if status == TorrentStatus.COMPLETE:
torrents = self.transmission.get_completed_torrents()
elif status == TorrentStatus.DOWNLOADING:
torrents = self.transmission.get_completed_torrents()
if status == TorrentStatus.TRANSFER:
torrents = self.transmission.get_transfer_torrents(tag=settings.TORRENT_TAG)
else:
return None
return torrents

View File

@ -50,7 +50,7 @@ class Transmission(metaclass=Singleton):
return None
def get_torrents(self, ids: Union[str, list] = None, status: Union[str, list] = None,
tag: Union[str, list] = None) -> Tuple[list, bool]:
tag: Union[str, list] = None) -> Tuple[List[Torrent], bool]:
"""
获取种子列表
返回结果 种子列表, 是否有错误
@ -81,7 +81,8 @@ class Transmission(metaclass=Singleton):
ret_torrents.append(torrent)
return ret_torrents, False
def get_completed_torrents(self, ids: Union[str, list] = None, tag: Union[str, list] = None) -> Optional[list]:
def get_completed_torrents(self, ids: Union[str, list] = None,
tag: Union[str, list] = None) -> Optional[List[Torrent]]:
"""
获取已完成的种子列表
return 种子列表, 发生错误时返回None
@ -96,7 +97,7 @@ class Transmission(metaclass=Singleton):
return None
def get_downloading_torrents(self, ids: Union[str, list] = None,
tag: Union[str, list] = None) -> Optional[list]:
tag: Union[str, list] = None) -> Optional[List[Torrent]]:
"""
获取正在下载的种子列表
return 种子列表, 发生错误时返回None
@ -112,30 +113,7 @@ class Transmission(metaclass=Singleton):
logger.error(f"获取正在下载的种子列表出错:{err}")
return None
def set_torrents_status(self, ids: Union[str, list],
tags: Union[str, list] = None) -> bool:
"""
设置种子为已整理状态
"""
if not self.trc:
return False
# 合成标签
if tags:
if not isinstance(tags, list):
tags = [tags, "已整理"]
else:
tags.append("已整理")
else:
tags = ["已整理"]
# 打标签
try:
self.trc.change_torrent(labels=tags, ids=ids)
return True
except Exception as err:
logger.error(f"设置种子为已整理状态出错:{err}")
return False
def set_torrent_tag(self, ids: str, tag: Union[str, list]) -> bool:
def set_torrent_tag(self, ids: str, tag: list) -> bool:
"""
设置种子标签
"""
@ -148,7 +126,7 @@ class Transmission(metaclass=Singleton):
logger.error(f"设置种子标签出错:{err}")
return False
def get_transfer_task(self, tag: Union[str, list] = None) -> List[dict]:
def get_transfer_torrents(self, tag: Union[str, list] = None) -> List[dict]:
"""
获取下载文件转移任务种子
"""
@ -174,6 +152,7 @@ class Transmission(metaclass=Singleton):
logger.debug(f"未获取到 {torrent.name} 下载保存路径")
continue
trans_tasks.append({
'title': torrent.name,
'path': Path(settings.DOWNLOAD_PATH) / torrent.name,
'id': torrent.hashString,
'tags': torrent.labels
@ -183,12 +162,14 @@ class Transmission(metaclass=Singleton):
def add_torrent(self, content: Union[str, bytes],
is_paused: bool = False,
download_dir: str = None,
labels=None,
cookie=None) -> Optional[Torrent]:
"""
添加下载任务
:param content: 种子urls或文件内容
:param is_paused: 添加后暂停
:param download_dir: 下载路径
:param labels: 标签
:param cookie: 站点Cookie用于辅助下载种子
:return: Torrent
"""
@ -196,6 +177,7 @@ class Transmission(metaclass=Singleton):
return self.trc.add_torrent(torrent=content,
download_dir=download_dir,
paused=is_paused,
labels=labels,
cookies=cookie)
except Exception as err:
logger.error(f"添加种子出错:{err}")