Merge branch 'jxxghp:main' into main

This commit is contained in:
thsrite 2023-09-08 11:22:42 +08:00 committed by GitHub
commit 2e80586436
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 95 additions and 53 deletions

View File

@ -255,10 +255,11 @@ location /cgi-bin/menu/create {
}
```
![image](https://github.com/jxxghp/MoviePilot/assets/51039935/b8f0238d-847f-4f9d-b210-e905837362b9)
![image](https://github.com/jxxghp/MoviePilot/assets/51039935/f2654b09-26f3-464f-a0af-1de3f97832ee)
![image](https://github.com/jxxghp/MoviePilot/assets/51039935/28219233-ec7d-479b-b184-9a901c947dd1)
![image](https://github.com/jxxghp/MoviePilot/assets/51039935/fcb87529-56dd-43df-8337-6e34b8582819)
![image](https://github.com/jxxghp/MoviePilot/assets/51039935/f7df0806-668d-4c8b-ad41-133bf8f0bf73)
![image](https://github.com/jxxghp/MoviePilot/assets/51039935/bfa77c71-510a-46a6-9c1e-cf98cb101e3a)
![image](https://github.com/jxxghp/MoviePilot/assets/51039935/51cafd09-e38c-47f9-ae62-1e83ab8bf89b)
![image](https://github.com/jxxghp/MoviePilot/assets/51039935/f7ea77cd-0362-4c35-967c-7f1b22dbef05)

View File

@ -185,6 +185,7 @@ class TransferChain(ChainBase):
# 转移成功的不再处理
transferd = self.transferhis.get_by_src(file_path_str)
if transferd and transferd.status:
logger.info(f"{file_path} 已成功转移过,如需重新处理,请删除历史记录。")
continue
# 更新进度

View File

@ -132,75 +132,89 @@ class BrushFlow(_PluginBase):
self.qb = Qbittorrent()
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):
logger.error(f"站点刷流任务出错,保种体积设置错误:{self._disksize}")
self.systemmessage.put(f"站点刷流任务出错,保种体积设置错误:{self._disksize}")
self._disksize = 0
logger.error(f"保种体积设置错误:{self._disksize}")
self.systemmessage.put(f"保种体积设置错误:{self._disksize}")
return
if self._maxupspeed and not StringUtils.is_number(self._maxupspeed):
logger.error(f"站点刷流任务出错,总上传带宽设置错误:{self._maxupspeed}")
self.systemmessage.put(f"站点刷流任务出错,总上传带宽设置错误:{self._maxupspeed}")
self._maxupspeed = 0
logger.error(f"总上传带宽设置错误:{self._maxupspeed}")
self.systemmessage.put(f"总上传带宽设置错误:{self._maxupspeed}")
return
if self._maxdlspeed and not StringUtils.is_number(self._maxdlspeed):
logger.error(f"站点刷流任务出错,总下载带宽设置错误:{self._maxdlspeed}")
self.systemmessage.put(f"站点刷流任务出错,总下载带宽设置错误:{self._maxdlspeed}")
self._maxdlspeed = 0
logger.error(f"总下载带宽设置错误:{self._maxdlspeed}")
self.systemmessage.put(f"总下载带宽设置错误:{self._maxdlspeed}")
return
if self._maxdlcount and not StringUtils.is_number(self._maxdlcount):
logger.error(f"站点刷流任务出错,同时下载任务数设置错误:{self._maxdlcount}")
self.systemmessage.put(f"站点刷流任务出错,同时下载任务数设置错误:{self._maxdlcount}")
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):
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
logger.error(f"种子大小设置错误:{self._size}")
self.systemmessage.put(f"种子大小设置错误:{self._size}")
return
if self._seeder and not StringUtils.is_number(self._seeder):
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
logger.error(f"做种人数设置错误:{self._seeder}")
self.systemmessage.put(f"做种人数设置错误:{self._seeder}")
return
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
logger.error(f"做种时间设置错误:{self._seed_time}")
self.systemmessage.put(f"做种时间设置错误:{self._seed_time}")
return
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
logger.error(f"分享率设置错误:{self._seed_ratio}")
self.systemmessage.put(f"分享率设置错误:{self._seed_ratio}")
return
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
logger.error(f"上传量设置错误:{self._seed_size}")
self.systemmessage.put(f"上传量设置错误:{self._seed_size}")
return
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
logger.error(f"下载超时时间设置错误:{self._download_time}")
self.systemmessage.put(f"下载超时时间设置错误:{self._download_time}")
return
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
logger.error(f"平均上传速度设置错误:{self._seed_avgspeed}")
self.systemmessage.put(f"平均上传速度设置错误:{self._seed_avgspeed}")
return
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
logger.error(f"未活动时间设置错误:{self._seed_inactivetime}")
self.systemmessage.put(f"未活动时间设置错误:{self._seed_inactivetime}")
return
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
logger.error(f"单任务上传限速设置错误:{self._up_speed}")
self.systemmessage.put(f"单任务上传限速设置错误:{self._up_speed}")
return
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
logger.error(f"单任务下载限速设置错误:{self._dl_speed}")
self.systemmessage.put(f"单任务下载限速设置错误:{self._dl_speed}")
return
# 检查必要条件
@ -221,13 +235,16 @@ class BrushFlow(_PluginBase):
self._scheduler.add_job(self.brush, 'date',
run_date=datetime.now(
tz=pytz.timezone(settings.TZ)
) + timedelta(seconds=3))
) + timedelta(seconds=3),
name="站点刷流服务")
# 关闭一次性开关
self._onlyonce = False
self.__update_config()
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.start()
@ -741,13 +758,13 @@ class BrushFlow(_PluginBase):
else:
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 = [
{
@ -785,6 +802,9 @@ class BrushFlow(_PluginBase):
},
{
'component': 'td',
'props': {
'class': 'text-no-wrap'
},
'text': "已删除" if data.get("deleted") else "正常"
}
]
@ -1038,7 +1058,7 @@ class BrushFlow(_PluginBase):
{
'component': 'VImg',
'props': {
'src': '/plugin/torrentremover.png'
'src': '/plugin/delete.png'
}
}
]
@ -1091,6 +1111,9 @@ class BrushFlow(_PluginBase):
'content': [
{
'component': 'thead',
'props': {
'class': 'text-no-wrap'
},
'content': [
{
'component': 'th',
@ -1214,7 +1237,10 @@ class BrushFlow(_PluginBase):
task_info: Dict[str, dict] = self.get_data("torrents") or {}
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:
torrents_size = 0
# 读取统计数据
@ -1306,7 +1332,8 @@ class BrushFlow(_PluginBase):
# 同时下载任务数
downloads = self.__get_downloading_count(self._downloader)
if self._maxdlcount and downloads >= int(self._maxdlcount):
continue
logger.warn(f"当前同时下载任务数 {downloads} 已达到最大值 {self._maxdlcount},停止新增任务")
break
# 获取下载器的下载信息
downloader_info = self.__get_downloader_info()
if downloader_info:
@ -1315,11 +1342,15 @@ class BrushFlow(_PluginBase):
# 总上传带宽(KB/s)
if self._maxupspeed \
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)
if self._maxdlspeed \
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)
if not hash_string:
@ -1383,8 +1414,8 @@ class BrushFlow(_PluginBase):
"downloaded": 0
}
# 获取下载器中的种子
torrents, state = downloader.get_torrents(ids=check_hashs)
if not state:
torrents, error = downloader.get_torrents(ids=check_hashs)
if error:
logger.warn("连接下载器出错,将在下个时间周期重试")
return
if not torrents:
@ -1485,6 +1516,12 @@ class BrushFlow(_PluginBase):
# 更新统计数据
statistic_info["uploaded"] = total_uploaded
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)
# 保存任务记录
@ -1513,6 +1550,9 @@ class BrushFlow(_PluginBase):
if self._downloader == "qbittorrent":
if not self.qb:
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 = StringUtils.generate_random_str(10)
state = self.qb.add_torrent(content=torrent.enclosure,
@ -1740,7 +1780,7 @@ class BrushFlow(_PluginBase):
return len(torrents) or 0
@staticmethod
def __get_pubminutes(pubdate: str) -> datetime:
def __get_pubminutes(pubdate: str) -> int:
"""
将字符串转换为时间并计算与当前时间差分钟
"""

View File

@ -1 +1 @@
APP_VERSION = 'v1.1.5'
APP_VERSION = 'v1.1.6'