request_deal.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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:video_id, title, view_, return_, video_url, rov
  20. """
  21. result_list = [
  22. {
  23. "video_id": obj[0],
  24. "title": obj[1],
  25. "view": obj[2],
  26. "return": obj[3],
  27. "video_url": obj[4],
  28. "rov": obj[5],
  29. "video_text": get_text(video_id=obj[0])['text']
  30. } for obj in data_list
  31. ]
  32. response = {
  33. "status": "success",
  34. "cate": self.cate,
  35. "start_date": self.start_dt,
  36. "end_dt": self.end_dt,
  37. "topN": self.topN,
  38. "data": result_list
  39. }
  40. return response
  41. async def deal(self):
  42. """
  43. deal function
  44. :return:
  45. """
  46. if self.cate == "video_return":
  47. return await self.deal_return()
  48. elif self.cate == "video_view":
  49. return await self.deal_view()
  50. elif self.cate == "video_rov":
  51. return await self.deal_rov()
  52. else:
  53. return {"error": "params is not correct"}
  54. async def deal_return(self):
  55. """
  56. return
  57. :return:
  58. """
  59. sql = f"""
  60. select video_id, title, view_, return_, video_url, rov
  61. from top_return_daily
  62. where dt >= '{self.start_dt}' and dt < '{self.end_dt}'
  63. order by return_ DESC
  64. limit {self.topN}
  65. """
  66. result_list = await self.mysql_client.select(sql)
  67. return self.response_obj(result_list)
  68. async def deal_view(self):
  69. """
  70. view
  71. :return:
  72. """
  73. sql = f"""
  74. select video_id, title, view_, return_, video_url, rov
  75. from top_return_daily
  76. where dt >= '{self.start_dt}' and dt < '{self.end_dt}'
  77. order by view_ DESC
  78. limit {self.topN}
  79. """
  80. result_list = await self.mysql_client.select(sql)
  81. return self.response_obj(result_list)
  82. async def deal_rov(self):
  83. """
  84. rov
  85. :return:
  86. """
  87. sql = f"""
  88. select video_id, title, view_, return_, video_url, rov
  89. from top_return_daily
  90. where dt >= '{self.start_dt}' and dt < '{self.end_dt}'
  91. order by rov DESC
  92. limit {self.topN}
  93. """
  94. result_list = await self.mysql_client.select(sql)
  95. return self.response_obj(result_list)