字节跳动 巨量千川的M-API使用(三)

第三章 关于千川market API 获取在投计划数据

在完成前面第二章获取到acces_token再结合我们的广告户ID我们就能获取到相应的计划数据,先看下文档https://open.oceanengine.com/labels/12/docs/1697466345527308主要用到的是数据报表下的接口的调用。
第一步导入相应包

# coding=utf-8
import time
import http.client
import sys,os
import random
from random import sample
import requests
import json
from six import string_types
from six.moves.urllib.parse import urlencode, urlunparse  # noqa
import datetime
import re

第二步 需要获取在投计划的ad_id

#获取广告账户下所有计划,消耗的降序排列
def get_all_ad(access_token,advertiser_id):
#     print("获取所有计划中")
    import requests
    open_api_url_prefix = "https://ad.oceanengine.com/open_api/"
    uri = "v1.0/qianchuan/ad/get/"
    url = open_api_url_prefix + uri
    params = {
        "advertiser_id": advertiser_id,
        "page_size":200,
        "order_type":"DESC",
#         "page":1,
        "filtering":{
            "status":"DELIVERY_OK",
            "marketing_goal":"LIVE_PROM_GOODS"
        }
    }
    headers = {"Access-Token": access_token}
    rsp = requests.get(url,json=params,headers=headers)
#     print(rsp)
    rsp_data = rsp.json()
    rsp_data_com_json=json.dumps(rsp_data,indent=2,ensure_ascii=False)
    user_dic = json.loads(rsp_data_com_json)
    ads_id_list=user_dic['data']['list']
    ad_count=len(ads_id_list)
    i=0
    excel_ad_id_list=[]
    while i<ad_count:   
        excel_ad_id_list.append(ads_id_list[i]['ad_id'])
        i=i+1        
 
    return excel_ad_id_list

返回得到的是在投计划的list,在逐一进行查询每一条计划的数据
第三步 查询在投计划的数据
下面这个传入的参数是ad_id_list,返回的是所有在投计划的数据,需要进行拆解

#获取广告计划数据
def get_ad_report_all_video(access_token,advertiser_id,ad_id_list,fields,start_date,end_date):
    import requests
    open_api_url_prefix = "https://ad.oceanengine.com/open_api/"
    uri = "v1.0/qianchuan/report/ad/get/"
    url = open_api_url_prefix + uri
    params = {
        "advertiser_id":advertiser_id,
#         "fields":fields,
        "fields":fields,
        "page_size":100,
        "start_date":start_date,
        "end_date":end_date,
        "filtering": {
            "ad_ids":ad_id_list,
            "marketing_goal":"VIDEO_PROM_GOODS"
        }
    }
    headers = {"Access-Token": access_token}
    rsp = requests.get(url, json=params, headers=headers)
    rsp_data = rsp.json()
#     print("rsp_data",rsp_data)
    return rsp_data

第四步 将上一步的数据进行拆分并上传到服务器上,由于是个人私人服务器,所以此处我隐去上传接口,大家可以换成自己的。在拆分单条计划的时候,额外得去获取计划的类型,托管/非托管,放量/控本,直投/素材等,以便我们下一章需要进行调控计划的判断数据和参数

#通过调用查询的计划消耗数据结果,传入解析,并上传到服务器存储
def update_ad_id_server(rsp_data_com):
#     print("update_ad_id_server is going")
    get_weburl_1="你自己的服务器网址"
    insert_ad_id_tb_server="你自己的服务器的网页端口"
