Пример #1
0
def campaigns_with_insights(start, end):
    response = []
    try:
        my_session = FacebookSession(my_app_id, my_app_secret, my_access_token)
        my_api = FacebookAdsApi(my_session)
        FacebookAdsApi.set_default_api(my_api)
        me = objects.AdUser(fbid='me')
        my_accounts = list(me.get_ad_accounts())
        my_account = my_accounts[0]
        fields = [
            AdsInsights.Field.clicks, AdsInsights.Field.spend,
            AdsInsights.Field.impressions, AdsInsights.Field.unique_clicks,
            AdsInsights.Field.cost_per_unique_click,
            AdsInsights.Field.cost_per_inline_link_click
        ]

        params = {
            'time_range': {
                'since': start,
                'until': end
            },
            'effective_status': ["ACTIVE"]
        }
        campaigns = my_account.get_campaigns(
            params=params, fields=[Campaign.Field.name, Campaign.Field.status])
        headers = [
            "Name",
            'Cost',
            "Impressions",
            "Clicks",
            "Unique Clicks",
            "Cost per unique click",
        ]
        for i in campaigns:
            try:
                campaign = Campaign(i['id'])
                campaign_data = campaign.get_insights(params=params,
                                                      fields=fields)
                campaign_dict = {
                    'id':
                    i['id'],
                    'name':
                    i['name'],
                    'Cost':
                    campaign_data[0]['spend'],
                    "Clicks":
                    campaign_data[0]['clicks'],
                    "Unique_Clicks":
                    campaign_data[0]['unique_clicks'],
                    "Cost_per_unique_click":
                    campaign_data[0]['cost_per_unique_click'],
                    "Impressions":
                    campaign_data[0]['impressions']
                }
                response.append(campaign_dict)
            except:
                pass
    except:
        pass
    return {'headers': headers, 'rows': response}
Пример #2
0
def facebook_get_service(config):
    '''
    Connects to Facebook Ads platform
    '''
    session = FacebookSession(config['app_id'], config['app_secret'],
                              config['access_token'])
    api = FacebookAdsApi(session)
    FacebookAdsApi.set_default_api(api)
    FacebookAdsApi.init(config['app_id'], config['app_secret'],
                        config['access_token'])
Пример #3
0
def insights(start, end):
    response = {}
    try:
        my_session = FacebookSession(my_app_id, my_app_secret, my_access_token)
        my_api = FacebookAdsApi(my_session)
        FacebookAdsApi.set_default_api(my_api)
        me = objects.AdUser(fbid='me')
        my_accounts = list(me.get_ad_accounts())
        my_account = my_accounts[0]
        fields = [
            AdsInsights.Field.clicks, AdsInsights.Field.spend,
            AdsInsights.Field.impressions, AdsInsights.Field.unique_clicks,
            AdsInsights.Field.cost_per_unique_click,
            AdsInsights.Field.cost_per_inline_link_click
        ]

        params = {
            'time_range': {
                'since': start,
                'until': end
            },
        }
        temp = my_account.get_insights(params=params, fields=fields)

        try:
            cost_per_click = float(temp[0]['spend']) / float(temp[0]['clicks'])
        except:
            cost_per_click = 0

        response = [{
            'field': 'Impressions',
            'value': temp[0]['impressions']
        }, {
            'field': 'Cost',
            'value': temp[0]['spend']
        }, {
            'field': 'Clicks',
            'value': temp[0]['clicks']
        }, {
            'field': 'Unique Clicks',
            'value': temp[0]['unique_clicks']
        }, {
            'field': 'Cost per unique click',
            'value': temp[0]['cost_per_unique_click']
        }, {
            'field': 'Cost per Click',
            'value': cost_per_click
        }]
    except:
        pass

    return response
