from flask import Blueprint, jsonify, request from hardware.mitvs_module import turn_on_display, turn_off_display, turn_on_all_displays, turn_off_all_displays from utils.logger_config import logger from api.utils import login_required import threading mitv_bp = Blueprint('mitv', __name__) @mitv_bp.route('/api/mitv/turn_on', methods=['POST']) @login_required def turn_on_display_api(): """唤醒指定ID的电视""" try: data = request.get_json() if not data or 'kodi_id' not in data: return jsonify({ "success": False, "message": "缺少 kodi_id 参数" }), 400 kodi_id = data['kodi_id'] if not isinstance(kodi_id, int) or kodi_id < 0: return jsonify({ "success": False, "message": "kodi_id 必须是大于等于0的整数" }), 400 def task(): try: turn_on_display(kodi_id) except Exception as e: logger.error(f"异步唤醒电视异常 (ID: {kodi_id}): {str(e)}") threading.Thread(target=task).start() return jsonify({ "success": True, "message": f"已发送唤醒指令给电视 (ID: {kodi_id}) - 异步执行" }) except Exception as e: logger.error(f"唤醒电视异常: {str(e)}") return jsonify({ "success": False, "message": f"唤醒电视失败: {str(e)}" }), 500 @mitv_bp.route('/api/mitv/turn_off', methods=['POST']) @login_required def turn_off_display_api(): """息屏指定ID的电视""" try: data = request.get_json() if not data or 'kodi_id' not in data: return jsonify({ "success": False, "message": "缺少 kodi_id 参数" }), 400 kodi_id = data['kodi_id'] if not isinstance(kodi_id, int) or kodi_id < 0: return jsonify({ "success": False, "message": "kodi_id 必须是大于等于0的整数" }), 400 def task(): try: turn_off_display(kodi_id) except Exception as e: logger.error(f"异步息屏电视异常 (ID: {kodi_id}): {str(e)}") threading.Thread(target=task).start() return jsonify({ "success": True, "message": f"已发送息屏指令给电视 (ID: {kodi_id}) - 异步执行" }) except Exception as e: logger.error(f"息屏电视异常: {str(e)}") return jsonify({ "success": False, "message": f"息屏电视失败: {str(e)}" }), 500 @mitv_bp.route('/api/mitv/turn_on_all', methods=['POST']) @login_required def turn_on_all_displays_api(): """唤醒所有电视""" try: def task(): try: turn_on_all_displays() except Exception as e: logger.error(f"异步唤醒所有电视异常: {str(e)}") threading.Thread(target=task).start() return jsonify({ "success": True, "message": "已发送唤醒指令给所有电视 - 异步执行" }) except Exception as e: logger.error(f"唤醒所有电视异常: {str(e)}") return jsonify({ "success": False, "message": f"唤醒所有电视失败: {str(e)}" }), 500 @mitv_bp.route('/api/mitv/turn_off_all', methods=['POST']) @login_required def turn_off_all_displays_api(): """息屏所有电视""" try: def task(): try: turn_off_all_displays() except Exception as e: logger.error(f"异步息屏所有电视异常: {str(e)}") threading.Thread(target=task).start() return jsonify({ "success": True, "message": "已发送息屏指令给所有电视 - 异步执行" }) except Exception as e: logger.error(f"息屏所有电视异常: {str(e)}") return jsonify({ "success": False, "message": f"息屏所有电视失败: {str(e)}" }), 500