init
This commit is contained in:
41
backend/routes/actions.py
Normal file
41
backend/routes/actions.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from flask import Blueprint, jsonify, request
|
||||
from config import config_manager
|
||||
from utils.placeholders import ServicePlaceholder, long_running_task
|
||||
|
||||
actions_bp = Blueprint('actions', __name__, url_prefix='/api')
|
||||
|
||||
@actions_bp.route('/downloader/add', methods=['POST'])
|
||||
def add_download_task():
|
||||
# 逻辑: 根据配置,将下载链接添加到 qBittorrent 或 Transmission
|
||||
# 返回格式: {"message": "任务添加成功"}
|
||||
data = request.get_json()
|
||||
if not data or 'download_url' not in data:
|
||||
return jsonify({"error": "缺少 download_url"}), 400
|
||||
|
||||
downloader_type = config_manager.get('downloader')
|
||||
config = config_manager.get(downloader_type)
|
||||
manager = ServicePlaceholder(config)
|
||||
|
||||
success, message = manager.add_task(data['download_url'])
|
||||
if success:
|
||||
return jsonify({"message": f"任务已成功添加至 {downloader_type}"})
|
||||
else:
|
||||
return jsonify({"error": message}), 500
|
||||
|
||||
@actions_bp.route('/scrape', methods=['POST'])
|
||||
def scrape_media():
|
||||
# 逻辑: 接收媒体路径,在后台线程中启动刮削任务
|
||||
# 返回格式 (202 Accepted): {"message": "刮削任务已加入队列..."}
|
||||
data = request.get_json()
|
||||
media_path = data.get('media_path')
|
||||
if not media_path:
|
||||
return jsonify({"error": "缺少 media_path"}), 400
|
||||
|
||||
douban_config = config_manager.get('douban')
|
||||
manager = ServicePlaceholder(douban_config)
|
||||
|
||||
# 在后台线程中执行刮削
|
||||
long_running_task(manager.scrape, media_path)
|
||||
|
||||
# 立即返回 202 Accepted 响应
|
||||
return jsonify({"message": "刮削任务已加入队列,请稍后刷新查看结果"}), 202
|
||||
Reference in New Issue
Block a user