def get_insights_for_ad_set(self,
                                adset_id,
                                date_preset=Ad.DatePreset.lifetime,
                                limit=300):
        """
        retrieve performance insight for each adset.
        """

        params = {
            'date_preset':
            date_preset,
            'action_attribution_windows': [
                AdsInsights.ActionAttributionWindows.value_default,
                AdsInsights.ActionAttributionWindows.value_1d_click,
                AdsInsights.ActionAttributionWindows.value_7d_click
            ],
            'level':
            AdsInsights.Level.adset,
            'limit':
            limit
        }

        adset = AdSet(adset_id)
        insights = adset.get_insights([
            AdsInsights.Field.adset_name, AdsInsights.Field.adset_id,
            AdsInsights.Field.cpc, AdsInsights.Field.cpm,
            AdsInsights.Field.ctr, AdsInsights.Field.spend,
            AdsInsights.Field.clicks, AdsInsights.Field.impressions,
            AdsInsights.Field.reach, AdsInsights.Field.actions,
            AdsInsights.Field.action_values
        ], params)
        return insights
Exemplo n.º 2
0
 def readInsightsForAdset(self,
                          adset_id,
                          params=None,
                          fields=all_adsinsights_fields):
     # query all fields by default
     ad_set = AdSet(fbid=adset_id)
     return ad_set.get_insights(fields=fields, params=params)
 def get_adset_insights(self, date_preset=None):
     adset = AdSet(self.adset_id)
     params = {
         'date_preset': date_preset,
     }
     insights = adset.get_insights(params=params,
                                   fields=list(general_insights.values()) +
                                   list(target_insights.values()))
     if bool(insights):
         spend = insights[0].get(Field.spend)
         impressions = insights[0].get(Field.impressions)
         self.adset_insights.update({Field.spend: int(spend)})
         self.adset_insights.update({Field.impressions: int(impressions)})
     try:
         insights[0].get(Field.actions)
         for act in insights[0].get(Field.actions):
             if act["action_type"] in conversion_metrics:
                 self.adset_insights.update({
                     conversion_metrics[act["action_type"]]:
                     int(act["value"])
                 })
                 self.adset_insights.update({
                     'cost_per_' + conversion_metrics[act["action_type"]]:
                     float(spend) / float(act["value"])
                 })
     except:
         pass
     finally:
         return self.adset_insights
Exemplo n.º 4
0
 def fetch_adset_data(self, adset_id):
     adset = AdSet(adset_id)
     adset_datas = adset.get_insights(fields=[
         AdsInsights.Field.adset_id,
         AdsInsights.Field.spend,
         AdsInsights.Field.impressions,
         AdsInsights.Field.reach,
         AdsInsights.Field.unique_actions,
         AdsInsights.Field.adset_name],
         params={
             'breakdowns':
                 ['hourly_stats_aggregated_by_audience_time_zone'],
             'time_range': self.time_range})
     return adset_datas
Exemplo n.º 5
0
def fetch_adset_data(adset_id):
    adset = AdSet(adset_id)
    adset_datas = adset.get_insights(
        fields=[
            AdsInsights.Field.adset_id, AdsInsights.Field.spend,
            AdsInsights.Field.impressions, AdsInsights.Field.reach,
            AdsInsights.Field.unique_actions, AdsInsights.Field.adset_name
        ],
        params={
            'breakdowns': ['hourly_stats_aggregated_by_audience_time_zone'],
            'time_range': {
                'since': yesterday,
                'until': today
            }
        })
    for adset_data in adset_datas:
        print(adset_data)
        result = {}
        result['spend'] = adset_data['spend'] if 'spend' in adset_data else ''
        result['impression_count'] = adset_data['impressions'] if\
            'impressions' in adset_data else ''
        result['reach_count'] = adset_data['reach'] if\
            'reach' in adset_data else ''
        result['link_click_count'] = adset_data['link_click'] if\
            'link_click_count' in adset_data else ''
        result['ad_set_id'] = adset_data['adset_id'] if\
            'adset_id' in adset_data else ''
        result['stat_dt'] = adset_data['date_start']
        print(result['stat_dt'])
        result['stat_hour'] = \
            str(int(adset_data['hourly_stats_aggregated_by_audience_time_zone'][0:2]) + 1)
        try:
            for actions in adset_data['unique_actions']:
                if actions['action_type'] == 'link_click':
                    result['link_click_count'] = actions['value']
                if actions[
                        'action_type'] == 'offsite_conversion.fb_pixel_purchase':
                    result['effective_count'] = actions['value']
        except Exception as e:
            result['effective_count'] = ''
            result['link_click_count'] = ''
        result['create_time'] =\
            datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        yield result