Итак, я пытаюсь получить рекламу и соответствующие изображения из API Facebook. Пока мне удается получить рекламу, и теперь я пытаюсь создать креатив для этой рекламы, но у меня не получается с каждой попыткой.
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)
Есть идеи, как я могу получить URL-адрес изображения для объявления для конкретного объявления?






Мое решение не самое лучшее, но работает!
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-адрес для миниатюрного изображения, и этот URL-адрес имел в качестве параметра url исходное изображение, поэтому я взял его оттуда.
Надеюсь, поможет!
Чтобы получить URL-адрес изображения, сначала необходимо получить хэш изображения из спецификации объекта Ad Creative.
Запросите спецификацию истории объекта при запросе рекламного объявления:
creativeFields = [
'image_url',
'link_url',
'preview_url',
'template_url',
'object_story_spec'
]
Извлеките желаемый image_hash из спецификации истории объекта. Пример ниже будет работать для объявления с одним изображением.
imageHash = creatives[0]['object_story_spec']['link_data']
Затем запросите постоянный URL-адрес для хэша изображения из рекламного аккаунта.
fields = ['id','permalink_url','name']
params = {'hashes':[imageHash]}
imageHashes = AdAccount(ad_account_id).getAdImages(
fields=fields,
params=params,
)
print(imageHashes)
Я не могу протестировать приведенный выше код, но он должен дать вам изображение.