#     print(rsp_data_com)
    
    rsp_data_com_json=json.dumps(rsp_data_com,indent=2,ensure_ascii=False)
    user_dic = json.loads(rsp_data_com_json)
    cjson=checkJSON()
    list_cjson=cjson.getKeys(rsp_data_com)
    list_in=cjson.isExtend(rsp_data_com,'list')
    if list_in:
        ads_id_list=user_dic['data']['list']
        m=0
        while m<len(ads_id_list):
            try:
                advertiser_id=str(ads_id_list[m]["advertiser_id"])
                ad_id=str(ads_id_list[m]["ad_id"])
                stat_cost=str(ads_id_list[m]["stat_cost"])
                show_cnt=str(ads_id_list[m]["show_cnt"])
                ctr=str(ads_id_list[m]["ctr"])
                cpm_platform=str(ads_id_list[m]["cpm_platform"])
                click_cnt=str(ads_id_list[m]["click_cnt"])     
                pay_order_count=str(ads_id_list[m]["pay_order_count"])
                pay_order_amount=str(ads_id_list[m]["pay_order_amount"])
                dy_follow=str(ads_id_list[m]["dy_follow"])
                convert_cnt=str(ads_id_list[m]["convert_cnt"])
                convert_cost=str(ads_id_list[m]["convert_cost"])             
                convert_rate=str(ads_id_list[m]["convert_rate"])
                if stat_cost != "0":
                    #先获取是否放量计划
                    smart_bid_type=get_smart_bid_type(access_token,ad_id,advertiser_id)
                    #再获取转化目标
                    my_external_action=get_external_action(access_token,ad_id,advertiser_id)
    #                 print("smart_bid_type",smart_bid_type)
                    if smart_bid_type == "SMART_BID_CUSTOM":
                        #如果是控本计划
                        if my_external_action=="AD_CONVERT_TYPE_LIVE_SUCCESSORDER_PAY":
        #                 #获取控本单条计划的出价和预算
                            my_cpa_bid,my_budget=get_cpa_budget(access_token,ad_id,advertiser_id)
                            budget=str(my_budget)
                            cpa_bid=str(my_cpa_bid)
                        elif my_external_action=="AD_CONVERT_TYPE_LIVE_PAY_ROI":
                            my_roi_goal,my_budget=get_my_roi_goal_budget(access_token,ad_id,advertiser_id)
                            budget=str(my_budget)
                            cpa_bid=str(my_roi_goal)
                        else:
                            cpa_bid="0"
                            budget="0"
                            
                        #是直推还是视频
                        yn_video_material=get_yn_video_material(access_token,ad_id,advertiser_id)
#                         shipin_lable=yn_video_material
#                         print(ad_id,":",yn_video_material)
                        kongben_lable="y"
                        get_url=get_weburl_1+insert_ad_id_tb_server+"name="+app_user+"&advertiser_id="+advertiser_id+"&ad_id="+ad_id+"&cpa_bid="+cpa_bid+"&budget="+budget+"&stat_cost="+stat_cost+"&show_cnt="+show_cnt+"&ctr="+ctr+"&cpm_platform="+cpm_platform+"&click_cnt="+click_cnt+"&pay_order_count="+pay_order_count+"&pay_order_amount="+pay_order_amount+"&dy_follow="+dy_follow+"&convert_cnt="+convert_cnt+"&convert_cost="+convert_cost+"&convert_rate="+convert_rate+"&shipin_lable="+yn_video_material+"&kongben_lable="+kongben_lable

                        response = requests.get(get_url,timeout=200)
                        get_info_get=response.text 
        #                 print(get_info_get)
                        if "OK" in get_info_get:
                            print("...")
                        else:
                            print("-_-!!!")
                    else:
        #                 #获取放量单条计划的预算
                        my_budget=get_budget(access_token,ad_id,advertiser_id)
                        budget=str(my_budget)
                        cpa_bid="9999.99"
                        #是直推还是视频
                        yn_video_material=get_yn_video_material(access_token,ad_id,advertiser_id)
#                         shipin_lable=yn_video_material
                        kongben_lable="n"
                        
                        get_url=get_weburl_1+insert_ad_id_tb_server+"name="+app_user+"&advertiser_id="+advertiser_id+"&ad_id="+ad_id+"&cpa_bid="+cpa_bid+"&budget="+budget+"&stat_cost="+stat_cost+"&show_cnt="+show_cnt+"&ctr="+ctr+"&cpm_platform="+cpm_platform+"&click_cnt="+click_cnt+"&pay_order_count="+pay_order_count+"&pay_order_amount="+pay_order_amount+"&dy_follow="+dy_follow+"&convert_cnt="+convert_cnt+"&convert_cost="+convert_cost+"&convert_rate="+convert_rate+"&shipin_lable="+yn_video_material+"&kongben_lable="+kongben_lable

                        response = requests.get(get_url,timeout=200)
                        get_info_get=response.text 
        #                 print(get_info_get)
                        if "OK" in get_info_get:
                            print("...")
                        else:
                            print("-_-!!!")                    
                else:
                    print("-_-???")
            except:
                print("= =b")
            finally:
                m=m+1    
    else:
        print("没有list")  

第五步 服务器端的代码编写,主要涉及到php和mysql的,再次就不做过多的讨论,因为我也是简单部署能满足自己的使用需求,大家可以自行查询资料进行部署。
如果小伙伴没有相应的服务器可以联系我,软件程序可以免费使用,分摊下个人私人服务器的费用即可。计划数据查询网站链接参考如下:
http://www.qcapi.top/demo.php
点击搜索可以查询近200条数据,将要查询的计划ID复制查询可查看该计划近200条数据。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在完成了计划数据的获取,储存到服务器数据库后,就可以智能调控计划的逻辑了。就是网页显示每条计划实时的建议。因此第四章是重点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值