get_off_videos.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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. return None
  25. except Exception as e:
  26. response = {
  27. "error": "params error",
  28. "info": str(e),
  29. "data": self.params
  30. }
  31. return response
  32. async def push_video_into_queue(self):
  33. """
  34. 将视频id记录到待下架表中
  35. :return:
  36. """
  37. select_sql = f"""
  38. select response from {self.article_match_video_table} where trace_id = '{self.trace_id}';
  39. """
  40. result = await self.mysql_client.async_select(sql=select_sql)
  41. if result:
  42. video_list = json.loads(result[0][0])
  43. info_list = [
  44. (
  45. item['videoId'],
  46. int(time.time()),
  47. 1,
  48. self.trace_id
  49. )
  50. for item in video_list
  51. ]
  52. try:
  53. insert_sql = f"""
  54. INSERT INTO {self.get_off_videos}
  55. (video_id, publish_time, video_status, trace_id)
  56. values
  57. (%s, %s, %s, %s);"""
  58. await self.mysql_client.async_insert_many(
  59. sql=insert_sql,
  60. params_list=info_list
  61. )
  62. return {
  63. "status": "success",
  64. "traceId": self.trace_id
  65. }
  66. except Exception as e:
  67. logging(
  68. code="4123",
  69. info="自动下架视频处理失败: {}".format(e),
  70. function="get_off_videos"
  71. )
  72. return {
  73. "status": "fail",
  74. "traceId": self.trace_id,
  75. "msg": "insert fails, {}".format(e)
  76. }
  77. else:
  78. return {
  79. "status": "fail",
  80. "traceId": self.trace_id,
  81. "msg": "traceId error, can't find trace_id"
  82. }
  83. async def check_trace_id(self):
  84. """
  85. check trace id 是否存在与系统中
  86. """
  87. select_sql = f"""
  88. SELECT trace_id
  89. FROM {self.article_match_video_table}
  90. WHERE trace_id = '{self.trace_id}';
  91. """
  92. response = await self.mysql_client.async_select(select_sql)
  93. if response:
  94. return True
  95. else:
  96. return False
  97. async def deal(self):
  98. """
  99. :return:
  100. """
  101. params_error = self.check_params()
  102. if params_error:
  103. return params_error
  104. else:
  105. trace_id_exist_flag = await self.check_trace_id()
  106. if trace_id_exist_flag:
  107. return await self.push_video_into_queue()
  108. else:
  109. # 只需要传trace_id, 老系统接口不穿strategy参数默认strategy_v1
  110. response = await forward_requests(
  111. params={
  112. "traceId": self.trace_id
  113. },
  114. api="get_off_videos"
  115. )
  116. return response