Пример #4
0
    def setUp(self):
        fbads_session = FacebookSession(
            settings.SAMPLE_TEST['APP_ID'],
            settings.SAMPLE_TEST['APP_SECRET'],
            settings.SAMPLE_TEST['TOKEN'],
        )
        fbads_api = FacebookAdsApi(fbads_session)
        FacebookAdsApi.set_default_api(fbads_api)
        self.account_id = settings.SAMPLE_TEST['ACCOUNT_ID']
        self.page_id = settings.SAMPLE_TEST['PAGE_ID']
        self.form_id = '436706799859690'  # For Lead Ads
        image_files = [
            "adimage0.png", "adimage1.jpg", "adimage2.jpg", "adimage3.jpg"
        ]

        self.images = map(
            lambda image_path: os.path.abspath(
                os.path.join(os.path.dirname(__file__), image_path)),
            image_files)
        self.app_info = {
            "app_name": "DiDiAds",
            "appstore_link":
            "https://play.google.com/store/apps/details?id=com.facebook.se.apac.example.liyuhk.didiadsa",
            "app_deep_link": "example://detail/1234",
            "fbapplication_id": "743337925789686",
            "fbpage_id": "1426815194312958",
            "fboffsitepixel_id": "null"
        }
        self.basic_targeting = {
            "geo_locations": {
                "countries": ["US"]
            },
        }

        self.mobile_targeting = {
            "geo_locations": {
                "countries": ["US"]
            },
            "user_os": ["Android"],
            "device_platforms": ["mobile"],
            "publisher_platforms": ["facebook"],
            "facebook_positions": ["feed"],
        }
        # Base custom audience id that can be used for creating LALs etc.
        self.ca_id = "6034234313285"
def mine_suggestions(suggestion_data, max_suggestions=2000):
    """
    Mine suggestions for all interests provided, add suggestions
    to queue, keep mining until we hit the max.
    
    :param suggestion_data: list of suggested interest names
    :param max_suggestions: max number of suggestions to mine
    :return:: new_suggestion_data: Name, ID info for all new suggestions.
    """
    access_token, user_id, app_id, app_secret = load_facebook_auth()
    session = FacebookSession(app_id, app_secret, access_token)
    api = FacebookAdsApi(session)
    new_suggestion_data = pd.DataFrame()
    suggestion_queue = []
    suggestion_queue += suggestion_data
    suggestions_per_query = 1
    relevant_cols = ['id', 'name', 'topic', 'path', 'audience']
    while(new_suggestion_data.shape[0] < max_suggestions and 
          len(suggestion_queue) > 0):
        s = suggestion_queue[:suggestions_per_query]
        print('total data=%d; processing suggestions %s'%
              (new_suggestion_data.shape[0], ','.join(s)))
        suggestion_queue = suggestion_queue[suggestions_per_query:]
        params = {
                'type' : 'adinterestsuggestion',
                'interest_list' : s,
                }
        s_results = TargetingSearch.search(params=params, api=api)
        s_df = pd.DataFrame(s_results)
        s_df = s_df.loc[:, set(relevant_cols) & set(s_df.columns)]
        # temp: restrict to top-k results to stay on-topic
        s_df = s_df.iloc[:25, :]
        # remove duplicates
        if(s_df.shape[0] > 0):
            if(new_suggestion_data.shape[0] > 0):
                s_df = s_df[~s_df.loc[:, 'id'].isin(new_suggestion_data.loc[:, 'id'])]
            new_suggestion_data = new_suggestion_data.append(s_df)
            # add new names to suggestion data
            suggestion_queue += s_df.loc[:, 'name'].values.tolist()
    return new_suggestion_data
Пример #6
0
def get_session_user(request):
    user = None
    # check the userid and access token in the session
    # if exists get the user and install on the request
    # if not exists, redirect to login page with next
    fb_userid = request.session.get('fbuserid', None)
    token = request.session.get('token', None)
    if (fb_userid is not None and token is not None):
        logger.debug("Found fb_userid in session. Getting User object")
        user = FBAuthBackend().get_user(fb_userid)
        if user is not None:
            logger.debug("Got the User object")
            # TODO we should move these lines to the sample code
            # to make samples more self-contained
            fbads_session = FacebookSession(
                settings.FACEBOOK_APP_ID,
                settings.FACEBOOK_APP_SECRET,
                token)
            fbads_api = FacebookAdsApi(fbads_session)

            # Set the user agent for the API requests from default
            # "fb-python-ads-api-sdk-%s" % SDK_VERSION, to
            # "fb-python-ads-muse-%s" % SDK_VERSION,
            fbads_api.HTTP_DEFAULT_HEADERS['User-Agent'] = \
                "fb-python-ads-muse-" + fbads_api.SDK_VERSION

            FacebookAdsApi.set_default_api(fbads_api)
            request.fbads_api = fbads_api
            logger.debug("Added fbads_api to request")
        else:
            logger.info("The fb_userid in session did not map to a valid user.")
            clear_session_user(request)
    else:
        logger.debug("fb_userid and/or token not found in session")
        FacebookAdsApi.set_default_api(None)

    return user
