This commit is contained in:
DengDai
2025-12-08 14:45:14 +08:00
commit 519589f8f5
60 changed files with 8191 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
from flask import Blueprint, jsonify
from config import config_manager
from utils.placeholders import ServicePlaceholder
from utils.plex_utils import PlexManager
dashboard_bp = Blueprint('dashboard', __name__, url_prefix='/api/dashboard')
@dashboard_bp.route('/initial_check', methods=['GET'])
def initial_check():
# 逻辑: 检查配置文件中是否至少有一个关键项被配置例如ptskit的URL
# 返回格式: {"is_configured": true | false}
is_configured = bool(config_manager.get('ptskit', {}).get('url'))
return jsonify({"is_configured": is_configured})
@dashboard_bp.route('/stats', methods=['GET'])
def get_stats():
# 逻辑: 分别连接 qBittorrent, Transmission, Emby 等服务获取它们的项目总数
# 返回格式: {"local_skits": int, "fnos_items": int, ...}
qb_manager = ServicePlaceholder(config_manager.get('qbittorrent'))
plex_config = config_manager.get('plex')
plex_manager = PlexManager(plex_config)
plex_items = plex_manager.get_stats()
return jsonify({
"local_skits": 15,
"fnos_items": 12,
"emby_items": 12,
"plex_items": plex_items,
"qb_total": qb_manager.get_stats(),
"tr_total": 4
})
@dashboard_bp.route('/component_statuses', methods=['GET'])
def get_component_statuses():
# 逻辑: 对每个配置的服务进行一次连接测试,并返回其状态
# 返回格式: {"qbittorrent": {"status": "success" | "error" | "unconfigured", "message": str}, ...}
plex_config = config_manager.get('plex')
plex_status = {"status": "unconfigured", "message": "未配置"}
if plex_config and plex_config.get('host'):
plex_manager = PlexManager(plex_config)
success, message = plex_manager.test_connection()
plex_status = {"status": "success" if success else "error", "message": message}
return jsonify({
"douban_cookie": {"status": "success", "message": "Cookie已配置"},
"ptskit_cookie": {"status": "success", "message": "Cookie已配置"},
"local_path": {"status": "success", "message": "已挂载"},
"qbittorrent": {"status": "success", "message": "连接成功 v4.5.2"},
"transmission": {"status": "error", "message": "连接失败: 认证错误"},
"fnos": {"status": "unconfigured", "message": "未配置"},
"emby": {"status": "success", "message": "连接成功"},
"plex": plex_status
})