feat: IYUU自动辅种开启跳过校验后增加手动确认是否开始任务

This commit is contained in:
iamck
2025-01-30 17:59:45 +08:00
parent 7f16bd6629
commit 82a91ae356
3 changed files with 58 additions and 23 deletions

View File

@@ -217,11 +217,12 @@
"name": "IYUU自动辅种",
"description": "基于IYUU官方Api实现自动辅种。",
"labels": "做种,IYUU",
"version": "2.12",
"version": "2.13",
"icon": "IYUU.png",
"author": "jxxghp,ckun",
"author": "jxxghp,CKun",
"level": 2,
"history": {
"v2.13": "开启跳过校验后需手动开启自动开始",
"v2.12": "增加qb下载器分类复用配置",
"v2.11": "修复qb跳过校验不自动开始的问题",
"v2.10": "Revert 辅种结束后,一起开始所有辅种后暂停的种子(排除了出错的种子)",

View File

@@ -1,5 +1,9 @@
# IYUU自动辅种
## 清除缓存后运行
将清理辅种成功或失败的种子缓存,完整跑完每个种子每个站点的辅种操作。
## 下载器说明
下载器为多选,选择多个下载器时,各个下载器的种子辅种互不影响
@@ -43,10 +47,12 @@
- 仅QB下载器有效跳过后可能会导致反复下载刷掉分享率、做假种的情况。本人仅仅测试了 QB `v4.6.6` 跳过无文件时不会自动开始,若有问题及时反馈将增加按钮选择是否需要跳过
- Tr下载器在4.0.x中属于默认行为
## 自动开始
跳过校验时有效
>QB开启跳过校验后需要手动开启自动开始后种子才会自动开始QB跳过可能会出现种子完整性误判出现反复下载刷掉分享率和做假种的情况请自行甄别。
## 分类复用
将复用原种子的分,当原种子无分类时使用[辅种后增加分类](#辅种后增加分类)配置中的分类
## 清除缓存后运行
将清理辅种成功或失败的种子缓存,完整跑完每个种子每个站点的辅种操作。
将复用原种子的分,当原种子无分类时使用[辅种后增加分类](#辅种后增加分类)配置中的分类

View File

@@ -33,9 +33,9 @@ class IYUUAutoSeed(_PluginBase):
# 插件图标
plugin_icon = "IYUU.png"
# 插件版本
plugin_version = "2.12"
plugin_version = "2.13"
# 插件作者
plugin_author = "jxxghp,ckun"
plugin_author = "jxxghp,CKun"
# 作者主页
author_url = "https://github.com/jxxghp"
# 插件配置项ID前缀
@@ -119,6 +119,7 @@ class IYUUAutoSeed(_PluginBase):
self._labelsafterseed = config.get("labelsafterseed") if config.get("labelsafterseed") else "已整理,辅种"
self._categoryafterseed = config.get("categoryafterseed")
self._auto_category = config.get("auto_category")
self._auto_start = config.get("auto_start")
self._addhosttotag = config.get("addhosttotag")
self._size = float(config.get("size")) if config.get("size") else 0
self._clearcache = config.get("clearcache")
@@ -261,7 +262,7 @@ class IYUUAutoSeed(_PluginBase):
'component': 'VCol',
'props': {
'cols': 12,
'md': 4
'md': 3
},
'content': [
{
@@ -277,7 +278,7 @@ class IYUUAutoSeed(_PluginBase):
'component': 'VCol',
'props': {
'cols': 12,
'md': 4
'md': 3
},
'content': [
{
@@ -293,7 +294,23 @@ class IYUUAutoSeed(_PluginBase):
'component': 'VCol',
'props': {
'cols': 12,
'md': 4
'md': 3
},
'content': [
{
'component': 'VSwitch',
'props': {
'model': 'clearcache',
'label': '清除缓存后运行',
}
}
]
},
{
'component': 'VCol',
'props': {
'cols': 12,
'md': 3
},
'content': [
{
@@ -549,8 +566,8 @@ class IYUUAutoSeed(_PluginBase):
{
'component': 'VSwitch',
'props': {
'model': 'auto_category',
'label': '分类复用(仅QB有效)',
'model': 'auto_start',
'label': '自动开始(跳过校验有效)',
}
}
]
@@ -565,8 +582,8 @@ class IYUUAutoSeed(_PluginBase):
{
'component': 'VSwitch',
'props': {
'model': 'clearcache',
'label': '清除缓存后运行',
'model': 'auto_category',
'label': '分类复用(仅QB有效)',
}
}
]
@@ -627,6 +644,7 @@ class IYUUAutoSeed(_PluginBase):
"clearcache": False,
"addhosttotag": False,
"auto_category": False,
"auto_start": False,
"cron": "",
"token": "",
"downloaders": [],
@@ -660,6 +678,7 @@ class IYUUAutoSeed(_PluginBase):
"categoryafterseed": self._categoryafterseed,
"addhosttotag": self._addhosttotag,
"auto_category": self._auto_category,
"auto_start": self._auto_start,
"size": self._size,
"success_caches": self._success_caches,
"error_caches": self._error_caches,
@@ -1100,22 +1119,31 @@ class IYUUAutoSeed(_PluginBase):
self.success += 1
if service.type == "qbittorrent":
if self._skipverify:
# 跳过校验
logger.info(f"{download_id} 跳过校验,请自行检查...")
if self._auto_start:
logger.info(f"{download_id} 跳过校验,开启自动开始,注意观察种子的完整性")
self.__add_recheck_torrents(service, download_id)
else:
# 跳过校验
logger.info(f"{download_id} 跳过校验,请自行检查手动开始任务...")
else:
# 开始校验种子
downloader_obj.recheck_torrents(ids=[download_id])
# 追加校验任务
logger.info(f"添加校验检查任务:{download_id} ...")
if not self._recheck_torrents.get(service.name):
self._recheck_torrents[service.name] = []
self._recheck_torrents[service.name].append(download_id)
self.add_torrent(service, download_id)
else:
self.add_torrent(service, download_id)
# 下载成功
logger.info(f"成功添加辅种下载,站点:{site_info.get('name')},种子链接:{torrent_url}")
# 成功也加入缓存,有一些改了路径校验不通过的,手动删除后,下一次又会辅上
self._success_caches.append(seed.get("info_hash"))
return True
def __add_recheck_torrents(self, service: ServiceInfo, download_id: str):
# 追加校验任务
logger.info(f"添加校验检查任务:{download_id} ...")
if not self._recheck_torrents.get(service.name):
self._recheck_torrents[service.name] = []
self._recheck_torrents[service.name].append(download_id)
@staticmethod
def __get_hash(torrent: Any, dl_type: str):
"""