request_deal.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. """
  2. @author: luojunhui
  3. """
  4. from applications.functions import get_text
  5. class RequestDeal(object):
  6. """
  7. Deal Request from outside
  8. """
  9. def __init__(self, params, mysql_client):
  10. self.start_dt = params['start_date']
  11. self.end_dt = params['end_date']
  12. self.cate = params['cate']
  13. self.topN = params['topN'] if params.get("topN") else 1
  14. self.mysql_client = mysql_client
  15. def response_obj(self, data_list):
  16. """
  17. 处理 return 信息
  18. :param data_list:
  19. :return:
  20. """
  21. result_list = [
  22. {
  23. "video_id": obj[0],
  24. "title": obj[1],
  25. "video_url": obj[2],
  26. "video_text": get_text(video_id=obj[0])['text']
  27. } for obj in data_list
  28. ]
  29. response = {
  30. "status": "success",
  31. "cate": self.cate,
  32. "start_date": self.start_dt,
  33. "end_dt": self.end_dt,
  34. "topN": self.topN,
  35. "data": result_list
  36. }
  37. return response
  38. async def deal(self):
  39. """
  40. deal function
  41. :return:
  42. """
  43. if self.cate == "video_return":
  44. return await self.deal_return()
  45. elif self.cate == "video_view":
  46. return await self.deal_view()
  47. elif self.cate == "video_rov":
  48. return await self.deal_rov()
  49. else:
  50. return {"error": "params is not correct"}
  51. async def deal_return(self):
  52. """
  53. return
  54. :return:
  55. """
  56. sql = f"""
  57. select video_id, title, video_url
  58. from top_return_daily
  59. where dt >= '{self.start_dt}' and dt < '{self.end_dt}'
  60. order by return_ DESC
  61. limit {self.topN}
  62. """
  63. result_list = await self.mysql_client.select(sql)
  64. return self.response_obj(result_list)
  65. async def deal_view(self):
  66. """
  67. view
  68. :return:
  69. """
  70. sql = f"""
  71. select video_id, title, video_url
  72. from top_return_daily
  73. where dt >= '{self.start_dt}' and dt < '{self.end_dt}'
  74. order by view_ DESC
  75. limit {self.topN}
  76. """
  77. result_list = await self.mysql_client.select(sql)
  78. return self.response_obj(result_list)
  79. async def deal_rov(self):
  80. """
  81. rov
  82. :return:
  83. """
  84. sql = f"""
  85. select video_id, title, video_url
  86. from top_return_daily
  87. where dt >= '{self.start_dt}' and dt < '{self.end_dt}'
  88. order by rov DESC
  89. limit {self.topN}
  90. """
  91. result_list = await self.mysql_client.select(sql)
  92. return self.response_obj(result_list)