Merge branch 'jxxghp:main' into main
This commit is contained in:
commit
2e80586436
@ -255,10 +255,11 @@ location /cgi-bin/menu/create {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||

|
|
||||||
|
@ -185,6 +185,7 @@ class TransferChain(ChainBase):
|
|||||||
# 转移成功的不再处理
|
# 转移成功的不再处理
|
||||||
transferd = self.transferhis.get_by_src(file_path_str)
|
transferd = self.transferhis.get_by_src(file_path_str)
|
||||||
if transferd and transferd.status:
|
if transferd and transferd.status:
|
||||||
|
logger.info(f"{file_path} 已成功转移过,如需重新处理,请删除历史记录。")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# 更新进度
|
# 更新进度
|
||||||
|
@ -132,75 +132,89 @@ class BrushFlow(_PluginBase):
|
|||||||
self.qb = Qbittorrent()
|
self.qb = Qbittorrent()
|
||||||
self.tr = Transmission()
|
self.tr = Transmission()
|
||||||
# 检查配置
|
# 检查配置
|
||||||
|
if self._downloader == "qbittorrent":
|
||||||
|
if self.qb.is_inactive():
|
||||||
|
logger.error("站点刷流任务出错:Qbittorrent未连接")
|
||||||
|
self.systemmessage.put("站点刷流任务出错:Qbittorrent未连接")
|
||||||
|
return
|
||||||
|
elif self._downloader == "transmission":
|
||||||
|
if self.tr.is_inactive():
|
||||||
|
logger.error("站点刷流任务出错:Transmission未连接")
|
||||||
|
self.systemmessage.put("站点刷流任务出错:Transmission未连接")
|
||||||
|
return
|
||||||
if self._disksize and not StringUtils.is_number(self._disksize):
|
if self._disksize and not StringUtils.is_number(self._disksize):
|
||||||
|
logger.error(f"站点刷流任务出错,保种体积设置错误:{self._disksize}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,保种体积设置错误:{self._disksize}")
|
||||||
self._disksize = 0
|
self._disksize = 0
|
||||||
logger.error(f"保种体积设置错误:{self._disksize}")
|
|
||||||
self.systemmessage.put(f"保种体积设置错误:{self._disksize}")
|
|
||||||
return
|
return
|
||||||
if self._maxupspeed and not StringUtils.is_number(self._maxupspeed):
|
if self._maxupspeed and not StringUtils.is_number(self._maxupspeed):
|
||||||
|
logger.error(f"站点刷流任务出错,总上传带宽设置错误:{self._maxupspeed}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,总上传带宽设置错误:{self._maxupspeed}")
|
||||||
self._maxupspeed = 0
|
self._maxupspeed = 0
|
||||||
logger.error(f"总上传带宽设置错误:{self._maxupspeed}")
|
|
||||||
self.systemmessage.put(f"总上传带宽设置错误:{self._maxupspeed}")
|
|
||||||
return
|
return
|
||||||
if self._maxdlspeed and not StringUtils.is_number(self._maxdlspeed):
|
if self._maxdlspeed and not StringUtils.is_number(self._maxdlspeed):
|
||||||
|
logger.error(f"站点刷流任务出错,总下载带宽设置错误:{self._maxdlspeed}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,总下载带宽设置错误:{self._maxdlspeed}")
|
||||||
self._maxdlspeed = 0
|
self._maxdlspeed = 0
|
||||||
logger.error(f"总下载带宽设置错误:{self._maxdlspeed}")
|
|
||||||
self.systemmessage.put(f"总下载带宽设置错误:{self._maxdlspeed}")
|
|
||||||
return
|
return
|
||||||
if self._maxdlcount and not StringUtils.is_number(self._maxdlcount):
|
if self._maxdlcount and not StringUtils.is_number(self._maxdlcount):
|
||||||
|
logger.error(f"站点刷流任务出错,同时下载任务数设置错误:{self._maxdlcount}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,同时下载任务数设置错误:{self._maxdlcount}")
|
||||||
self._maxdlcount = 0
|
self._maxdlcount = 0
|
||||||
logger.error(f"同时下载任务数设置错误:{self._maxdlcount}")
|
|
||||||
self.systemmessage.put(f"同时下载任务数设置错误:{self._maxdlcount}")
|
|
||||||
return
|
|
||||||
if self._size and not StringUtils.is_number(self._size):
|
|
||||||
self._size = 0
|
|
||||||
logger.error(f"种子大小设置错误:{self._size}")
|
|
||||||
self.systemmessage.put(f"种子大小设置错误:{self._size}")
|
|
||||||
return
|
|
||||||
if self._seeder and not StringUtils.is_number(self._seeder):
|
|
||||||
self._seeder = 0
|
|
||||||
logger.error(f"做种人数设置错误:{self._seeder}")
|
|
||||||
self.systemmessage.put(f"做种人数设置错误:{self._seeder}")
|
|
||||||
return
|
return
|
||||||
|
if self._size:
|
||||||
|
size = str(self._size).split("-")[0]
|
||||||
|
if not StringUtils.is_number(size):
|
||||||
|
logger.error(f"站点刷流任务出错,种子大小设置错误:{self._size}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,种子大小设置错误:{self._size}")
|
||||||
|
self._size = 0
|
||||||
|
return
|
||||||
|
if self._seeder:
|
||||||
|
seeder = str(self._seeder).split("-")[0]
|
||||||
|
if not StringUtils.is_number(seeder):
|
||||||
|
logger.error(f"站点刷流任务出错,做种人数设置错误:{self._seeder}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,做种人数设置错误:{self._seeder}")
|
||||||
|
self._seeder = 0
|
||||||
|
return
|
||||||
if self._seed_time and not StringUtils.is_number(self._seed_time):
|
if self._seed_time and not StringUtils.is_number(self._seed_time):
|
||||||
|
logger.error(f"站点刷流任务出错,做种时间设置错误:{self._seed_time}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,做种时间设置错误:{self._seed_time}")
|
||||||
self._seed_time = 0
|
self._seed_time = 0
|
||||||
logger.error(f"做种时间设置错误:{self._seed_time}")
|
|
||||||
self.systemmessage.put(f"做种时间设置错误:{self._seed_time}")
|
|
||||||
return
|
return
|
||||||
if self._seed_ratio and not StringUtils.is_number(self._seed_ratio):
|
if self._seed_ratio and not StringUtils.is_number(self._seed_ratio):
|
||||||
|
logger.error(f"站点刷流任务出错,分享率设置错误:{self._seed_ratio}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,分享率设置错误:{self._seed_ratio}")
|
||||||
self._seed_ratio = 0
|
self._seed_ratio = 0
|
||||||
logger.error(f"分享率设置错误:{self._seed_ratio}")
|
|
||||||
self.systemmessage.put(f"分享率设置错误:{self._seed_ratio}")
|
|
||||||
return
|
return
|
||||||
if self._seed_size and not StringUtils.is_number(self._seed_size):
|
if self._seed_size and not StringUtils.is_number(self._seed_size):
|
||||||
|
logger.error(f"站点刷流任务出错,上传量设置错误:{self._seed_size}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,上传量设置错误:{self._seed_size}")
|
||||||
self._seed_size = 0
|
self._seed_size = 0
|
||||||
logger.error(f"上传量设置错误:{self._seed_size}")
|
|
||||||
self.systemmessage.put(f"上传量设置错误:{self._seed_size}")
|
|
||||||
return
|
return
|
||||||
if self._download_time and not StringUtils.is_number(self._download_time):
|
if self._download_time and not StringUtils.is_number(self._download_time):
|
||||||
|
logger.error(f"站点刷流任务出错,下载超时时间设置错误:{self._download_time}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,下载超时时间设置错误:{self._download_time}")
|
||||||
self._download_time = 0
|
self._download_time = 0
|
||||||
logger.error(f"下载超时时间设置错误:{self._download_time}")
|
|
||||||
self.systemmessage.put(f"下载超时时间设置错误:{self._download_time}")
|
|
||||||
return
|
return
|
||||||
if self._seed_avgspeed and not StringUtils.is_number(self._seed_avgspeed):
|
if self._seed_avgspeed and not StringUtils.is_number(self._seed_avgspeed):
|
||||||
|
logger.error(f"站点刷流任务出错,平均上传速度设置错误:{self._seed_avgspeed}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,平均上传速度设置错误:{self._seed_avgspeed}")
|
||||||
self._seed_avgspeed = 0
|
self._seed_avgspeed = 0
|
||||||
logger.error(f"平均上传速度设置错误:{self._seed_avgspeed}")
|
|
||||||
self.systemmessage.put(f"平均上传速度设置错误:{self._seed_avgspeed}")
|
|
||||||
return
|
return
|
||||||
if self._seed_inactivetime and not StringUtils.is_number(self._seed_inactivetime):
|
if self._seed_inactivetime and not StringUtils.is_number(self._seed_inactivetime):
|
||||||
|
logger.error(f"站点刷流任务出错,未活动时间设置错误:{self._seed_inactivetime}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,未活动时间设置错误:{self._seed_inactivetime}")
|
||||||
self._seed_inactivetime = 0
|
self._seed_inactivetime = 0
|
||||||
logger.error(f"未活动时间设置错误:{self._seed_inactivetime}")
|
|
||||||
self.systemmessage.put(f"未活动时间设置错误:{self._seed_inactivetime}")
|
|
||||||
return
|
return
|
||||||
if self._up_speed and not StringUtils.is_number(self._up_speed):
|
if self._up_speed and not StringUtils.is_number(self._up_speed):
|
||||||
|
logger.error(f"站点刷流任务出错,单任务上传限速设置错误:{self._up_speed}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,单任务上传限速设置错误:{self._up_speed}")
|
||||||
self._up_speed = 0
|
self._up_speed = 0
|
||||||
logger.error(f"单任务上传限速设置错误:{self._up_speed}")
|
|
||||||
self.systemmessage.put(f"单任务上传限速设置错误:{self._up_speed}")
|
|
||||||
return
|
return
|
||||||
if self._dl_speed and not StringUtils.is_number(self._dl_speed):
|
if self._dl_speed and not StringUtils.is_number(self._dl_speed):
|
||||||
|
logger.error(f"站点刷流任务出错,单任务下载限速设置错误:{self._dl_speed}")
|
||||||
|
self.systemmessage.put(f"站点刷流任务出错,单任务下载限速设置错误:{self._dl_speed}")
|
||||||
self._dl_speed = 0
|
self._dl_speed = 0
|
||||||
logger.error(f"单任务下载限速设置错误:{self._dl_speed}")
|
|
||||||
self.systemmessage.put(f"单任务下载限速设置错误:{self._dl_speed}")
|
|
||||||
return
|
return
|
||||||
|
|
||||||
# 检查必要条件
|
# 检查必要条件
|
||||||
@ -221,13 +235,16 @@ class BrushFlow(_PluginBase):
|
|||||||
self._scheduler.add_job(self.brush, 'date',
|
self._scheduler.add_job(self.brush, 'date',
|
||||||
run_date=datetime.now(
|
run_date=datetime.now(
|
||||||
tz=pytz.timezone(settings.TZ)
|
tz=pytz.timezone(settings.TZ)
|
||||||
) + timedelta(seconds=3))
|
) + timedelta(seconds=3),
|
||||||
|
name="站点刷流服务")
|
||||||
# 关闭一次性开关
|
# 关闭一次性开关
|
||||||
self._onlyonce = False
|
self._onlyonce = False
|
||||||
self.__update_config()
|
self.__update_config()
|
||||||
if self._scheduler.get_jobs():
|
if self._scheduler.get_jobs():
|
||||||
# 增加检查任务
|
# 增加检查任务
|
||||||
self._scheduler.add_job(self.check, 'interval', minutes=self._check_interval)
|
self._scheduler.add_job(self.check, 'interval',
|
||||||
|
minutes=self._check_interval,
|
||||||
|
name="站点刷流检查服务")
|
||||||
# 启动服务
|
# 启动服务
|
||||||
self._scheduler.print_jobs()
|
self._scheduler.print_jobs()
|
||||||
self._scheduler.start()
|
self._scheduler.start()
|
||||||
@ -741,13 +758,13 @@ class BrushFlow(_PluginBase):
|
|||||||
else:
|
else:
|
||||||
data_list = data_list.values()
|
data_list = data_list.values()
|
||||||
# 总上传量格式化
|
# 总上传量格式化
|
||||||
total_upload = StringUtils.str_filesize(stattistic_data.get("uploaded"))
|
total_upload = StringUtils.str_filesize(stattistic_data.get("uploaded") or 0)
|
||||||
# 总下载量格式化
|
# 总下载量格式化
|
||||||
total_download = StringUtils.str_filesize(stattistic_data.get("downloaded"))
|
total_download = StringUtils.str_filesize(stattistic_data.get("downloaded") or 0)
|
||||||
# 下载种子数
|
# 下载种子数
|
||||||
total_count = stattistic_data.get("count")
|
total_count = stattistic_data.get("count") or 0
|
||||||
# 删除种子数
|
# 删除种子数
|
||||||
total_deleted = stattistic_data.get("deleted")
|
total_deleted = stattistic_data.get("deleted") or 0
|
||||||
# 种子数据明细
|
# 种子数据明细
|
||||||
torrent_trs = [
|
torrent_trs = [
|
||||||
{
|
{
|
||||||
@ -785,6 +802,9 @@ class BrushFlow(_PluginBase):
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
'component': 'td',
|
'component': 'td',
|
||||||
|
'props': {
|
||||||
|
'class': 'text-no-wrap'
|
||||||
|
},
|
||||||
'text': "已删除" if data.get("deleted") else "正常"
|
'text': "已删除" if data.get("deleted") else "正常"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1038,7 +1058,7 @@ class BrushFlow(_PluginBase):
|
|||||||
{
|
{
|
||||||
'component': 'VImg',
|
'component': 'VImg',
|
||||||
'props': {
|
'props': {
|
||||||
'src': '/plugin/torrentremover.png'
|
'src': '/plugin/delete.png'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1091,6 +1111,9 @@ class BrushFlow(_PluginBase):
|
|||||||
'content': [
|
'content': [
|
||||||
{
|
{
|
||||||
'component': 'thead',
|
'component': 'thead',
|
||||||
|
'props': {
|
||||||
|
'class': 'text-no-wrap'
|
||||||
|
},
|
||||||
'content': [
|
'content': [
|
||||||
{
|
{
|
||||||
'component': 'th',
|
'component': 'th',
|
||||||
@ -1214,7 +1237,10 @@ class BrushFlow(_PluginBase):
|
|||||||
task_info: Dict[str, dict] = self.get_data("torrents") or {}
|
task_info: Dict[str, dict] = self.get_data("torrents") or {}
|
||||||
if task_info:
|
if task_info:
|
||||||
# 当前保种大小
|
# 当前保种大小
|
||||||
torrents_size = sum([task.get("size") or 0 for task in task_info.values()])
|
torrents_size = sum([
|
||||||
|
task.get("size") or 0
|
||||||
|
for task in task_info.values() if not task.get("deleted")
|
||||||
|
])
|
||||||
else:
|
else:
|
||||||
torrents_size = 0
|
torrents_size = 0
|
||||||
# 读取统计数据
|
# 读取统计数据
|
||||||
@ -1306,7 +1332,8 @@ class BrushFlow(_PluginBase):
|
|||||||
# 同时下载任务数
|
# 同时下载任务数
|
||||||
downloads = self.__get_downloading_count(self._downloader)
|
downloads = self.__get_downloading_count(self._downloader)
|
||||||
if self._maxdlcount and downloads >= int(self._maxdlcount):
|
if self._maxdlcount and downloads >= int(self._maxdlcount):
|
||||||
continue
|
logger.warn(f"当前同时下载任务数 {downloads} 已达到最大值 {self._maxdlcount},停止新增任务")
|
||||||
|
break
|
||||||
# 获取下载器的下载信息
|
# 获取下载器的下载信息
|
||||||
downloader_info = self.__get_downloader_info()
|
downloader_info = self.__get_downloader_info()
|
||||||
if downloader_info:
|
if downloader_info:
|
||||||
@ -1315,11 +1342,15 @@ class BrushFlow(_PluginBase):
|
|||||||
# 总上传带宽(KB/s)
|
# 总上传带宽(KB/s)
|
||||||
if self._maxupspeed \
|
if self._maxupspeed \
|
||||||
and current_upload_speed >= float(self._maxupspeed) * 1024:
|
and current_upload_speed >= float(self._maxupspeed) * 1024:
|
||||||
continue
|
logger.warn(f"当前总上传带宽 {StringUtils.str_filesize(current_upload_speed)} "
|
||||||
|
f"已达到最大值 {self._maxupspeed} KB/s,暂时停止新增任务")
|
||||||
|
break
|
||||||
# 总下载带宽(KB/s)
|
# 总下载带宽(KB/s)
|
||||||
if self._maxdlspeed \
|
if self._maxdlspeed \
|
||||||
and current_download_speed >= float(self._maxdlspeed) * 1024:
|
and current_download_speed >= float(self._maxdlspeed) * 1024:
|
||||||
continue
|
logger.warn(f"当前总下载带宽 {StringUtils.str_filesize(current_download_speed)} "
|
||||||
|
f"已达到最大值 {self._maxdlspeed} KB/s,暂时停止新增任务")
|
||||||
|
break
|
||||||
# 添加下载任务
|
# 添加下载任务
|
||||||
hash_string = self.__download(torrent=torrent)
|
hash_string = self.__download(torrent=torrent)
|
||||||
if not hash_string:
|
if not hash_string:
|
||||||
@ -1383,8 +1414,8 @@ class BrushFlow(_PluginBase):
|
|||||||
"downloaded": 0
|
"downloaded": 0
|
||||||
}
|
}
|
||||||
# 获取下载器中的种子
|
# 获取下载器中的种子
|
||||||
torrents, state = downloader.get_torrents(ids=check_hashs)
|
torrents, error = downloader.get_torrents(ids=check_hashs)
|
||||||
if not state:
|
if error:
|
||||||
logger.warn("连接下载器出错,将在下个时间周期重试")
|
logger.warn("连接下载器出错,将在下个时间周期重试")
|
||||||
return
|
return
|
||||||
if not torrents:
|
if not torrents:
|
||||||
@ -1485,6 +1516,12 @@ class BrushFlow(_PluginBase):
|
|||||||
# 更新统计数据
|
# 更新统计数据
|
||||||
statistic_info["uploaded"] = total_uploaded
|
statistic_info["uploaded"] = total_uploaded
|
||||||
statistic_info["downloaded"] = total_downloaded
|
statistic_info["downloaded"] = total_downloaded
|
||||||
|
# 打印统计数据
|
||||||
|
logger.info(f"刷流任务统计数据:"
|
||||||
|
f"总任务数:{len(task_info)},"
|
||||||
|
f"已删除:{statistic_info.get('deleted')},"
|
||||||
|
f"总上传量:{StringUtils.str_filesize(statistic_info.get('uploaded'))},"
|
||||||
|
f"总下载量:{StringUtils.str_filesize(statistic_info.get('downloaded'))}")
|
||||||
# 保存统计数据
|
# 保存统计数据
|
||||||
self.save_data("statistic", statistic_info)
|
self.save_data("statistic", statistic_info)
|
||||||
# 保存任务记录
|
# 保存任务记录
|
||||||
@ -1513,6 +1550,9 @@ class BrushFlow(_PluginBase):
|
|||||||
if self._downloader == "qbittorrent":
|
if self._downloader == "qbittorrent":
|
||||||
if not self.qb:
|
if not self.qb:
|
||||||
return None
|
return None
|
||||||
|
# 限速值转为bytes
|
||||||
|
up_speed = up_speed * 1024 if up_speed else None
|
||||||
|
down_speed = down_speed * 1024 if down_speed else None
|
||||||
# 生成随机Tag
|
# 生成随机Tag
|
||||||
tag = StringUtils.generate_random_str(10)
|
tag = StringUtils.generate_random_str(10)
|
||||||
state = self.qb.add_torrent(content=torrent.enclosure,
|
state = self.qb.add_torrent(content=torrent.enclosure,
|
||||||
@ -1740,7 +1780,7 @@ class BrushFlow(_PluginBase):
|
|||||||
return len(torrents) or 0
|
return len(torrents) or 0
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __get_pubminutes(pubdate: str) -> datetime:
|
def __get_pubminutes(pubdate: str) -> int:
|
||||||
"""
|
"""
|
||||||
将字符串转换为时间,并计算与当前时间差)(分钟)
|
将字符串转换为时间,并计算与当前时间差)(分钟)
|
||||||
"""
|
"""
|
||||||
|
@ -1 +1 @@
|
|||||||
APP_VERSION = 'v1.1.5'
|
APP_VERSION = 'v1.1.6'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user