ai_historical_missing_material_handler.py 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. import datetime
  2. import json
  3. import traceback
  4. import pandas as pd
  5. import requests
  6. import tornado.web
  7. from logging.handlers import TimedRotatingFileHandler
  8. from utils.DataBaseConfig import *
  9. from utils.BaseClass import *
  10. from utils.DataBaseConfig import *
  11. from utils.LogConfig import *
  12. from utils.UrlConfig import *
  13. from utils.CommonFunction import *
  14. from utils.ConstantConfig import *
  15. log_handler = TimedRotatingFileHandler("logs/ai_auto_create/ai_auto_create.log",
  16. when="midnight", backupCount=100)
  17. log_handler.setFormatter(log_formatter)
  18. logger = logging.getLogger('ai_auto_create_logger')
  19. logger.addHandler(log_handler)
  20. logger.setLevel(logging.DEBUG)
  21. print('id of logger %s' % id(logger))
  22. class AiHistoricalMissingMaterial(tornado.web.RequestHandler):
  23. def post(self):
  24. data = self.request.body
  25. data = str(data, 'utf8')
  26. data = json.loads(data, encoding='utf8')
  27. logger.info("*************************************** NEW REQUEST ***************************************")
  28. logger.info("raw data from request is %s" % data)
  29. account_id = data.get('account_id')
  30. campaign_id = data.get('campaign_id')
  31. try:
  32. video_info = get_video_info(account_id, historical_missing_video_cnt, get_historical_missing_video_url)
  33. if video_info is None:
  34. self.write(json.dumps({"message": "没有获取到视频,不发送ai策略请求!"}))
  35. self.flush()
  36. else:
  37. campaign_name, group_name = get_campaign_and_group_name_rule(account_id)
  38. if (campaign_name is None) or (group_name is None):
  39. self.write(json.dumps({"message": "没有获取到广告计划命名规则 或 广告组命名规则,不发送ai策略请求!"}))
  40. self.flush()
  41. else:
  42. request_data = {
  43. "video": video_info,
  44. "operation_type": 1,
  45. "account_id": account_id,
  46. "ai_strategy_remark": "补充遗漏素材",
  47. "campaign_info":
  48. {"campaign_id": campaign_id,
  49. "campaign_name": campaign_name.replace('自定义', '补充遗漏素材') + str(datetime.datetime.now())},
  50. 'group_info':
  51. {'group_name': group_name.replace('自定义', '补充遗漏素材') + str(datetime.datetime.now()),
  52. 'begin_time': str(datetime.date.today())},
  53. 'creative_info': {'is_sticky': 0}
  54. }
  55. request = requests.post(ai_strategy_request_url, request_data)
  56. logger.info("ai策略的返回信息:%s" % request.text)
  57. self.write(request.text)
  58. self.flush()
  59. except Exception:
  60. logger.error(traceback.format_exc())
  61. self.write(json.dumps(traceback.format_exc()))
  62. self.flush()
  63. class AiAutoCreative(tornado.web.RequestHandler):
  64. def post(self):
  65. data = self.request.body
  66. data = str(data, 'utf8')
  67. data = json.loads(data, encoding='utf8')
  68. logger.info("*************************************** NEW REQUEST ***************************************")
  69. logger.info("raw data from request is %s" % data)
  70. account_id = data.get('account_id')
  71. campaign_id = data.get('campaign_id')
  72. try:
  73. video_info = get_video_info(account_id, get_new_video_url)
  74. if video_info is None:
  75. self.write(json.dumps({"message": "没有获取到视频,不发送ai策略请求!"}))
  76. self.flush()
  77. else:
  78. campaign_name, group_name = get_campaign_and_group_name_rule(account_id)
  79. if (campaign_name is None) or (group_name is None):
  80. self.write(json.dumps({"message": "没有获取到广告计划命名规则 或 广告组命名规则,不发送ai策略请求!"}))
  81. self.flush()
  82. else:
  83. request_data = get_request_data(account_id, campaign_id, video_info, campaign_name, group_name,
  84. "自动上新", "上新")
  85. request = requests.post(ai_strategy_request_url, request_data)
  86. logger.info("ai策略的返回信息:%s" % request.text)
  87. self.write(request.text)
  88. self.flush()
  89. except Exception:
  90. logger.error(traceback.format_exc())
  91. self.write(json.dumps(traceback.format_exc()))
  92. self.flush()
  93. class AiHistoricalHighQualityMaterial(tornado.web.RequestHandler):
  94. def post(self):
  95. data = self.request.body
  96. data = str(data, 'utf8')
  97. data = json.loads(data, encoding='utf8')
  98. logger.info("*************************************** NEW REQUEST ***************************************")
  99. logger.info("raw data from request is %s" % data)
  100. account_id = data.get('account_id')
  101. campaign_id = data.get('campaign_id')
  102. try:
  103. video_info = get_video_info(account_id, high_quality_video_cnt,
  104. (datetime.datetime.now() + datetime.timedelta(days=-high_quality_video_days)).strftime("%Y-%m-%d"),
  105. str(datetime.date.today()), get_high_quality_video_url)
  106. if video_info is None:
  107. self.write(json.dumps({"message": "没有获取到视频,不发送ai策略请求!"}))
  108. self.flush()
  109. else:
  110. campaign_name, group_name = get_campaign_and_group_name_rule(account_id)
  111. if (campaign_name is None) or (group_name is None):
  112. self.write(json.dumps({"message": "没有获取到广告计划命名规则 或 广告组命名规则,不发送ai策略请求!"}))
  113. self.flush()
  114. else:
  115. request_data = get_request_data(account_id, campaign_id, video_info, campaign_name, group_name,
  116. "跑量素材", "跑量素材")
  117. request = requests.post(ai_strategy_request_url, request_data)
  118. logger.info("ai策略的返回信息:%s" % request.text)
  119. self.write(request.text)
  120. self.flush()
  121. except Exception:
  122. logger.error(traceback.format_exc())
  123. self.write(json.dumps(traceback.format_exc()))
  124. self.flush()
  125. def get_request_data(account_id, campaign_id, video_info, campaign_name, group_name,ai_strategy_remark, name_replace):
  126. res = {
  127. "video": video_info,
  128. "operation_type": 1,
  129. "account_id": account_id,
  130. "ai_strategy_remark": ai_strategy_remark,
  131. "campaign_info":
  132. {"campaign_id": campaign_id,
  133. "campaign_name": campaign_name.replace('自定义', name_replace) + str(datetime.datetime.now())},
  134. 'group_info':
  135. {'group_name': group_name.replace('自定义', name_replace) + str(datetime.datetime.now()),
  136. 'begin_time': str(datetime.date.today())},
  137. 'creative_info': {'is_sticky': 0}
  138. }
  139. return res