93 lines
2.5 KiB
Python
93 lines
2.5 KiB
Python
import requests
|
|
import json
|
|
from typing import Union
|
|
from get_baidu_token import GetBaiduToken
|
|
|
|
|
|
def get_baidu_campaign_request(identifier: Union[str, int], body: dict) -> dict:
|
|
"""
|
|
向百度API发送请求
|
|
:param identifier: 广告主名称或媒体账户ID
|
|
:param body: 请求体内容
|
|
:return: API响应结果
|
|
"""
|
|
# 获取header
|
|
token_getter = GetBaiduToken(identifier)
|
|
header = token_getter.get_header()
|
|
if not header:
|
|
return {"error": "Failed to get valid header"}
|
|
# 构建完整请求负载
|
|
payload = {
|
|
"header": header,
|
|
"body": body
|
|
}
|
|
# API端点
|
|
url = "https://api.baidu.com/json/feed/v1/CampaignFeedService/getCampaignFeed"
|
|
# 请求头
|
|
http_headers = {
|
|
"Accept-Encoding": "gzip, deflate",
|
|
"Content-Type": "application/json",
|
|
"Accept": "application/json"
|
|
}
|
|
try:
|
|
# 发送请求
|
|
response = requests.post(
|
|
url,
|
|
data=json.dumps(payload),
|
|
headers=http_headers
|
|
)
|
|
|
|
# 返回JSON响应
|
|
return response.json()
|
|
except Exception as e:
|
|
return {"error": f"API request failed: {str(e)}"}
|
|
|
|
|
|
# 使用示例
|
|
if __name__ == "__main__":
|
|
# 定义请求体
|
|
request_body = {
|
|
"campaignFeedFields": [ # 需要查询的字段列表
|
|
"campaignFeedId",
|
|
"campaignFeedName",
|
|
"subject",
|
|
"appinfo",
|
|
"budget",
|
|
"starttime",
|
|
"endtime",
|
|
"schedule",
|
|
"pause",
|
|
"status",
|
|
"bstype",
|
|
"addtime",
|
|
"eshopType",
|
|
"rtaStatus",
|
|
"bid",
|
|
"bidtype",
|
|
"ftypes",
|
|
"ocpc",
|
|
"bmcUserId",
|
|
"catalogId",
|
|
"projectFeedId",
|
|
"productType",
|
|
"appSubType",
|
|
"deliveryType",
|
|
"miniProgramType",
|
|
"bidMode",
|
|
"productIds",
|
|
"saleType"
|
|
],
|
|
"campaignFeedIds": [1413521619], # 广告计划ID
|
|
"campaignFeedFilter": {
|
|
"bstype": [1] # 广告类型 1-普通计划 3-商品计划 7-原生RTA
|
|
}
|
|
}
|
|
|
|
# 使用广告主名称查询
|
|
# response = make_baidu_api_request("原生-SLG-乱世-安卓12A20KA00006", request_body)
|
|
|
|
# 使用媒体账户ID查询
|
|
response = get_baidu_campaign_request("12466757256", request_body)
|
|
|
|
print(json.dumps(response, ensure_ascii=False))
|