54 lines
2.4 KiB
Python
54 lines
2.4 KiB
Python
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
|
||
})
|