Пример #7
0
sys.path.insert(1, sdk_path)

config_filename = os.path.join(sdk_path, '.credentials/facebook.json')

config_file = open(config_filename)
config = json.load(config_file)
config_file.close()

# Setup session and api objects
session = FacebookSession(
    config['app_id'],
    config['app_secret'],
    config['access_token'],
)

FacebookAdsApi.set_default_api(FacebookAdsApi(session))

if __name__ == '__main__':
    business = Business('1628260363868706')
    ad_accounts = list(business.get_owned_ad_accounts())
    print ad_accounts

    # # create video object
    # video = AdVideo(parent_id=config['act_id'])

    # video_path = os.path.join(
    #     os.path.dirname(__file__),
    #     'test.mov'
    #     #'sample.mp4'
    # )
    #
Пример #8
0
	def __init__(self):
		session = FacebookSession(fb_app_id, fb_app_secret, fb_extended_token)
		api = FacebookAdsApi(session)
		FacebookAdsApi.set_default_api(api)
		self.me = User(fbid='me')
		self.getAccounts()
Пример #9
0
from facebookads.session import FacebookSession
from facebookads.api import FacebookAdsApi
from facebookads import objects
from facebookads.objects import AdUser, AdCampaign
import os

my_app_id = os.environ.get('FB_APP_ID')
my_app_secret = os.environ.get('FB_SECRET_KEY')
my_access_token = os.environ.get('FB_ACCESS_TOKEN')
my_session = FacebookSession(my_app_id, my_app_secret, my_access_token)
my_api = FacebookAdsApi(my_session)
FacebookAdsApi.set_default_api(my_api)

me = objects.AdUser(fbid='me')
my_accounts = list(me.get_ad_accounts())

my_account = my_accounts[1]

print(">>> Campaign Stats")
for campaign in my_account.get_ad_campaigns(fields=[AdCampaign.Field.name]):
    for stat in campaign.get_stats(fields=[
            'impressions',
            'clicks',
            'spent',
            'unique_clicks',
            'actions',
    ]):
        print(campaign[campaign.Field.name])
    for statfield in stat:
        print("\t%s:\t\t%s" % (statfield, stat[statfield]))
Пример #10
0
print("Begin process...")
with open("Fim.txt", "a") as text_file:
    print("Inicio at: {}".format(datetime.datetime.now().time()),
          file=text_file)
respiro = 0
cred = Credenciais()
#inicializacao
### Setup session and api objects
session = FacebookSession(
    cred.MY_APP_ID,
    cred.MY_APP_SECRET,
    cred.MY_APP_ACCESS_TOKEN,
)
#session.timeout = 1000000
api = FacebookAdsApi(session)
FacebookAdsApi.set_default_api(api)

listaConfig = FbConfiguracoes().ListarTodos(pActived=True)
FBInsights().LimparPeriodo()


def ReportDiario(campaign, config):
    """
    Salva os Insights de um dia(dia atual)
    """
    global respiro

    ontem = datetime.datetime.now().date() - datetime.timedelta(days=1)
    menos3 = datetime.datetime.now().date() - datetime.timedelta(days=3)
Пример #11
0
this_dir = os.path.dirname('custom.py')
config_filename = os.path.join(this_dir, 'config.json')

config_file = open(config_filename)
config = json.load(config_file)

DAVE = 0
ABACUS = 4

my_app_id = config['app_id']
my_app_secret = config['app_secret']
my_access_token_1 = config['access_token']

session1 = FacebookSession(my_app_id, my_app_secret, my_access_token_1)

api1 = FacebookAdsApi(session1)

FacebookAdsApi.set_default_api(api1)
me = User(fbid='me', api=api1)
my_accounts = list(me.get_ad_accounts())
print(my_accounts)
my_account = my_accounts[ABACUS]

my_account_id = my_account.get_id_assured()
print(my_account_id)

account = AdAccount(my_account_id)
custom_audiences = account.get_custom_audiences(fields=[
    CustomAudience.Field.name, CustomAudience.Field.id,
    CustomAudience.Field.approximate_count
])