videos_deal.py 3.1 KB

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