| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- 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, mitv_controller
- from utils.logger_config import logger
- from api.utils import login_required, ping_ip
- import threading
- import concurrent.futures
- 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
- from application.self_check_service import check_mitv_status
- # 电视进行自检
- # 通过ping 所有电视ip进行,返回一个数组,数组中包括是否正常、电视IP。
- @mitv_bp.route('/api/mitv/self_check', methods=['POST'])
- @login_required
- def self_check_api():
- """电视进行自检"""
- try:
- results = check_mitv_status()
- return jsonify({
- "success": True,
- "message": "电视自检完成",
- "data": results
- })
- except Exception as e:
- logger.error(f"电视进行自检异常: {str(e)}")
- return jsonify({
- "success": False,
- "message": f"电视进行自检失败: {str(e)}"
- }), 500
|