Ошибка разбивки на страницы в LinkedIn API Marketing Platform для разработчиков AdAnalyticsV2 - PullRequest
2 голосов
/ 13 июня 2019

Я пытался получить данные Ad Analytics со ссылкой на эту страницу

Похоже, что выходные данные API разделены на части с помощью нумерации страниц. Итак, я следовал документу , объясняющему, как выполнять разбиение на страницы в LinkedIn API. Однако я продолжаю испытывать «Установка начального значения пейджинга недопустима» ошибка. Этого не происходит, когда я запрашиваю первую страницу, но каждый раз, когда я запрашиваю «следующую страницу», возникает ошибка.

Вот что я сделал в Python:

import requests
# Define token, base_url, and parameters
headers = {'Authorization':'Bearer ' + 'MY_TOKEN'}
base_url = 'https://api.linkedin.com/v2/adAnalyticsV2/'
params = {
    'q': 'analytics',
    'dateRange.start.month': '4',
    'dateRange.start.day': '1',
    'dateRange.start.year': '2019',
    'timeGranularity': 'DAILY',
    'pivot': 'CREATIVE',
    'accounts':'MY_ACCOUNT',
    'campaignGroups': 'MY_CAMPAIGN_GROUP',
    'count':100,
}

# Get analytics data by paginating
url_stack = [base_url]
while url_stack:

    # Pop the url in the list, now the list is empty
    wurl = url_stack.pop()

    # Make request to API
    r = requests.get(wurl, params=params, headers=headers)

    if r.ok:
        print('Request success')
        print('URL of successful request:\n- {}\n'.format(r.url))
    else:
        print('Request fail')
        print('URL of failed request:\n- {}'.format(r.url))
        print('Request detail:\n- {}\n'.format(r.json()))

    # If paging information exists in the response,
    if 'paging' in r.json().keys():

        # Use the inforamtion for the next page by updating 'params' dict
        params['start'] = r.json()['paging']['start'] + r.json()['paging']['count']
        params['count'] = r.json()['paging']['count']

        # Append updated URL with next paging info
        url_stack.append(wurl)

А вот вывод из кода выше:

# Output:
Request success
URL of successful request:
- https://api.linkedin.com/v2/adAnalyticsV2/?q=analytics&dateRange.start.month=4&dateRange.start.day=1&dateRange.start.year=2019&timeGranularity=DAILY&pivot=CREATIVE&accounts=MY_ACCOUNT&campaignGroups=MY_CAMPAIGN_GROUP&count=100

Request fail
URL of failed request:
- https://api.linkedin.com/v2/adAnalyticsV2/?q=analytics&dateRange.start.month=4&dateRange.start.day=1&dateRange.start.year=2019&timeGranularity=DAILY&pivot=CREATIVE&accounts=MY_ACCOUNT&campaignGroups=MY_CAMPAIGN_GROUP&count=100&start=100
Request detail:
- {'serviceErrorCode': 2, 'message': 'Setting a paging start value is not permitted', 'status': 400}

Насколько я понимаю, и как уже упоминалось в документе - Чтобы разбить на страницы результаты, начните с начального значения 0 и значения счетчика N. Чтобы получить следующую страницу, установите начальное значение N в то время как значение счетчика остается неизменным. Последующие страницы начинаются с 2N, 3N, 4N и т. Д. , я должен установить начальное значение при передаче запроса для n-й страницы, но почему-то это не сработало, как я задумал!

Кто-нибудь имеет подобный опыт, и кто-нибудь может поделиться, как решить эту проблему? Или, пожалуйста, не стесняйтесь указывать мне, что я делаю неправильно в коде.

Спасибо!

...