blueprint.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from quart import Blueprint, jsonify, request
  2. from applications.utils import (
  3. fetch_aigc_cover,
  4. fetch_channel_info,
  5. fetch_long_video_cover,
  6. )
  7. server_blueprint = Blueprint("api", __name__, url_prefix="/api")
  8. def server_routes(pools):
  9. @server_blueprint.route("/get_cover", methods=["POST"])
  10. async def get_cover():
  11. params = await request.get_json()
  12. content_id = params.get("content_id")
  13. if not content_id:
  14. return jsonify({"code": 400, "msg": "content_id is required", "data": None})
  15. # fetch content channel info
  16. channel_info = await fetch_channel_info(pools, content_id)
  17. channel_content_id, channel_type = channel_info[0]['channel_content_id'], channel_info[0]['channel']
  18. match channel_type:
  19. case 5:
  20. # channel is gzh article
  21. fetch_response = await fetch_aigc_cover(pools, channel_content_id)
  22. cover_obj = fetch_response[0]
  23. if cover_obj:
  24. image_oss = cover_obj['oss_object_key']
  25. cover = "http://res.cybertogether.net/" + image_oss + "?x-oss-process=image/resize,m_fill,w_450,h_360/format,jpg"
  26. else:
  27. return jsonify(
  28. {"code": 401, "msg": "can't find cover in aigc system", "data": None}
  29. )
  30. case 6:
  31. # channel is toutiao article
  32. fetch_response = await fetch_aigc_cover(pools, channel_content_id)
  33. cover_obj = fetch_response[0]
  34. if cover_obj:
  35. image_oss = cover_obj['oss_object_key']
  36. cover = "http://res.cybertogether.net/" + image_oss + "?x-oss-process=image/resize,m_fill,w_450,h_360/format,jpg"
  37. else:
  38. return jsonify(
  39. {"code": 401, "msg": "can't find cover in aigc system", "data": None}
  40. )
  41. case 10:
  42. # channel is long video
  43. fetch_response = await fetch_long_video_cover(pools, channel_content_id)
  44. cover_obj = fetch_response[1]
  45. if cover_obj:
  46. image_oss = cover_obj['image_path']
  47. cover = "https://rescdn.yishihui.com/" + image_oss + "?x-oss-process=image/resize,m_fill,w_450,h_360/format,jpg"
  48. else:
  49. return jsonify(
  50. {"code": 401, "msg": "can't find cover in pq", "data": None}
  51. )
  52. case _:
  53. return jsonify(
  54. {"code": 400, "msg": "channel_type is not supported", "data": None}
  55. )
  56. return jsonify({"code": 200, "msg": "success", "data": {"cover": cover}})
  57. return server_blueprint