Spaces:
Sleeping
Sleeping
| from flask import Flask, request, jsonify | |
| from vocab import get_words_from_source | |
| from sentences import get_sentence, save_sentence | |
| from ai_sentence import generate_sentence, MODEL_LIST | |
| import random | |
| app = Flask(__name__) | |
| def handle_words(): | |
| action = request.args.get('action') | |
| source = request.args.get('source', 'common3000') | |
| num = int(request.args.get('num', 5)) | |
| word = request.args.get('word') | |
| model = request.args.get('model', 'gpt2') | |
| if action == 'daily': | |
| words_data = get_words_from_source(source) | |
| selected_words = random.sample(words_data, 30) | |
| result = [] | |
| for word_data in selected_words: | |
| w = word_data['word'] | |
| phonetic = word_data['phonetic'] | |
| sentence_data = get_sentence(w) | |
| sentence = sentence_data[2] if sentence_data else "例句暫無" | |
| result.append({"word": w, "phonetic": phonetic, "sentence": sentence}) | |
| return jsonify({"words": result}) | |
| elif action == 'random': | |
| words_data = get_words_from_source(source) | |
| selected_words = random.sample(words_data, num) | |
| result = [] | |
| for word_data in selected_words: | |
| w = word_data['word'] | |
| phonetic = word_data['phonetic'] | |
| sentence_data = get_sentence(w) | |
| sentence = sentence_data[2] if sentence_data else "例句暫無" | |
| result.append({"word": w, "phonetic": phonetic, "sentence": sentence}) | |
| return jsonify({"words": result}) | |
| elif action == 'query': | |
| if not word: | |
| return jsonify({"error": "缺少 word 參數"}), 400 | |
| sentence_data = get_sentence(word) | |
| if sentence_data: | |
| return jsonify({"word": word, "phonetic": sentence_data[1], "sentence": sentence_data[2]}) | |
| else: | |
| return jsonify({"word": word, "phonetic": "未知", "sentence": "例句暫無"}) | |
| elif action == 'ai_generate': | |
| if not word: | |
| return jsonify({"error": "缺少 word 參數"}), 400 | |
| if model not in MODEL_LIST: | |
| return jsonify({"error": "無效的模型"}), 400 | |
| try: | |
| sentence = generate_sentence(word, model) | |
| save_sentence(word, "未知", sentence, source="ai", model=model) | |
| return jsonify({"word": word, "phonetic": "未知", "sentence": sentence}) | |
| except Exception as e: | |
| return jsonify({"error": f"AI 生成失敗: {str(e)}"}), 500 | |
| else: | |
| return jsonify({"error": "無效的 action"}), 400 | |
| if __name__ == '__main__': | |
| app.run(host='0.0.0.0', port=7860) | |