get_off_videos.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. """
  2. @author: luojunhui
  3. """
  4. import json
  5. import time
  6. from applications.log import logging
  7. from applications.functions.forward_request import forward_requests
  8. class GetOffVideos(object):
  9. """
  10. 下架视频
  11. """
  12. def __init__(self, params, mysql_client, config):
  13. self.params = params
  14. self.mysql_client = mysql_client
  15. self.article_match_video_table = config.article_match_video_table
  16. self.get_off_videos = config.get_off_video_table
  17. self.trace_id = None
  18. def check_params(self):
  19. """
  20. :return:
  21. """
  22. try:
  23. self.trace_id = self.params['traceId']
  24. logging(
  25. code="4121",
  26. info='自动下架视频接口参数校验成功',
  27. function="get_off_videos",
  28. data=self.params,
  29. trace_id=self.trace_id
  30. )
  31. return None
  32. except Exception as e:
  33. response = {
  34. "error": "params error",
  35. "info": str(e),
  36. "data": self.params
  37. }
  38. return response
  39. async def push_video_into_queue(self):
  40. """
  41. 将视频id记录到待下架表中
  42. :return:
  43. """
  44. select_sql = f"""
  45. select response from {self.article_match_video_table} where trace_id = '{self.trace_id}';
  46. """
  47. result = await self.mysql_client.async_select(sql=select_sql)
  48. if result:
  49. video_list = json.loads(result[0][0])
  50. info_list = [
  51. (
  52. item['videoId'],
  53. int(time.time()),
  54. 1,
  55. self.trace_id
  56. )
  57. for item in video_list
  58. ]
  59. try:
  60. insert_sql = f"""
  61. INSERT INTO {self.get_off_videos}
  62. (video_id, publish_time, video_status, trace_id)
  63. values
  64. (%s, %s, %s, %s);"""
  65. await self.mysql_client.async_insert_many(
  66. sql=insert_sql,
  67. params_list=info_list
  68. )
  69. logging(
  70. code="4122",
  71. info='自动下架视频接口存储成功',
  72. function="get_off_videos",
  73. trace_id=self.trace_id
  74. )
  75. return {
  76. "status": "success",
  77. "traceId": self.trace_id
  78. }
  79. except Exception as e:
  80. logging(
  81. code="4123",
  82. info="自动下架视频处理失败: {}".format(e),
  83. function="get_off_videos",
  84. trace_id=self.trace_id
  85. )
  86. return {
  87. "status": "fail",
  88. "traceId": self.trace_id,
  89. "msg": "insert fails, {}".format(e)
  90. }
  91. else:
  92. return {
  93. "status": "fail",
  94. "traceId": self.trace_id,
  95. "msg": "traceId error, can't find trace_id"
  96. }
  97. async def check_trace_id(self):
  98. """
  99. check trace id 是否存在与系统中
  100. """
  101. select_sql = f"""
  102. SELECT trace_id
  103. FROM {self.article_match_video_table}
  104. WHERE trace_id = '{self.trace_id}';
  105. """
  106. response = await self.mysql_client.async_select(select_sql)
  107. if response:
  108. return True
  109. else:
  110. return False
  111. async def check_trace_id_startswith(self):
  112. """
  113. trace_id是否以search开头
  114. """
  115. if self.trace_id.startswith('search'):
  116. return True
  117. else:
  118. return False
  119. async def deal(self):
  120. """
  121. :return:
  122. """
  123. params_error = self.check_params()
  124. if params_error:
  125. return params_error
  126. else:
  127. trace_id_process_flag = await self.check_trace_id_startswith()
  128. if not trace_id_process_flag:
  129. return {
  130. "traceId": self.trace_id,
  131. "msg": "do not process trace id"
  132. }
  133. trace_id_exist_flag = await self.check_trace_id()
  134. if trace_id_exist_flag:
  135. return await self.push_video_into_queue()
  136. else:
  137. # 只需要传trace_id, 老系统接口不穿strategy参数默认strategy_v1
  138. response = await forward_requests(
  139. params={
  140. "traceId": self.trace_id
  141. },
  142. api="get_off_videos"
  143. )
  144. return response