from quart import Blueprint, jsonify, request from applications.utils import ( fetch_aigc_cover, fetch_channel_info, fetch_long_video_cover, ) server_blueprint = Blueprint("api", __name__, url_prefix="/api") def server_routes(pools): @server_blueprint.route("/get_cover", methods=["POST"]) async def get_cover(): params = await request.get_json() content_id = params.get("content_id") if not content_id: return jsonify({"code": 400, "msg": "content_id is required", "data": None}) # fetch content channel info channel_info = await fetch_channel_info(pools, content_id) channel_content_id, channel_type = channel_info[0]['channel_content_id'], channel_info[0]['channel'] match channel_type: case 5: # channel is gzh article fetch_response = await fetch_aigc_cover(pools, channel_content_id) cover_obj = fetch_response[0] if cover_obj: image_oss = cover_obj['oss_object_key'] cover = "http://res.cybertogether.net/" + image_oss + "?x-oss-process=image/resize,m_fill,w_450,h_360/format,jpg" else: return jsonify( {"code": 401, "msg": "can't find cover in aigc system", "data": None} ) case 6: # channel is toutiao article fetch_response = await fetch_aigc_cover(pools, channel_content_id) cover_obj = fetch_response[0] if cover_obj: image_oss = cover_obj['oss_object_key'] cover = "http://res.cybertogether.net/" + image_oss + "?x-oss-process=image/resize,m_fill,w_450,h_360/format,jpg" else: return jsonify( {"code": 401, "msg": "can't find cover in aigc system", "data": None} ) case 10: # channel is long video fetch_response = await fetch_long_video_cover(pools, channel_content_id) cover_obj = fetch_response[1] if cover_obj: image_oss = cover_obj['image_path'] cover = "https://rescdn.yishihui.com/" + image_oss + "?x-oss-process=image/resize,m_fill,w_450,h_360/format,jpg" else: return jsonify( {"code": 401, "msg": "can't find cover in pq", "data": None} ) case _: return jsonify( {"code": 400, "msg": "channel_type is not supported", "data": None} ) return jsonify({"code": 200, "msg": "success", "data": {"cover": cover}}) return server_blueprint