from flask import Flask, request, jsonify import requests import time import threading import tkinter as tk from PIL import Image, ImageTk import urllib.request from io import BytesIO app = Flask(__name__) last_displayed_img_url = None def display_image(img_url): global last_displayed_img_url if img_url == last_displayed_img_url: return last_displayed_img_url = img_url def run_display(): root = tk.Tk() root.attributes('-fullscreen', False) root.configure(background='black') try: with urllib.request.urlopen(img_url) as url: image_data = url.read() image = Image.open(BytesIO(image_data)) photo = ImageTk.PhotoImage(image) label = tk.Label(root, image=photo, bg='black') label.pack(expand=True) except Exception as e: label = tk.Label(root, text=f"无法加载图像: {str(e)}", fg='white', bg='black') label.pack(expand=True) root.bind("", lambda e: root.destroy()) root.mainloop() threading.Thread(target=run_display, daemon=True).start() @app.route('/get_auto_play_item', methods=['POST']) def get_wav(): try: # 获取用户标识(例如,通过POST请求中的JSON数据) data = request.json user = data.get('user', 'User') # 通过HTTP GET请求从指定地址获取最新数据 course_id = data.get('course_id', 1164) headers = { 'easegen-api-key': 'ak_SzEhMFPTKjIQBhGVmkle' } response = requests.get( "http://36.103.251.108:48080/admin-api/digitalcourse/courses/getCourseText", params={ 'course_id': course_id, }, headers=headers, timeout=10 ) # 检查请求是否成功 if response.status_code == 200: response_data = response.json() if response_data.get('code') == 0: data = response_data.get('data', {}) audio = data.get('audio', '') text = data.get('text', '') timestamp = data.get('timestamp', int(time.time())) img = data.get('img', '') # 显示图像 if img: display_image(img) # 返回的JSON响应 return jsonify({ 'audio': audio, 'text': text, 'timestamp': timestamp }) else: return jsonify({'error': '获取数据失败'}), 500 else: return jsonify({'error': '请求失败'}), 500 except requests.exceptions.Timeout: return jsonify({'error': '请求超时'}), 500 except requests.exceptions.RequestException as e: return jsonify({'error': f'请求出现异常: {str(e)}'}), 500 if __name__ == '__main__': app.run(host='0.0.0.0', port=6000)