在短视频计划(一)中我们已经获取到了账户的信息,那么接下来就需要获取账户下的计划详细数据了!这也是我们目前主要想要拿到的数据。那么接下来正式开始我们最最重要的步骤!
首先是基于(一)中获取到的账户ID信息列表进行循环获取对应下的计划ID。
首先先讲解一下具体的函数方法编译,然后再进行主函数的流程规划。接下来第一步是获取账户下的计划ID,完成这一步其实就可以获取到对应计划的大部分的数据了。除去商品信息、抖音达人信息没有之外,其他的具体数据都是在这一步获取到的。具体的API接口参考文档网址如下:API接口 - 商业开放平台
#获取千川PC广告计划数据
#固定需要传入的参数,起止时间
def get_ad_report(access_token,advertiser_id,start_date,end_date):
#固定API接口
open_api_url_prefix = 'https://ad.oceanengine.com/open_api/'
url_params = 'v1.0/qianchuan/report/ad/get/'
url = open_api_url_prefix + url_params
#需要返回的参数,可以根据开发文档中的返回值参数进行设置自己需要的
params = {
'advertiser_id':advertiser_id,
'fields':['stat_cost','ctr','click_cnt','pay_order_amount','prepay_and_pay_order_roi','pay_order_count','qianchuan_first_order_cnt'],
#设置每次返回的条数,一般一个账户下是不会超过500条计划的,但是如果超过了,就要与page参数进行配合重复获取,根据返回参数中的page_info['total_page']判断总页数,直至获取到所有的数据
'page_size':500,
#'page':1,
'start_date':start_date,
'end_date':end_date,
#根据消耗进行降序,方便后续将那些没有消耗的计划屏蔽掉
'order_type':'DESC',
#统计周期:天
'time_granularity':'TIME_GRANULARITY_DAILY',
#过滤条件
'filtering': {
#推商品——与直播需要分开处理
'marketing_goal':'VIDEO_PROM_GOODS',
#平台——与推商品分开处理
'order_platform':'QIANCHUAN',
}
}
headers = {'Access-Token': access_token}
try:
#timeout=(10,20)
rsp = requests.get(url,json=params, headers=headers)
rsp_data=rsp.json()
#根据请求返回编码进行判断是否返回成功
if rsp_data['code'] == 0:
rsp_data=rsp_data['data']['list']
else:
rsp_data = 'fail'
except:
rsp_data = 'fail'
return rsp_data
此时调用函数方法返回的数据就是计划对应的数据内容了,具体的返回参数可以根据开发文档中的返回参数进行设置。
有些同学还想要计划对应的商品信息和抖音达人信息,以及对应的账户名信息等其他与计划相关但不归属于计划的数据,那么就需要进行其他的接口调用进行获取。比如想要获取计划对应绑定的商品和抖音号信息,那么就需要去【投放管理】-【广告计划管理】-【获取计划详情】接口下进行请求。API接口 - 商业开放平台
正确发送此请求后返回的数据字典【aweme_info】中包含的是抖音信息,【product_info】中包含的是商品信息,直接插入原有的数据中即可。需要确定的是,此接口目前已经发布公告会在短期内更新至v2版本,因此我这里直接使用了最新接口参数进行请求。
def get_ad(access_token,advertiser_id,ad_id):
open_api_url_prefix = 'https://ad.oceanengine.com/open_api/'
uri = 'v1.0/qianchuan/ad/detail/get/'
url = open_api_url_prefix + uri
params = {
#此时的参数要求是数字型,而非数组/字符串,需要根据开发文档进行严格规范
'advertiser_id':advertiser_id,
'ad_id':ad_id,
'request_material_url':False,
#限制版本号
'version':'v2'
}
headers = {'Access-Token': access_token}
try:
#timeout=(5,10)
rsp = requests.get(url,json=params,headers=headers)
rsp_data = rsp.json()
if rsp_data['code'] == 0:
#计划名
ad_name=rsp_data['data']['name']
#达人信息
if rsp_data['data'].get('aweme_info'):
aweme_name=rsp_data['data']['aweme_info'][0]['aweme_name']
aweme_id=rsp_data['data']['aweme_info'][0]['aweme_id']
else:
aweme_name=''
aweme_id=''
#商品信息
if rsp_data['data'].get('product_info'):
product_name=rsp_data['data']['product_info'][0]['name']
product_id=rsp_data['data']['product_info'][0]['id']
else:
product_name=''
product_id=''
#广告类型
marketing_scene = rsp_data['data']['marketing_scene']
#创建列表,将需要的数据按顺序写入
detail=[ad_name,product_id,product_name,aweme_id,aweme_name,marketing_scene]
#判定所有数据是否正常返回
if detail[1] == '':
detail = 'fail'
else:
detail = 'fail'
except:
detail = 'fail'
return detail
这样其实大部分的计划相关的数据就已经完成获取了,只需要列一个主函数进行合理判断返回值即可完成一整套的操作!