# _DOC close [ADACCOUNT_GET_CONNECTION_OBJECTS]

# _DOC open [ADACCOUNT_GET_ADCREATIVES]
# _DOC vars [ad_account_id:s]
from facebookads.objects import AdAccount, AdCreative

ad_account = AdAccount(fbid=ad_account_id)
ad_account.get_ad_creatives(fields=[AdCreative.Field.object_story_id])
# _DOC close [ADACCOUNT_GET_ADCREATIVES]

# _DOC open [ADACCOUNT_GET_ADGROUPS]
# _DOC vars [ad_account_id:s]
from facebookads.objects import AdAccount, AdGroup

ad_account = AdAccount(ad_account_id)
ad_groups = ad_account.get_ad_groups(fields=[AdGroup.Field.name])
for ad_group in ad_groups:
    print(ad_group[AdGroup.Field.name])
# _DOC close [ADACCOUNT_GET_ADGROUPS]

# _DOC open [ADACCOUNT_GET_ADGROUPS_WITH_STATUS]
# _DOC vars [ad_account_id:s]
from facebookads.objects import AdAccount

account = AdAccount(ad_account_id)
params = {
    'adgroup_status': [
        'ACTIVE', 'PAUSED', 'CAMPAIGN_PAUSED', 'CAMPAIGN_GROUP_PAUSED',
        'PENDING_REVIEW', 'DISAPPROVED', 'PREAPPROVED', 'PENDING_BILLING_INFO',
        'ARCHIVED'
    ]
# _DOC open [ADACCOUNT_GET_ADCREATIVES]
# _DOC vars [ad_account_id:s]
from facebookads.objects import AdAccount, AdCreative

ad_account = AdAccount(fbid=ad_account_id)
ad_account.get_ad_creatives(fields=[AdCreative.Field.object_story_id])
# _DOC close [ADACCOUNT_GET_ADCREATIVES]


# _DOC open [ADACCOUNT_GET_ADGROUPS]
# _DOC vars [ad_account_id:s]
from facebookads.objects import AdAccount, AdGroup

ad_account = AdAccount(ad_account_id)
ad_groups = ad_account.get_ad_groups(fields=[AdGroup.Field.name])
for ad_group in ad_groups:
    print(ad_group[AdGroup.Field.name])
# _DOC close [ADACCOUNT_GET_ADGROUPS]


# _DOC open [ADACCOUNT_GET_ADGROUPS_WITH_STATUS]
# _DOC vars [ad_account_id:s]
from facebookads.objects import AdAccount

account = AdAccount(ad_account_id)
params = {
    'adgroup_status': ['ACTIVE', 'PAUSED', 'CAMPAIGN_PAUSED',
                       'CAMPAIGN_GROUP_PAUSED', 'PENDING_REVIEW', 'DISAPPROVED',
                       'PREAPPROVED', 'PENDING_BILLING_INFO', 'ARCHIVED']
}
# get iterator
insights = account.get_insights(params=params, fields=fields)  # class 'facebookads.objects.EdgeIterator'
# into list
insights_list = list(insights)
# into DataFrame
insights_df = pd.DataFrame(insights_list)
# save as csv
insights_df.to_csv(until + "insights.csv", index=False, encoding="utf-8")


##2. creatives dataframe (key: creative_id)
c_fields = ["creative", "adgroup_id", "campaign_name"]

c_params = {"time_range": {"since": since, "until": until}, "time_increment": 1}

creatives = account.get_ad_groups(fields=c_fields, params=c_params)
# into list
creatives_list = list(creatives)
# into DataFrame
from pandas.io.json import json_normalize

creatives_df = json_normalize(creatives_list)
# rename
creatives_df.rename(columns={"creative.id": "creative_id", "id": "adgroup_id"}, inplace=True)
# save as csv
creatives_df.to_csv(until + "creatives.csv", index=False, encoding="utf-8")

# 3. links dataframe (key: creative_id)
l_fields = ["object_story_spec"]
# links = account.get_ad_creatives(params = c_params, fields=l_fields)