feat(app): 添加 ASMR 和磁力链接功能模块

- 新增 asmr_bp 蓝图模块和 AsmrService 服务
- 新增 magnet_bp 蓝图模块和 MagnetService 服务
- 在应用初始化时注册新的蓝图模块
- 将 switch 语句替换为 if-elif 语句进行配置管理
- 在前端界面添加 ASMR 功能入口
- 增加 libtorrent 依赖包
- 修复字符串引号使用问题
- 增加文件重命名异常处理
- 扩展类型注解支持 Union 类型
- 增加请求超时时间到 30 秒
- 优化前端错误处理逻辑
This commit is contained in:
2026-06-01 18:43:06 +08:00
parent f7539a33b0
commit 6cbacab98b
13 changed files with 93 additions and 30 deletions
+4 -5
View File
@@ -87,8 +87,7 @@ class BookService:
if privilege_level > self.setting["privilegeLevel"]:
print("下载失败,权限等级不够")
return
yield from self.download_file(f"{self.setting["baseUrl"]}{i.select_one(
'a')['href']}", name, i.select_one('a').string)
yield from self.download_file(f"{self.setting['baseUrl']}{i.select_one('a')['href']}", name, i.select_one('a').string)
# yield from self.download_file(f"{self.setting["baseUrl"]}{i.select_one(
# 'a')['href']}", name, self.legitimate_naming(i.select_one('a').string))
except RetryError as e:
@@ -106,7 +105,7 @@ class BookService:
print(dir_name + "/" + file_name)
content_type = response.headers.get('Content-Type', '')
if content_type not in self.ALLOWED_CONTENT_TYPES:
yield f"event: mes_error\ndata: {self.setting["targetDate"]} {file_name}\n\n"
yield f"event: mes_error\ndata: {self.setting['targetDate']} {file_name}\n\n"
print("不是可下载文件")
return
target_dir = self.download_path / self.setting["targetDate"] / dir_name / file_name
@@ -115,7 +114,7 @@ class BookService:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
yield f"data: {self.setting["targetDate"]} {file_name}\n\n"
yield f"data: {self.setting['targetDate']} {file_name}\n\n"
except requests.RequestException as e:
yield f"event: error\ndata: {self.setting['targetDate']} {file_name} 网络错误\n\n"
raise # 触发 tenacity 重试
@@ -128,7 +127,7 @@ class BookService:
yield f"data: 不允许下载当天的\n\n"
return None
# yield f"data: 当前页面 {page}\n\n"
url = f"{self.setting["baseUrl"]}forum.php?mod={self.setting["mod"]}&fid={self.setting["fid"]}&page={page}" # 版块页面地址
url = f"{self.setting['baseUrl']}forum.php?mod={self.setting['mod']}&fid={self.setting['fid']}&page={page}" # 版块页面地址
response = self.session.get(url) # 请求
response.raise_for_status()
soup = BeautifulSoup(response.text, 'lxml') # 解析