"""
第3课：自己的 API — Flask 后端
"""

from flask import Flask, jsonify, request
from flask_cors import CORS
import random

app = Flask(__name__)
CORS(app)  # 允许前端跨域访问

# ===== 金句数据库 =====
QUOTES = [
    {"quote": "不积跬步，无以至千里", "author": "荀子", "tag": "坚持"},
    {"quote": "学而不思则罔，思而不学则殆", "author": "孔子", "tag": "学习"},
    {"quote": "想象力比知识更重要", "author": "爱因斯坦", "tag": "创新"},
    {"quote": "种一棵树最好的时间是十年前，其次是现在", "author": "Dambisa Moyo", "tag": "时间"},
    {"quote": "唯一确定的就是不确定", "author": "赫拉克利特", "tag": "人生"},
    {"quote": "人生没有白走的路，每一步都算数", "author": "李宗盛", "tag": "人生"},
    {"quote": "生活就像一盒巧克力", "author": "阿甘正传", "tag": "人生"},
    {"quote": "创新就是把事物联系起来", "author": "乔布斯", "tag": "创新"},
    {"quote": "千里之行，始于足下", "author": "老子", "tag": "坚持"},
    {"quote": "知之为知之，不知为不知", "author": "孔子", "tag": "学习"},
    {"quote": "天行健，君子以自强不息", "author": "《周易》", "tag": "坚持"},
    {"quote": "不愤不启，不悱不发", "author": "孔子", "tag": "学习"},
]

# ===== 首页 =====
@app.route('/')
def home():
    return "🐍 我的 API 正在运行！<br>试试访问 <a href='/api/quote'>/api/quote</a>"

# ===== 接口1：获取金句（支持按主题筛选） =====
@app.route('/api/quote')
def get_quote():
    """GET /api/quote?tag=坚持"""
    tag = request.args.get('tag', '')

    if tag:
        # 根据主题筛选
        filtered = [q for q in QUOTES if q['tag'] == tag]
        if not filtered:
            return jsonify({"error": f"没有找到标签为「{tag}」的金句"}), 404
        return jsonify(random.choice(filtered))
    else:
        # 随机返回一句
        return jsonify(random.choice(QUOTES))

# ===== 接口2：获取所有金句 =====
@app.route('/api/quotes')
def get_all_quotes():
    """GET /api/quotes"""
    return jsonify({"quotes": QUOTES, "total": len(QUOTES)})

# ===== 接口3：获取所有标签 =====
@app.route('/api/tags')
def get_tags():
    """GET /api/tags"""
    tags = list(set(q['tag'] for q in QUOTES))
    return jsonify({"tags": sorted(tags)})

# ===== 启动 =====
if __name__ == '__main__':
    print("=" * 40)
    print("  🐍 自己的 API 已启动！")
    print("=" * 40)
    print(f"  📍 http://localhost:5000")
    print(f"  📍 http://localhost:5000/api/quote")
    print(f"  📍 http://localhost:5000/api/quote?tag=坚持")
    print(f"  📍 http://localhost:5000/api/quotes")
    print(f"  📍 http://localhost:5000/api/tags")
    print("=" * 40)
    app.run(host='0.0.0.0', port=5000, debug=True)
