|
@@ -141,7 +141,11 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
campaign_name = self.advertiser_strategy['campaign_name'] + '_优质定向'
|
|
|
create_campaign_request_data = {'account_id': self.account_id,
|
|
|
'campaign_name': campaign_name,
|
|
|
- 'type': self.advertiser_strategy['campaign_type']}
|
|
|
+ 'type': self.advertiser_strategy['campaign_type'],
|
|
|
+ 'day_budget': self.advertiser_strategy['campaign_day_budget'],
|
|
|
+ 'day_budget_schedule': eval(self.advertiser_strategy['campaign_day_budget_schedule'])
|
|
|
+ if self.advertiser_strategy['campaign_day_budget_schedule'] else None}
|
|
|
+ # TODO self.advertiser_strategy['campaign_status'] 如果为暂停,需要创建成功后,调用修改广告计划状态的接口
|
|
|
|
|
|
request = requests.post(url=create_campaign_url,
|
|
|
headers=headers,
|
|
@@ -155,6 +159,8 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
'ai_strategy_uuid': self.ai_strategy_uuid,
|
|
|
'campaign_name': campaign_name,
|
|
|
'campaign_type': self.advertiser_strategy['campaign_type'],
|
|
|
+ 'day_budget': self.advertiser_strategy['campaign_day_budget'],
|
|
|
+ 'day_budget_schedule': self.advertiser_strategy['campaign_day_budget_schedule'],
|
|
|
'create_time': datetime.datetime.now()
|
|
|
}
|
|
|
res = 0
|
|
@@ -300,11 +306,13 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
group_name = group_params['unit_name']
|
|
|
|
|
|
# 获取素材名称, 在广告组命名中进行替换 (同时获取photo_id, 用于拼装创意层级的参数)
|
|
|
- sql = """select photo_id, photo_name from ctop_kuaishou_video_get where account_id = %s and signature = '%s' limit 1""" % \
|
|
|
+ sql = """select photo_id, photo_name, material_type
|
|
|
+ from ctop_kuaishou_video_get where account_id = %s and signature = '%s' limit 1""" % \
|
|
|
(self.account_id, item['signature'])
|
|
|
signature_df = pd.read_sql(sql, self.product_engine)
|
|
|
photo_name = signature_df['photo_name'].values[0] if not signature_df.empty else 'unknown'
|
|
|
photo_id = signature_df['photo_id'].values[0] if not signature_df.empty else None
|
|
|
+ material_type = signature_df['material_type'].values[0] if not signature_df.empty else None
|
|
|
group_name.replace('{{素材名称}}', photo_name)
|
|
|
group_name = group_name + '_优质定向' + '_' + str(group_cnt)
|
|
|
|
|
@@ -333,6 +341,7 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
single_creative_params_to_db['creative_uuid'] = creative_uuid
|
|
|
single_creative_params_to_db['creative_name'] = creative_name
|
|
|
single_creative_params_to_db['photo_id'] = int(photo_id) if photo_id else None
|
|
|
+ single_creative_params_to_db['creative_material_type'] = material_type
|
|
|
single_creative_params_to_db['create_time'] = datetime.datetime.now()
|
|
|
batch_creative_params_to_db.append(single_creative_params_to_db)
|
|
|
|
|
@@ -340,6 +349,7 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
single_creative_params_to_request['creative_uuid'] = creative_uuid
|
|
|
single_creative_params_to_request['creative_name'] = creative_name
|
|
|
single_creative_params_to_request['photo_id'] = int(photo_id) if photo_id else None
|
|
|
+ single_creative_params_to_request['creative_material_type'] = material_type
|
|
|
|
|
|
# 单个创意信息加入到组里面的 creative_list 中
|
|
|
single_group_params_to_request['creative_list'].append(single_creative_params_to_request)
|
|
@@ -367,7 +377,7 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
def get_group_params(self):
|
|
|
# 1、从账户信息表读取基本的配置信息
|
|
|
group_params = {'unit_name': self.advertiser_strategy.get('group_name'),
|
|
|
- # 'put_status': self.advertiser_strategy.get('group_status'),
|
|
|
+ 'put_status': self.advertiser_strategy.get('group_status'),
|
|
|
'template_id': self.advertiser_strategy.get('template_id'),
|
|
|
'bid_type': self.advertiser_strategy.get('bid_type'),
|
|
|
'use_app_market': self.advertiser_strategy.get('use_app_market'),
|
|
@@ -377,7 +387,9 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
'smart_bid': self.advertiser_strategy.get('smart_bid'),
|
|
|
'ocpx_action_type': self.advertiser_strategy.get('ocpx_action_type'),
|
|
|
'deep_conversion_type': self.advertiser_strategy.get('deep_conversion_type'),
|
|
|
- 'scene_id':self.advertiser_strategy.get('scene_id'),
|
|
|
+ 'roi_ratio': self.advertiser_strategy.get('roi_ratio'),
|
|
|
+ 'deep_conversion_bid': self.advertiser_strategy.get('deep_conversion_bid'),
|
|
|
+ 'scene_id': self.advertiser_strategy.get('scene_id'),
|
|
|
'unit_type': self.advertiser_strategy.get('unit_type'),
|
|
|
'begin_time': self.advertiser_strategy.get('begin_time'),
|
|
|
'end_time': self.advertiser_strategy.get('end_time'),
|
|
@@ -409,6 +421,8 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
# 'merchandise_id': self.advertiser_strategy.get('merchandise_id'),
|
|
|
# 'merchandise_type': self.advertiser_strategy.get('merchandise_type'),
|
|
|
# 'intention_target': self.advertiser_strategy.get('intention_target'),
|
|
|
+ # 'playable_id': self.advertiser_strategy.get('playable_id'),
|
|
|
+ # 'play_button': self.advertiser_strategy.get('play_button'),
|
|
|
# 'dpa_unit_param': self.advertiser_strategy.get('dpa_unit_param'),
|
|
|
'region': self.advertiser_strategy.get('region'),
|
|
|
'district_ids': self.advertiser_strategy.get('district_ids'),
|
|
@@ -424,17 +438,17 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
'device_brand': self.advertiser_strategy.get('device_brand'),
|
|
|
'device_price': self.advertiser_strategy.get('device_price'),
|
|
|
'business_interest_type': self.advertiser_strategy.get('business_interest_type'),
|
|
|
- 'business_interest': eval(self.advertiser_strategy.get('business_interest'))
|
|
|
- if self.advertiser_strategy.get('business_interest') else None,
|
|
|
+ 'business_interest': self.advertiser_strategy.get('business_interest'),
|
|
|
'fans_star': self.advertiser_strategy.get('fans_star'),
|
|
|
'interest_video': self.advertiser_strategy.get('interest_video'),
|
|
|
'app_interest': self.advertiser_strategy.get('app_interest'),
|
|
|
# 'app_interest_ids': self.advertiser_strategy.get('app_interest_ids'),
|
|
|
- 'app_ids':self.advertiser_strategy.get('app_ids'),
|
|
|
+ 'app_ids': self.advertiser_strategy.get('app_ids'),
|
|
|
'filter_converted_level': self.advertiser_strategy.get('filter_converted_level'),
|
|
|
'population': self.advertiser_strategy.get('population'),
|
|
|
'exclude_population': self.advertiser_strategy.get('exclude_population'),
|
|
|
'paid_audience': self.advertiser_strategy.get('paid_audience'),
|
|
|
+ 'splash_ad_switch': self.advertiser_strategy.get('splash_ad_switch'),
|
|
|
'is_open': self.advertiser_strategy.get('is_open'),
|
|
|
'no_age_break': self.advertiser_strategy.get('no_age_break'),
|
|
|
'no_gender_break': self.advertiser_strategy.get('no_gender_break'),
|
|
@@ -491,6 +505,12 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
|
|
|
# 5、 写入数据库的组参数
|
|
|
group_params_to_db = group_params.copy()
|
|
|
+ # 5-1 需要删除的字段
|
|
|
+ drop_cols = ['put_status', 'splash_ad_switch']
|
|
|
+ for col in drop_cols:
|
|
|
+ if col in group_params_to_db.keys():
|
|
|
+ del group_params_to_db[col]
|
|
|
+
|
|
|
group_params_to_db['group_name'] = group_params_to_db.pop('unit_name')
|
|
|
group_params_to_db['ai_strategy_uuid'] = self.ai_strategy_uuid
|
|
|
group_params_to_db['account_id'] = self.account_id
|
|
@@ -512,7 +532,7 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
def get_creative_params(self):
|
|
|
# 1、从账户信息表读取基本的配置信息
|
|
|
creative_params = {'creative_name': self.advertiser_strategy.get('creative_name'),
|
|
|
- # 'put_status': self.advertiser_strategy.get('put_status'),
|
|
|
+ 'put_status': self.advertiser_strategy.get('group_status'),
|
|
|
'action_bar_text': self.advertiser_strategy.get('action_bar_text'),
|
|
|
'description': self.advertiser_strategy.get('description'),
|
|
|
'short_slogan': self.advertiser_strategy.get('short_slogan'),
|
|
@@ -527,7 +547,7 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
'actionbar_click_url': self.advertiser_strategy.get('actionbar_click_url'),
|
|
|
'creative_category': self.advertiser_strategy.get('creative_category'),
|
|
|
'creative_tag': self.advertiser_strategy.get('creative_tag'),
|
|
|
- # 'live_creative_type': self.advertiser_strategy.get('live_creative_type')
|
|
|
+ 'live_creative_type': self.advertiser_strategy.get('live_creative_type')
|
|
|
}
|
|
|
|
|
|
# 1、description 可能存在多个值,需要从中随机获取一个
|
|
@@ -537,10 +557,13 @@ class GetTargetAndAssemblyParameters(object):
|
|
|
creative_params['description'] = description_lst[0]
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
# 2 写入数据库的创意参数
|
|
|
creative_params_to_db = creative_params.copy()
|
|
|
+ drop_cols = ['put_status','live_creative_type']
|
|
|
+ for col in drop_cols:
|
|
|
+ if col in creative_params_to_db:
|
|
|
+ del creative_params_to_db[col]
|
|
|
+
|
|
|
creative_params_to_db['ai_strategy_uuid'] = self.ai_strategy_uuid
|
|
|
creative_params_to_db['account_id'] = self.account_id
|
|
|
creative_params_to_db['campaign_id'] = self.campaign_id
|