liyuyi@c-top.com.cn 4 年之前
父節點
當前提交
61619726c6

+ 17 - 7
advertiser_strategy_operate.py

@@ -9,20 +9,24 @@ from utils.DataBaseConfig import *
 from utils.LogConfig import *
 
 log_handler = TimedRotatingFileHandler("logs/advertiser_strategy_operate/advertiser_strategy_operate.log",
-                                       when="midnight", backupCount=100)
+                                       when="midnight", backupCount=100, encoding='utf-8')
 log_handler.setFormatter(log_formatter)
 logger = logging.getLogger('advertiser_strategy_operate_logger')
 logger.addHandler(log_handler)
 logger.setLevel(logging.DEBUG)
-print('id of logger %s' % id(logger))
+print('id of advertiser_strategy_operate_logger %s' % id(logger))
 
 
 class AddAdvertiserStrategy(BaseHandler):
     """
     新增客户策略
     """
+
     def post(self):
         data = self.request.body
+
+        logger.info("raw data from request is %s" % data)
+
         data = str(data, 'utf8')
         data = json.loads(data, encoding='utf8')
 
@@ -34,7 +38,10 @@ class AddAdvertiserStrategy(BaseHandler):
         logger.info("***************************************  NEW REQUEST ***************************************")
         logger.info("raw data from request is %s" % data)
 
-        drop_cols = ['beginTime', 'budget', 'budgetMode', 'customCrowd', 'endTime', 'scheduleTime']
+        drop_cols = ['customCrowd']
+        for col in drop_cols:
+            del data[col]
+
         # 1-1 判断 account_id 是否存在可用策略,如果存在则不能新增
         try:
             account_id = data.get('accountId')
