Example #1
0
    def create_tiered_lookalikes(self, account_id, name, seed_id, tiers,
                                 country):
        """
        Take a seed custom audiences ID and create tiered lookalike audiences
        """
        tiered_audiences = []
        for tier in range(1, tiers + 1):
            lookalike = CustomAudience(parent_id=account_id)
            lookalike[CustomAudience.Field.name] = \
                '{0} LAL {1}'.format(name, tier)
            lookalike[CustomAudience.Field.origin_audience_id] = seed_id

            lal_spec = {
                LookalikeSpec.Field.ratio: tier / 100.0,
                LookalikeSpec.Field.country: country,
            }
            if (tier > 1):
                lal_spec[
                    # LookalikeSpec.Field.LookalikeSpec.starting_ratio
                    'starting_ratio'] = (tier - 1) / 100.0

            lookalike[CustomAudience.Field.lookalike_spec] = lal_spec
            lookalike[CustomAudience.Field.subtype] = \
                CustomAudience.Subtype.lookalike
            lookalike.remote_create()

            tiered_audiences.append(lookalike)

        return tiered_audiences
def create_custom_audience(name):
    try:
        FacebookAdsApi.init(my_app_id, my_app_secret, my_access_token)
        my_account = AdAccount(f'act_{ad_account}')
        audience = CustomAudience(parent_id=my_account.get_id_assured())
        audience.update({
            CustomAudience.Field.name: name,
            CustomAudience.Field.subtype: CustomAudience.Subtype.custom,
            CustomAudience.Field.customer_file_source: CustomAudience.CustomerFileSource.both_user_and_partner_provided
        })
        audience.remote_create()
        audience = CustomAudience(audience[CustomAudience.Field.id])
        return audience['id']
    except Exception as e:
        print(type(e))
 def create_audience(self, accountid, name, description, optoutlink):
     """
       Creates a new custom audience and returns the id.
     """
     audience = CustomAudience(parent_id=accountid)
     audience.update({
         CustomAudience.Field.name:
         name,
         CustomAudience.Field.description:
         description,
         CustomAudience.Field.opt_out_link:
         optoutlink,
         CustomAudience.Field.subtype:
         CustomAudience.Subtype.custom,
     })
     audience.remote_create()
     caid = audience[CustomAudience.Field.id]
     return caid
Example #4
0
 def create_audience(
     self,
     accountid,
     app_id,
     name,
     retention_days,
     event,
     period,
     greater_than=None,
     less_than=None,
 ):
     """
     Creates a new custom audience and returns the id. The custom audience
     is created based on the cumulative values of the events (add to cart
     or purchase) during the selected period, provided that app is logging
     the selected app event and passing the right value with them.
     """
     audience = CustomAudience(parent_id=accountid)
     technique = {
         'technique_name': 'absolute',
     }
     if greater_than is not None:
         technique['lower_bound'] = greater_than
     if less_than is not None:
         technique['upper_bound'] = less_than
     rule = {
         '_application': app_id,
         '_eventName': event,
         '_cumulativeRule': {
             'metric': 'amount',
             'period': period,
             'technique': technique,
         },
     }
     audience.update({
         CustomAudience.Field.name: name,
         CustomAudience.Field.subtype: CustomAudience.Subtype.app,
         CustomAudience.Field.retention_days: retention_days,
         CustomAudience.Field.rule: json.dumps(rule),
     })
     audience.remote_create()
     caid = audience[CustomAudience.Field.id]
     return caid
Example #5
0
def CreateAudience():
    access_token = dict1['my_access_token']
    app_secret = dict1['my_app_secret']
    app_id = dict1['my_app_id']
    id = dict1['account_id']
    FacebookAdsApi.init(access_token=access_token)
    custAud = CustomAudience(parent_id=dict1['account_id'])
    custAud[CustomAudience.Field.name]= 'My audience'
    custAud[CustomAudience.Field.description]="My audience description"
    custAud[Targeting.Field.age_max]=30
    custAud[Targeting.Field.age_min]=20
    custAud[Targeting.Field.countries]=['US']
    custAud[Targeting.Field.connections] = ''
    custAud[CustomAudience.Field.customer_file_source]='USER_PROVIDED_ONLY'
    custAud[CustomAudience.Field.subtype] = 'CUSTOM'
    custAud.remote_create(params={'customer_file_source':0,'subtype':0})
    print(custAud)

# CreateAudience()
    def create_lals(
        self,
        account_id,
        seed_id,
        base_name,
        countries,
        ratios,
    ):
        """
        Function that creates the lookalike audiences
        Params:
        * `account_id` is your Facebook AdAccount id
        * `seed_id` is the source custom audience
        * `base_name` the lookalike audiences will have names in the format of
          `[base_name] [COUNTRY_CODE] [RATIO]`
        * `countries` array of country codes
        * `ratios` array of integers stating the lookalike ratio, from 1 to 10
           currency is USD, dailybudget=1000 says your budget is 1000 USD
        """
        lal_created = []

        for country, ratio in itertools.product(countries, ratios):
            # Create the lookalike audience
            lookalike = CustomAudience(parent_id=account_id)
            lookalike[CustomAudience.Field.name] = "{0} {1} {2}".format(
                base_name,
                country,
                ratio,
            )
            lookalike[CustomAudience.Field.origin_audience_id] = seed_id
            lookalike[CustomAudience.Field.lookalike_spec] = {
                LookalikeSpec.Field.ratio: ratio / 100.0,
                LookalikeSpec.Field.country: country,
            }
            lookalike[CustomAudience.Field.subtype] = \
                CustomAudience.Subtype.lookalike
            lookalike.remote_create()
            lal_created.append(lookalike)
        return lal_created
Example #7
0
print('Lets get started')
print('Source Directory: ' + sourcedir)
print('Archive Directory: ' + movedir)
for index, filenamez in enumerate(filelist):
    #if os.path.splitext(filename)[-1].lower() == '.csv':
    #3 - create a blank custom audience
    filename = str(filenamez)
    print('filename is ' + filename)
    audience = CustomAudience(parent_id=my_account)
    audience[CustomAudience.Field.subtype] = CustomAudience.Subtype.custom
    audience[CustomAudience.Field.name] = filename[:-4]
    audience[CustomAudience.Field.description] = filename[:-4]
    audience[CustomAudience.Field.customer_file_source] = 'USER_PROVIDED_ONLY'

    #the below command actually creates the custom audience
    audience.remote_create()
    #remote_create is being depricated soon. Will need to migrate to
    #AdAccount(api=self._api, fbid=parent_id).create_custom_audience(fields, params, batch, success, failure, pending)
    #not sure how to use this yet.

    caid = audience[CustomAudience.Field.id]
    print('my new custom audience id is: ' + caid)

    #4 - add records to the blank custom audience.
    # you can define your own schema based on what data you have.
    # will push with a ext id and will use multi key matching.
    #update - Facebook confirmed "is_raw = True" will automatically hash data.
    schema = [
        CustomAudience.Schema.MultiKeySchema.
        extern_id,  #send your external id here
        CustomAudience.Schema.MultiKeySchema.fn,