mitv.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. from flask import Blueprint, jsonify, request
  2. from hardware.mitvs_module import turn_on_display, turn_off_display, turn_on_all_displays, turn_off_all_displays
  3. from utils.logger_config import logger
  4. from api.utils import login_required
  5. import threading
  6. mitv_bp = Blueprint('mitv', __name__)
  7. @mitv_bp.route('/api/mitv/turn_on', methods=['POST'])
  8. @login_required
  9. def turn_on_display_api():
  10. """唤醒指定ID的电视"""
  11. try:
  12. data = request.get_json()
  13. if not data or 'kodi_id' not in data:
  14. return jsonify({
  15. "success": False,
  16. "message": "缺少 kodi_id 参数"
  17. }), 400
  18. kodi_id = data['kodi_id']
  19. if not isinstance(kodi_id, int) or kodi_id < 0:
  20. return jsonify({
  21. "success": False,
  22. "message": "kodi_id 必须是大于等于0的整数"
  23. }), 400
  24. def task():
  25. try:
  26. turn_on_display(kodi_id)
  27. except Exception as e:
  28. logger.error(f"异步唤醒电视异常 (ID: {kodi_id}): {str(e)}")
  29. threading.Thread(target=task).start()
  30. return jsonify({
  31. "success": True,
  32. "message": f"已发送唤醒指令给电视 (ID: {kodi_id}) - 异步执行"
  33. })
  34. except Exception as e:
  35. logger.error(f"唤醒电视异常: {str(e)}")
  36. return jsonify({
  37. "success": False,
  38. "message": f"唤醒电视失败: {str(e)}"
  39. }), 500
  40. @mitv_bp.route('/api/mitv/turn_off', methods=['POST'])
  41. @login_required
  42. def turn_off_display_api():
  43. """息屏指定ID的电视"""
  44. try:
  45. data = request.get_json()
  46. if not data or 'kodi_id' not in data:
  47. return jsonify({
  48. "success": False,
  49. "message": "缺少 kodi_id 参数"
  50. }), 400
  51. kodi_id = data['kodi_id']
  52. if not isinstance(kodi_id, int) or kodi_id < 0:
  53. return jsonify({
  54. "success": False,
  55. "message": "kodi_id 必须是大于等于0的整数"
  56. }), 400
  57. def task():
  58. try:
  59. turn_off_display(kodi_id)
  60. except Exception as e:
  61. logger.error(f"异步息屏电视异常 (ID: {kodi_id}): {str(e)}")
  62. threading.Thread(target=task).start()
  63. return jsonify({
  64. "success": True,
  65. "message": f"已发送息屏指令给电视 (ID: {kodi_id}) - 异步执行"
  66. })
  67. except Exception as e:
  68. logger.error(f"息屏电视异常: {str(e)}")
  69. return jsonify({
  70. "success": False,
  71. "message": f"息屏电视失败: {str(e)}"
  72. }), 500
  73. @mitv_bp.route('/api/mitv/turn_on_all', methods=['POST'])
  74. @login_required
  75. def turn_on_all_displays_api():
  76. """唤醒所有电视"""
  77. try:
  78. def task():
  79. try:
  80. turn_on_all_displays()
  81. except Exception as e:
  82. logger.error(f"异步唤醒所有电视异常: {str(e)}")
  83. threading.Thread(target=task).start()
  84. return jsonify({
  85. "success": True,
  86. "message": "已发送唤醒指令给所有电视 - 异步执行"
  87. })
  88. except Exception as e:
  89. logger.error(f"唤醒所有电视异常: {str(e)}")
  90. return jsonify({
  91. "success": False,
  92. "message": f"唤醒所有电视失败: {str(e)}"
  93. }), 500
  94. @mitv_bp.route('/api/mitv/turn_off_all', methods=['POST'])
  95. @login_required
  96. def turn_off_all_displays_api():
  97. """息屏所有电视"""
  98. try:
  99. def task():
  100. try:
  101. turn_off_all_displays()
  102. except Exception as e:
  103. logger.error(f"异步息屏所有电视异常: {str(e)}")
  104. threading.Thread(target=task).start()
  105. return jsonify({
  106. "success": True,
  107. "message": "已发送息屏指令给所有电视 - 异步执行"
  108. })
  109. except Exception as e:
  110. logger.error(f"息屏所有电视异常: {str(e)}")
  111. return jsonify({
  112. "success": False,
  113. "message": f"息屏所有电视失败: {str(e)}"
  114. }), 500