import requests from flask import Flask, request, jsonify from DB import DBVidcon app = Flask(__name__) endpoint = "https://api.dailymotion.com/videos" DEFAULT_PAGE = 1 FIXED_LIMIT = 100 VALID_SORTS = { 'recent', 'relevance', 'alpha', 'alphaaz', 'alphaza', 'most', 'least', 'changed' } db = DBVidcon() @app.route("/get", methods=["GET"]) def get_videos(): keyword = request.args.get("keyword", "").strip() if not keyword: return jsonify({"status": "error", "msg": "keyword 参数不能为空"}), 400 # 页码和国家参数 i = request.args.get("page", DEFAULT_PAGE, type=int) rn = request.args.get("rn", "US").upper() # 排序参数,必须合法 sort = request.args.get("sort", "relevance").strip().lower() if sort not in VALID_SORTS: return jsonify({ "status": "error", "msg": f"sort 参数非法,可选值: {sorted(VALID_SORTS)}" }), 400 proxy_string = db.get_proxy(rn) proxies = {"http": proxy_string, "https": proxy_string} if proxy_string else None params = { "search": keyword, "fields": "id,title,created_time,thumbnail_240_url,duration," "owner.id,owner.screenname,likes_total,views_total", "limit": FIXED_LIMIT, "page": i, "sort": sort } try: resp = requests.get(endpoint, params=params, proxies=proxies, timeout=10) resp.raise_for_status() jd = resp.json() return jsonify(jd), 200 except requests.exceptions.RequestException as e: return jsonify({"status": "error", "msg": str(e)}), 502 if __name__ == "__main__": app.run(host="0.0.0.0", port=8000, debug=False)