web_api.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import logging
  2. from flask import Flask, request, jsonify, render_template
  3. from flask_socketio import SocketIO
  4. from src.app.QbApp import QbApp
  5. import configparser
  6. import os
  7. app = Flask(__name__,static_folder='assets')
  8. socketio = SocketIO(app,cors_allowed_origins="*")
  9. # 初始化日志和配置
  10. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
  11. # 获取当前脚本的绝对路径
  12. current_directory = os.path.dirname(os.path.abspath(__file__))
  13. logging.info(f"current_dir -> {current_directory} ")
  14. # 初始化QbApp实例
  15. # 构建 config.ini 文件的路径
  16. config_path = os.path.join(current_directory, 'config', 'config.ini')
  17. # config_path = 'path/to/your/config.ini' # 指定配置文件路径
  18. config = configparser.ConfigParser()
  19. config.read(config_path)
  20. app_service = QbApp(config, parent_directory=os.getcwd(), socketio=socketio)
  21. app_service.init()
  22. @app.route('/add', methods=['POST'])
  23. def add_magnet():
  24. data = request.json
  25. magnet_link = data.get('magnet_link')
  26. if magnet_link:
  27. app_service.add(magnet_link)
  28. return jsonify({'message': 'Magnet link added successfully.'}), 200
  29. else:
  30. return jsonify({'error': 'Magnet link is required.'}), 400
  31. @app.route('/start', methods=['POST'])
  32. def start_monitoring():
  33. try:
  34. app_service.start() # 假设这是停止监控的方法
  35. return jsonify({'message': 'Monitoring start successfully.'}), 200
  36. except Exception as e:
  37. logging.error(f"Error stopping monitoring: {e}")
  38. return jsonify({'error': 'Failed to start monitoring.'}), 500
  39. @app.route('/stop', methods=['POST'])
  40. def stop_monitoring():
  41. try:
  42. app_service.stop() # 假设这是停止监控的方法
  43. return jsonify({'message': 'Monitoring stopped successfully.'}), 200
  44. except Exception as e:
  45. logging.error(f"Error stopping monitoring: {e}")
  46. return jsonify({'error': 'Failed to stop monitoring.'}), 500
  47. @app.route('/')
  48. def index():
  49. return render_template('index.html')
  50. @app.route('/monitor')
  51. def monitor():
  52. return render_template('monitor.html')
  53. if __name__ == '__main__':
  54. socketio.run(app, debug=True)