refactor(torrent): 优化种子文件服务和相关配置

- 修改文件重命名逻辑,移除空格和连字符处理
- 更新UI端口依赖从 sass-embedded 到 sass
- 调整请求基础URL配置为局域网地址
- 重构后端运行配置以支持外部访问
- 添加种子列表路由和提取名称功能
- 移除按名称查询单个种子的路由
- 实现标准化名称提取算法
- 添加批量获取所有种子的功能
This commit is contained in:
2026-05-01 15:51:38 +08:00
parent 63ef32f01e
commit 208209e05f
7 changed files with 47 additions and 16 deletions
+7 -12
View File
@@ -1,10 +1,16 @@
from flask import Blueprint, jsonify
from flask import Blueprint, jsonify, request
from app.services.torrent_service import TorrentService
bp = Blueprint("torrent", __name__)
@bp.route('/')
def torrent_list():
torrent_object = TorrentService(["C:\\Users\\Localhost\\Desktop\\BT"])
return jsonify({"code": 200, "message": torrent_object.get_all()})
@bp.route('/deduplication')
def torrent_deduplication():
torrent_object = TorrentService(["C:\\Users\\Localhost\\Desktop\\BT"])
@@ -15,14 +21,3 @@ def torrent_deduplication():
def torrent_statistics():
torrent_object = TorrentService(["C:\\Users\\Localhost\\Desktop\\BT"])
return jsonify({"code": 200, "message": torrent_object.statistics()})
@bp.route("/<name>")
def torrent_by_name(name):
torrent_object = TorrentService(["C:\\Users\\Localhost\\Desktop\\BT"])
return jsonify({"code": 200, "message": torrent_object.get_by_name(name)})
# @bp.route("/extract/name")
# def torrent_extract_name():
# torrent_object = TorrentService([])
# return jsonify({"code": 200, "message": torrent_object.extract_name("AVSA-429.torrent")})
+1
View File
@@ -50,6 +50,7 @@ class FileService:
return self.perform_rename(entry, f"{name}{ext}")
name = name.replace("-", "")
name = name.replace(" ", "")
# 处理特殊前缀
for prefix in SPECIAL_PREFIXES:
+36 -1
View File
@@ -84,7 +84,7 @@ class TorrentService:
name, ext = os.path.splitext(filename)
ext = ext.lower()
name = name.upper()
name = name.replace("-", "")
name.maketrans({"-": "", " ":""})
# 处理特殊前缀
for prefix in SPECIAL_PREFIXES:
if name.startswith(prefix):
@@ -120,3 +120,38 @@ class TorrentService:
FolderService(paths=self.paths, ignore_dirs=IGNORE_DIRS,
file_callback=self.get_by_name_file_callback).process_folder()
return to_json_serializable(self.torrent_name)
def extract_name_from_filename(self, filename: str) -> str:
"""根据torrent文件名提取标准化名称"""
temp_name = filename.replace("-4K", "")
without_modifier_file_name = self.prefix_pattern.sub('.', temp_name)
name, ext = os.path.splitext(without_modifier_file_name)
name = name.upper()
name = name.replace("-", "")
# print(name.translate(str.maketrans({"-": "", " ":""})))
for prefix in SPECIAL_PREFIXES:
if name.startswith(prefix):
return f"{prefix}-{name[len(prefix):]}"
# print(name)
new_name = []
for i, char in enumerate(name):
# print(i, char, not name[i - 1].isnumeric())
if i > 0 and not name[i - 1].isnumeric() and char.isnumeric():
new_name.append(f"-{char}")
else:
new_name.append(char)
return f"{''.join(new_name)}"
def get_all_file_callback(self, entry: os.DirEntry):
# path_arr = entry.path.split(os.sep)
new_name = self.extract_name_from_filename(entry.name)
self.result_list.append(new_name)
def get_all(self):
FolderService(paths=self.paths, ignore_dirs=IGNORE_DIRS,
file_callback=self.get_all_file_callback).process_folder()
return self.result_list