@@ -42,12 +49,15 @@ class AddAdvertiserStrategy(BaseHandler):
             select * from ctop_ai_kuaishou_advertiser_strategy where account_id = %s and status = 1
             """ % account_id
             df = pd.read_sql(sql, engine)
-            if df.empty:
+            if not df.empty:
                 self.write(json.dumps({"message": "该账户已经存在有效策略!", "code": -1}))
                 self.flush()
             else:
-                for col in drop_cols:
-                    del data[col]
+                data['campaignType'] = data['marketingGoal']
+                del data['marketingGoal']
+
+                if not data['agesRange']:
+                    del data['agesRange']
 
                 transfer_data = {}
                 for key, value in data.items():
@@ -57,7 +67,7 @@ class AddAdvertiserStrategy(BaseHandler):
                 df = pd.DataFrame.from_dict(transfer_data, orient='index').T
                 df.to_sql(name="ctop_ai_kuaishou_advertiser_strategy", con=engine, if_exists='append', index=False)
                 logger.info("策略添加成功!")
-                self.write(json.dumps({"message": "策略添加成功!", "code": 0}))
+                self.write(json.dumps({"message": "策略添加成功!", "code":0}))
                 self.flush()
         except:
             logger.error(traceback.format_exc())

+ 0 - 100
ai_auto_creative_handler.py

@@ -1,100 +0,0 @@
-import datetime
-import json
-import traceback
-import pandas as pd
-import requests
-import tornado.web
-from utils.DataBaseConfig import *
-from utils.UrlConfig import *
-from utils.LogConfig import *
-
-
-
-class AiAutoCreative(tornado.web.RequestHandler):
-    """
-    定时任务调用,上新素材自动创建
-    """
-    def initialize(self, logger):
-        self.logger = logger
-
-    def post(self):
-        data = self.request.body
-        data = str(data, 'utf8')
-        data = json.loads(data, encoding='utf8')
-        self.logger.info("***************************************  NEW REQUEST ***************************************")
-        self.logger.info("raw data from request is %s" % data)
-
-        account_id = data.get('account_id')
-        campaign_id = data.get('campaign_id')
-        try:
-            inst = GetRequestData(account_id, campaign_id)
-            if inst.data is not None:
-                request = requests.post(ai_strategy_request_url, inst.data)
-                self.logger.info("ai策略的返回信息:%s" % request.text)
-                self.write(request.text)
-                self.flush()
-            else:
-                self.write(json.dumps({"message": "没有获取到视频新,不发送ai策略请求!"}))
-                self.flush()
-        except Exception:
-            self.logger.error(traceback.format_exc())
-            self.write(json.dumps(traceback.format_exc()))
-            self.flush()
-
-
-class GetRequestData(object):
-    def __init__(self, account_id, campaign_id):
-        self.video = None
-        self.account_id = account_id
-        self.campaign_id = campaign_id
-        self.data = None
-        self.campaign_name = None
-        self.group_name = None
-        self.get_video_info()
-        self.get_campaign_and_group_name_rule()
-        self.get_request_data()
-
-    def get_video_info(self):
-        video_request_data = {"accountId": self.account_id}
-        request = requests.post(get_new_video_url,
-                                headers=headers,
-                                data=json.JSONEncoder().encode(video_request_data))
-        self.video = request
-
-    def get_campaign_and_group_name_rule(self):
-        if self.video['code'] == 0:
-            sql = """
-                    select campaign_name, unit_name 
-                    from ctop_ai_kuaishou_advertiser_strategy 
-                    where account_id = %d 
-                    and status = 1
-                    limit 1
-                    """ % self.account_id
-            df = pd.read_sql(sql, engine)
-            self.campaign_name = df['campaign_name'].values[0]
-            self.group_name = df['unit_name'].values[0]
-
-    def get_request_data(self):
-        if self.video['code'] == 0:
-            self.data = {
-                         "video": self.video['data'],
-                         "operation_type": 1,
-                         "account_id": self.account_id,
-                         "ai_strategy_remark": "自动上新",
-                         "campaign_info":
-                             {
-                             "campaign_id": self.campaign_id,
-                             "campaign_name": self.campaign_name.replace('自定义', '上新')
-                                              + str(datetime.datetime.now())
-                             },
-                         'group_info':
-                             {
-                             'group_name': self.group_name.replace('自定义', '上新')
-                                           + str(datetime.datetime.now()),
-                             'begin_time': str(datetime.date.today())
-                             },
-                         'creative_info':
-                             {
-                             'is_sticky': 0
-                             }
-                         }

+ 1 - 1
ai_callback_handler.py

@@ -11,7 +11,7 @@ log_handler.setFormatter(log_formatter)
 logger = logging.getLogger('ai_callback_logger')
 logger.addHandler(log_handler)
 logger.setLevel(logging.DEBUG)
-print('id of logger %s' % id(logger))
+print('id of ai_callback_logger %s' % id(logger))
 
 
 class AiCallBackAddCreative(tornado.web.RequestHandler):

+ 0 - 160
ai_check_and_upto_full_creative_handler.py

@@ -1,160 +0,0 @@
-import datetime
-import json
-import traceback
-import pandas as pd
-import requests
-import tornado.web
-from utils.DataBaseConfig import *
-
-
-class AiCheckAndUpTOFullCreative(tornado.web.RequestHandler):
-    """
-    每天22:00 调用该任务,检查当天创意是否创建达到上限,否则使用历史跑量素材填满
-    """
-    def initialize(self, logger):
-        self.logger = logger
-
-    def post(self):
-        data = self.request.body
-        data = str(data, 'utf8')
-        data = json.loads(data, encoding='utf8')
-        self.logger.info("***************************************  NEW REQUEST ***************************************")
-        self.logger.info("raw data from request is %s" % data)
-
-        account_id = data.get('account_id')
-        try:
-            inst = GetRequestData(account_id)
-            if inst.video_cnt == 0:
-                self.logger.info("创意已经建满,不需要补充素材!")
-                self.write(json.dumps("message: 创意已经建满,不需要补充素材!"))
-                self.flush()
-            else:
-                inst.get_video_info()
-                if inst.video.get('code', None) != 0:
-                    self.logger.info("没有成功获取到视频信息: %s !" % inst.video.get('message'))
-                    self.write(json.dumps("message: %s" % inst.video.get('message')))
-                    self.flush()
-                else:
-                    inst.get_request_data()
-                    request = requests.post(ai_strategy_request_url, inst.data)
-                    self.logger.info("ai策略的返回信息:%s" % request.text)
-                    self.write(request.text)
-                    self.flush()
-        except Exception:
-            self.logger.error(traceback.format_exc())
-            self.write(json.dumps(traceback.format_exc()))
-            self.flush()
-
-
-class GetRequestData(object):
-    def __init__(self, account_id):
-        self.video = None
-        self.account_id = account_id
-        self.campaign_id = None
-        self.data = None
-        self.campaign_name = None
-        self.group_name = None
-        self.video_cnt = 0
-        self.get_campaign_id()
-        self.get_video_cnt()
-        self.get_campaign_and_group_name_rule()
-
-    def get_campaign_id(self):
-        """
-        获取当天计划中包含“跑量素材”计划的,计划id
-        :return:
-        """
-        start_time = (datetime.date.today()).strftime('%Y-%m-%d %H:%M:%S')
-        end_time = (datetime.datetime.now()).strftime('%Y-%m-%d %H:%M:%S')
-        sql = """
-        select campaign_id, campaign_name from ctop_kuaishou_campaign 
-        where account_id = %s
-        and put_create_time >= '%s'
-        and put_create_time <= '%s'
-        """ % (self.account_id, start_time, end_time)
-        df = pd.read_sql(sql, engine)
-        for row in df.itertuples():
-            if '跑量素材' in getattr(row, 'campaign_name'):
-                self.campaign_id = getattr(row, 'campaign_id')
-                break
-
-    def get_video_cnt(self):
-        """
-        获取需要补充的视频个数
-        :return:
-        """
-        # 从客户策略表中获取该账户下 每个素材搭配的封面个数, 来计算需要补充的素材个数
-        sql = """
-        select image_cnt from ctop_ai_kuaishou_advertiser_strategy 
-        where account_id = %s 
-        and status = 1
-        limit 1
-        """ % self.account_id
-        df = pd.read_sql(sql, engine)
-        image_cnt = df['image_cnt'].values[0]
-
-        # 从 ctop_kuaishou_creative 获取当天该账户到此刻 已经创建的创意个数
-        start_time = (datetime.date.today()).strftime('%Y-%m-%d %H:%M:%S')
-        end_time = (datetime.datetime.now()).strftime('%Y-%m-%d %H:%M:%S')
-        sql = """
-        select count(1) creative_cnt from ctop_kuaishou_creative 
-        where account_id = %s
-        and creative_id is not NULL
-        and creative_create_time <= '%s'
-        and creative_create_time >= '%s'
-        """ % (self.account_id, end_time, start_time)
-        df = pd.read_sql(sql, engine)
-        creative_cnt = df['creative_cnt'].values[0]
-        if creative_cnt >= 2000:
-            self.video_cnt = 0
-        else:
-            self.video_cnt = (2000-creative_cnt) // image_cnt
-
-    def get_video_info(self):
-        now = datetime.datetime.now()
-        video_request_data = {
-            "accountId": self.account_id,
-            "num": self.video_cnt,
-            "startTime": (now + datetime.timedelta(days=-2*high_quality_video_days)).strftime("%Y-%m-%d"),
-            "endTime": (now + datetime.timedelta(days=-high_quality_video_days)).strftime("%Y-%m-%d")
-            }
-        request = requests.post(get_historical_high_quality_video_url,
-                                headers=headers,
-                                data=json.JSONEncoder().encode(video_request_data))
-        self.video = request
-
-    def get_campaign_and_group_name_rule(self):
-        sql = """
-                select campaign_name, unit_name 
-                from ctop_ai_kuaishou_advertiser_strategy 
-                where account_id = %d 
-                and status = 1
-                limit 1
-                """ % self.account_id
-        df = pd.read_sql(sql, engine)
-        self.campaign_name = df['campaign_name'].values[0]
-        self.group_name = df['unit_name'].values[0]
-
-    def get_request_data(self):
-        self.data = {
-                     "video": self.video['data'],
-                     "operation_type": 1,
-                     "account_id": self.account_id,
-                     "ai_strategy_remark": "跑量素材",
-                     "campaign_info":
-                         {
-                         "campaign_id": self.campaign_id,
-                         "campaign_name": self.campaign_name.replace('自定义', '跑量素材')
-                                          + str(datetime.datetime.now())
-                         },
-                     'group_info':
-                         {
-                         'group_name': self.group_name.replace('自定义', '跑量素材')
-                                       + str(datetime.datetime.now()),
-                         'begin_time': str(datetime.date.today())
-                         },
-                     'creative_info':
-                         {
-                         'is_sticky': 0
-                         }
-                     }

+ 0 - 97
ai_historical_high_quality_material_handler.py

@@ -1,97 +0,0 @@
-import datetime
-import pandas as pd
-import json
-import traceback
-import requests
-import tornado.web
-from utils.DataBaseConfig import *
-
-
-class AiHistoricalHighQualityMaterial(tornado.web.RequestHandler):
-
-    def post(self):
-        data = self.request.body
-        data = str(data, 'utf8')
-        data = json.loads(data, encoding='utf8')
-        self.logger.info("***************************************  NEW REQUEST ***************************************")
-        self.logger.info("raw data from request is %s" % data)
-
-        account_id = data.get('account_id')
-        campaign_id = data.get('campaign_id')
-        try:
-            inst = GetRequestData(account_id, campaign_id)
-            if inst.data is not None:
-                request = requests.post(ai_strategy_request_url, inst.data)
-                self.logger.info("ai策略的返回信息:%s" % request.text)
-                self.write(request.text)
-                self.flush()
-            else:
-                self.write(json.dumps({"message": "没有获取到视频新,不发送ai策略请求!"}))
-                self.flush()
-        except Exception:
-            self.logger.error(traceback.format_exc())
-            self.write(json.dumps(traceback.format_exc()))
-            self.flush()
-
-
-class GetRequestData(object):
-    def __init__(self, account_id, campaign_id):
-        self.video = None
-        self.account_id = account_id
-        self.campaign_id = campaign_id
-        self.data = None
-        self.campaign_name = None
-        self.group_name = None
-        self.get_video_info()
-        self.get_campaign_and_group_name_rule()
-        self.get_request_data()
-
-    def get_video_info(self):
-        video_request_data = {"accountId": self.account_id,
-                              "num": high_quality_video_cnt,
-                              "startTime": (datetime.datetime.now() +
-                                            datetime.timedelta(days=-high_quality_video_days)).strftime("%Y-%m-%d"),
-                              "endTime": str(datetime.date.today())
-                              }
-        request = requests.post(get_historical_high_quality_video_url,
-                                headers=headers,
-                                data=json.JSONEncoder().encode(video_request_data))
-        self.video = request
-
-    def get_campaign_and_group_name_rule(self):
-        if self.video['code'] == 0:
-            sql = """
-                    select campaign_name, unit_name 
-                    from ctop_ai_kuaishou_advertiser_strategy 
-                    where account_id = %d 
-                    and status = 1
-                    limit 1
-                    """ % self.account_id
-            df = pd.read_sql(sql, engine)
-            self.campaign_name = df['campaign_name'].values[0]
-            self.group_name = df['unit_name'].values[0]
-
-    def get_request_data(self):
-        if self.video['code'] == 0:
-            self.data = {
-                "video": self.video['data'],
-                "operation_type": 1,
-                "account_id": self.account_id,
-                "ai_strategy_remark": "跑量素材",
-                "campaign_info":
-                    {
-                        "campaign_id": self.campaign_id,
-                        "campaign_name": self.campaign_name.replace('自定义', '跑量素材')
-                                         + str(datetime.datetime.now())
-                    },
-                'group_info':
-                    {
-                        'group_name': self.group_name.replace('自定义', '跑量素材')
-                                      + str(datetime.datetime.now()),
-                        'begin_time': str(datetime.date.today())
-                    },
-                'creative_info':
-                    {
-                        'is_sticky': 0
-                    }
-            }

+ 111 - 28
ai_historical_missing_material_handler.py

@@ -1,28 +1,24 @@
 import datetime
-import json
 import traceback
-import pandas as pd
-import requests
-import tornado.web
 from logging.handlers import TimedRotatingFileHandler
-from utils.DataBaseConfig import *
 from utils.BaseClass import *
-from utils.DataBaseConfig import *
-from utils.LogConfig import *
-from utils.UrlConfig import *
 from utils.CommonFunction import *
 from utils.ConstantConfig import *
+from utils.LogConfig import *
 
 log_handler = TimedRotatingFileHandler("logs/ai_auto_create/ai_auto_create.log",
                                        when="midnight", backupCount=100)
 log_handler.setFormatter(log_formatter)
-logger = logging.getLogger('ai_auto_create_logger')
+logger = logging.getLogger('ai_time_task_creative_logger')
 logger.addHandler(log_handler)
 logger.setLevel(logging.DEBUG)
-print('id of logger %s' % id(logger))
+print('id of ai_time_task_creative_logger %s' % id(logger))
 
 
 class AiHistoricalMissingMaterial(tornado.web.RequestHandler):
+    """
+    补充历史遗漏素材(关联创意个数为0个素材)
+    """
     def post(self):
         data = self.request.body
         data = str(data, 'utf8')
@@ -33,7 +29,7 @@ class AiHistoricalMissingMaterial(tornado.web.RequestHandler):
         account_id = data.get('account_id')
         campaign_id = data.get('campaign_id')
         try:
-            video_info = get_video_info(account_id, historical_missing_video_cnt, get_historical_missing_video_url)
+            video_info = get_missing_video_info(account_id, historical_missing_video_cnt, get_missing_video_url)
             if video_info is None:
                 self.write(json.dumps({"message": "没有获取到视频,不发送ai策略请求!"}))
                 self.flush()
@@ -43,19 +39,8 @@ class AiHistoricalMissingMaterial(tornado.web.RequestHandler):
                     self.write(json.dumps({"message": "没有获取到广告计划命名规则 或 广告组命名规则,不发送ai策略请求!"}))
                     self.flush()
                 else:
-                    request_data = {
-                        "video": video_info,
-                        "operation_type": 1,
-                        "account_id": account_id,
-                        "ai_strategy_remark": "补充遗漏素材",
-                        "campaign_info":
-                            {"campaign_id": campaign_id,
-                             "campaign_name": campaign_name.replace('自定义', '补充遗漏素材') + str(datetime.datetime.now())},
-                        'group_info':
-                            {'group_name': group_name.replace('自定义', '补充遗漏素材') + str(datetime.datetime.now()),
-                             'begin_time': str(datetime.date.today())},
-                        'creative_info': {'is_sticky': 0}
-                    }
+                    request_data = get_request_data(account_id, campaign_id, video_info, campaign_name, group_name,
+                                                    "补充遗漏素材", "补充遗漏素材")
                     request = requests.post(ai_strategy_request_url, request_data)
                     logger.info("ai策略的返回信息:%s" % request.text)
                     self.write(request.text)
@@ -67,6 +52,9 @@ class AiHistoricalMissingMaterial(tornado.web.RequestHandler):
 
 
 class AiAutoCreative(tornado.web.RequestHandler):
+    """
+    每5分钟,检查一次是否有上新素材,有的话,就自动创建
+    """
     def post(self):
         data = self.request.body
         data = str(data, 'utf8')
@@ -77,7 +65,7 @@ class AiAutoCreative(tornado.web.RequestHandler):
         account_id = data.get('account_id')
         campaign_id = data.get('campaign_id')
         try:
-            video_info = get_video_info(account_id, get_new_video_url)
+            video_info = get_new_video_info(account_id, get_new_video_url)
             if video_info is None:
                 self.write(json.dumps({"message": "没有获取到视频,不发送ai策略请求!"}))
                 self.flush()
@@ -99,7 +87,10 @@ class AiAutoCreative(tornado.web.RequestHandler):
             self.flush()
 
 
-class AiHistoricalHighQualityMaterial(tornado.web.RequestHandler):
+class AiHighQualityMaterial(tornado.web.RequestHandler):
+    """
+    补充历史跑量素材
+    """
     def post(self):
         data = self.request.body
         data = str(data, 'utf8')
@@ -110,7 +101,7 @@ class AiHistoricalHighQualityMaterial(tornado.web.RequestHandler):
         account_id = data.get('account_id')
         campaign_id = data.get('campaign_id')
         try:
-            video_info = get_video_info(account_id, high_quality_video_cnt,
+            video_info = get_top_video_info(account_id, high_quality_video_cnt,
                                         (datetime.datetime.now() + datetime.timedelta(days=-high_quality_video_days)).strftime("%Y-%m-%d"),
                                         str(datetime.date.today()), get_high_quality_video_url)
             if video_info is None:
@@ -134,6 +125,98 @@ class AiHistoricalHighQualityMaterial(tornado.web.RequestHandler):
             self.flush()
 
 
+
+
+
+class AiCheckAndUpTOFullCreative(tornado.web.RequestHandler):
+    """
+    每天22:00 调用该任务,检查当天创意是否创建达到上限,否则使用历史跑量素材填满
+    """
+    def post(self):
+        data = self.request.body
+        data = str(data, 'utf8')
+        data = json.loads(data, encoding='utf8')
+        logger.info("***************************************  NEW REQUEST ***************************************")
+        logger.info("raw data from request is %s" % data)
+
+        account_id = data.get('account_id')
+        campaign_id = data.get('campaign_id')
+        try:
+            start_time = (datetime.date.today()).strftime('%Y-%m-%d %H:%M:%S')
+            end_time = (datetime.datetime.now()).strftime('%Y-%m-%d %H:%M:%S')
+
+            # 1-1 获取当天计划中包含“跑量素材”计划的,计划id
+            sql = """
+                    select campaign_id, campaign_name from ctop_kuaishou_campaign 
+                    where account_id = %s
+                    and put_create_time >= '%s'
+                    and put_create_time <= '%s'
+                    """ % (account_id, start_time, end_time)
+            df = pd.read_sql(sql, engine)
+            for row in df.itertuples():
+                if '跑量素材' in getattr(row, 'campaign_name'):
+                    campaign_id = getattr(row, 'campaign_id')
+                    break
+
+            # 2-1 从客户策略表中获取该账户下 每个素材搭配的封面个数, 来计算需要补充的素材个数
+            sql = """
+            select image_cnt from ctop_ai_kuaishou_advertiser_strategy 
+            where account_id = %s 
+            and status = 1
+            limit 1
+            """ % account_id
+            df = pd.read_sql(sql, engine)
+            image_cnt = df['image_cnt'].values[0]
+
+            # 3-1 从 ctop_kuaishou_creative 获取当天该账户到此刻 已经创建的创意个数
+            video_cnt = 0
+            sql = """
+                   select count(1) creative_cnt from ctop_kuaishou_creative 
+                   where account_id = %s
+                   and creative_id is not NULL
+                   and creative_create_time <= '%s'
+                   and creative_create_time >= '%s'
+                   """ % (account_id, end_time, start_time)
+            df = pd.read_sql(sql, engine)
+            creative_cnt = df['creative_cnt'].values[0]
+            if creative_cnt >= 2000:
+                video_cnt = 0
+            else:
+                video_cnt = (2000 - creative_cnt) // image_cnt
+
+            # 4-1 获取视频信息
+            if video_cnt == 0:
+                logger.info("创意已经建满,不需要补充素材!")
+                self.write(json.dumps("message: 创意已经建满,不需要补充素材!"))
+                self.flush()
+            else:
+                now = datetime.datetime.now()
+                video_info = get_top_video_info(account_id,
+                                            video_cnt,
+                                            (now + datetime.timedelta(days=-2*high_quality_video_days)).strftime("%Y-%m-%d"),
+                                            (now + datetime.timedelta(days=-high_quality_video_days)).strftime("%Y-%m-%d"),
+                                            get_high_quality_video_url)
+                if video_info is None:
+                    self.write(json.dumps({"message": "没有获取到视频,不发送ai策略请求!"}))
+                    self.flush()
+                else:
+                    campaign_name, group_name = get_campaign_and_group_name_rule(account_id)
+                    if (campaign_name is None) or (group_name is None):
+                        self.write(json.dumps({"message": "没有获取到广告计划命名规则 或 广告组命名规则,不发送ai策略请求!"}))
+                        self.flush()
+                    else:
+                        request_data = get_request_data(account_id, campaign_id, video_info, campaign_name, group_name,
+                                                        "跑量素材", "跑量素材")
+                        request = requests.post(ai_strategy_request_url, request_data)
+                        logger.info("ai策略的返回信息:%s" % request.text)
+                        self.write(request.text)
+                        self.flush()
+        except Exception:
+            logger.error(traceback.format_exc())
+            self.write(json.dumps(traceback.format_exc()))
+            self.flush()
+
+
 def get_request_data(account_id, campaign_id, video_info, campaign_name, group_name,ai_strategy_remark, name_replace):
     res = {
         "video": video_info,
@@ -148,4 +231,4 @@ def get_request_data(account_id, campaign_id, video_info, campaign_name, group_n
              'begin_time': str(datetime.date.today())},
         'creative_info': {'is_sticky': 0}
     }
-    return res
+    return res

+ 6 - 1
main.py

@@ -4,8 +4,9 @@ import tornado.log
 import tornado.options
 import tornado.web
 from ai_strategy_request_handler import *
-from advertiser_strategy_operate import *
 from ai_callback_handler import *
+from advertiser_strategy_operate import *
+from ai_time_task_creative_handler import *
 
 
 def create_application():
@@ -14,6 +15,10 @@ def create_application():
         (r"/ai_callback_add_group", AiCallBackAddGroup),
         (r"/ai_callback_add_creative", AiCallBackAddCreative),
         (r"/add_advertiser_strategy", AddAdvertiserStrategy),
+        (r"/ai_historical_missing_material", AiHistoricalMissingMaterial),
+        (r"/ai_auto_creative", AiAutoCreative),
+        (r"/ai_high_quality_material", AiHighQualityMaterial),
+        (r"/ai_check_and_up_to_full_creative", AiCheckAndUpTOFullCreative),
     ])
     return web_application
 

+ 6 - 9
utils/BaseClass.py

@@ -3,17 +3,14 @@ import tornado.web
 
 class BaseHandler(tornado.web.RequestHandler):
     def set_default_headers(self):
-        self.set_header("Access-Control-Allow-Origin", "*")
+        print("setting headers!!!")
+        self.set_header("access-control-allow-origin", "*")
         self.set_header("Access-Control-Allow-Headers", "x-requested-with")
-        self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
-
-    def post(self):
-        self.write('some post')
-
-    def get(self):
-        self.write('some get')
+        self.set_header('Access-Control-Allow-Methods', 'GET, PUT, DELETE, OPTIONS')
+        # HEADERS!
+        self.set_header("Access-Control-Allow-Headers", "access-control-allow-origin,authorization,content-type")
 
     def options(self):
         # no body
         self.set_status(204)
-        self.finish()
+        self.finish()

+ 6 - 14
utils/CommonFunction.py

@@ -14,33 +14,25 @@ def get_lower_case_name(name):
     return "".join(lst).lower()
 
 
-def get_video_info(account_id, url):
+def get_new_video_info(account_id, url):
     request_data = {"accountId": account_id}
-    request = requests.post(url, headers=headers, data=json.JSONEncoder().encode(request_data))
+    request = requests.post(url, headers=headers, data=json.JSONEncoder().encode(request_data)).text
     if request['code'] != 0:
         return None
     return request['data']
 
 
-def get_video_info(account_id, cnt, url):
+def get_missing_video_info(account_id, cnt, url):
     request_data = {"accountId": account_id, "videoCnt": cnt}
-    request = requests.post(url, headers=headers, data=json.JSONEncoder().encode(request_data))
+    request = requests.post(url, headers=headers, data=json.JSONEncoder().encode(request_data)).text
     if request['code'] != 0:
         return None
     return request['data']
 
 
-def get_video_info(account_id, cnt, url):
-    request_data = {"accountId": account_id, "videoCnt": cnt}
-    request = requests.post(url, headers=headers, data=json.JSONEncoder().encode(request_data))
-    if request['code'] != 0:
-        return None
-    return request['data']
-
-
-def get_video_info(account_id, cnt, start_time, end_time, url):
+def get_top_video_info(account_id, cnt, start_time, end_time, url):
     request_data = {"accountId": account_id, "num": cnt, "startTime": start_time, "endTime": end_time}
-    request = requests.post(url, headers=headers, data=json.JSONEncoder().encode(request_data))
+    request = requests.post(url, headers=headers, data=json.JSONEncoder().encode(request_data)).text
     if request['code'] != 0:
         return None
     return request['data']

+ 27 - 7
utils/UrlConfig.py

@@ -1,24 +1,44 @@
 headers = {'Content-Type': 'application/json'}
 
 # 创建计划url
-create_campaign_url = "http://192.168.1.8:8080/jeecg-boot/kuaishou/create/campaignCreate"
+# create_campaign_url = "http://192.168.1.8:8080/jeecg-boot/kuaishou/create/campaignCreate"
 
 # 获取上新视频url
-get_new_video_url = "http://192.168.1.8:8080/jeecg-boot/kuaishou/material/getNewVideoList"
+# get_new_video_url = "http://192.168.1.8:8080/jeecg-boot/kuaishou/material/getNewVideoList"
 
 # 获取历史视频url
-get_history_video_url = "http://192.168.1.8:8080/jeecg-boot/kuaishou/material/getHistoryVideoList"
+# get_history_video_url = "http://192.168.1.8:8080/jeecg-boot/kuaishou/material/getHistoryVideoList"
 
 # 创建组和创意url
-create_group_and_creative_url = "http://192.168.1.8:8080/jeecg-boot/kuaishou/create/createUnitAndCreative"
+# create_group_and_creative_url = "http://192.168.1.8:8080/jeecg-boot/kuaishou/create/createUnitAndCreative"
 
 # 获取历史遗漏视频url, 没有关联上创意的视频
-get_missing_video_url = "http://192.168.1.8:8080/jeecg-boot/kuaishou/material/getHistoryVideoList"
+# get_missing_video_url = "http://192.168.1.8:8080/jeecg-boot/kuaishou/material/getHistoryVideoList"
 
 # 获取历史高质量视频url
-get_high_quality_video_url = "http://192.168.1.8:8080/jeecg-boot/kuaishou/material/getHistoryTopVideoList"
+# get_high_quality_video_url = "http://192.168.1.8:8080/jeecg-boot/kuaishou/material/getHistoryTopVideoList"
+
+
+
+# 创建计划url
+create_campaign_url = "http://192.168.1.188:8088/jeecg-boot/kuaishou/create/campaignCreate"
+
+# 获取上新视频url
+get_new_video_url = "http://192.168.1.188:8088/jeecg-boot/kuaishou/material/getNewVideoList"
+
+# 获取历史视频url
+get_history_video_url = "http://192.168.1.188:8088/jeecg-boot/kuaishou/material/getHistoryVideoList"
+
+# 创建组和创意url
+create_group_and_creative_url = "http://192.168.1.188:8088/jeecg-boot/kuaishou/create/createUnitAndCreative"
+
+# 获取历史遗漏视频url, 没有关联上创意的视频
+get_missing_video_url = "http://192.168.1.188:8088/jeecg-boot/kuaishou/material/getCreateZeroVideoList"
+
+# 获取历史高质量视频url
+get_high_quality_video_url = "http://192.168.1.188:8088/jeecg-boot/kuaishou/material/getHistoryTopVideoList"
 
 # ai 策略请求url
-ai_strategy_request_url = 'http://127.0.0.1:31012/ai_strategy_request'
+ai_strategy_request_url = 'http://192.168.1.193:31012/ai_strategy_request'
 
 # 192.168.1.193