Facebook API - 获取广告和广告素材图片

时间:2018-05-03 15:44:06

标签: python facebook facebook-graph-api facebook-marketing-api

所以我试图从Facebook API获取广告及其各自的图像。到目前为止,我设法获得广告,现在我试图获得该广告的广告素材,但我每次尝试都失败了。

FacebookAdsApi.init(access_token=access_token)

fields = [
    'ad_id',
    'ad_name',
    'impressions',
    'clicks',
    'spend',
    'campaign_name',
    'reach',
    'relevance_score'
]
params = {
    'time_range': {'since': date,'until': date},
    'filtering': [],
    'level': 'ad',
    'breakdowns': [],
}
data = AdAccount(ad_account_id).get_insights(
    fields=fields,
    params=params,
)

creativeFields = [
    'image_url',
    'link_url',
    'preview_url',
    'template_url'
]

vecData = []
for n in data:
    ad = Ad(str(n._data[str('ad_id')]))
    creatives = ad.get_ad_creatives(fields=creativeFields)
    print(creatives)

有关如何获取特定广告的广告素材的图片网址的任何想法?

2 个答案:

答案 0 :(得分:0)

我的解决方案不是最好的,但它有效!

creativeFields = [
    'thumbnail_url',
]


vecData = []
for n in data:
    ad = Ad(str(n._data[str('ad_id')]))
    creatives = ad.get_ad_creatives(fields=creativeFields)
    parsed = urlparse.urlparse(creatives[0][AdCreative.Field.thumbnail_url])
    img = urlparse.parse_qs(parsed.query)['url'][0].replace('u\'','').replace('\'','')

基本上我发现我能够检索缩略图的网址,这个网址有参数' url'原始图片所以我从那里拿走了它。

希望它有所帮助!

答案 1 :(得分:0)

要检索图像的网址,首先必须从广告素材对象故事规范中获取图片哈希。

请求广告素材时请求对象故事规范:

creativeFields = [
'image_url',
'link_url',
'preview_url',
'template_url',
'object_story_spec'
]

从对象故事规范中提取所需的image_hash。以下示例适用于包含一张图片的广告。

imageHash = creatives[0]['object_story_spec']['link_data']

然后从广告帐户请求永久网址获取图片哈希。

fields = ['id','permalink_url','name']
params = {'hashes':[imageHash]}
imageHashes = AdAccount(ad_account_id).getAdImages(
fields=fields,
params=params,
)
print(imageHashes)

我无法测试上面的代码,但它应该能为您提供图像。