mediaItems.search не работает с альбомом - PullRequest
0 голосов
/ 29 сентября 2018

Когда я запускаю следующий код, я получаю эту ошибку.

{'error': {'code': 400, 'message': 'Получена недопустимая полезная нагрузка JSON.Неизвестное имя «album_id»: протокольное поле не повторяется, не может быть начальный список. ',' Status ':' INVALID_ARGUMENT ',' details ': [{' @type ':' type.googleapis.com/google.rpc.BadRequest ', 'fieldViolations': [{'description': 'Получена недопустимая полезная нагрузка JSON.Неизвестное имя "album_id": поле Proto не повторяется, список запуска не может. '}]}]}}

Если я удаляю "идентификатор альбома": ["код альбома"], он работает нормально ивозвращает

10 новых предметов, всего 10

def _actually_list_media_items(session):
    ret = []
    params = {
        'fields': 'mediaItems(id,baseUrl,filename,mimeType,productUrl),nextPageToken',
    }
    search_json = {
        "pageSize": 10,
        "albumId": ["<albumid code>"],
        "filters": {
            "includeArchivedMedia": False,
            "contentFilter": {
                "excludedContentCategories": [
                    "DOCUMENTS",
                    "RECEIPTS",
                    "SCREENSHOTS",
                    "UTILITY",
                    "WHITEBOARDS",
                ]
            },
            "mediaTypeFilter": {
                "mediaTypes": [
                    "PHOTO",
                ],
            },
        },
    }

    tmp = 0    
    while tmp < 1:
        rsp = session.post(
            'https://photoslibrary.googleapis.com/v1/mediaItems:search',
            params=params,
            json=search_json,
        ).json()
        if 'error' in rsp:
            print(rsp)

        cur = [m for m in rsp.get('mediaItems', [])]
        ret += cur
        print(f'{len(cur)} new items, total {len(ret)}')

        pageToken = rsp.get('nextPageToken')
        if pageToken is None:
            break
        params['pageToken'] = pageToken
        tmp = tmp + 1
    return ret

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Комментарий об альбомном идентификаторе и фильтрах является правильным, поэтому вам нужно выбрать один или другой.Однако, если вы хотите использовать идентификатор альбома самостоятельно, вам нужно убрать квадратные скобки вокруг кода вашего альбома, вот клип из моего кода:

searchbody = {
    "albumId": album_id,
    "pageSize": 10
}
print(searchbody)

mediaresults = gAPIservice.mediaItems().search(body=searchbody).execute()
mediaitems = mediaresults.get('mediaItems', [])
for item in mediaitems:
    print(u'{0} ({1})'.format(item['filename'], item['id']))
0 голосов
/ 29 октября 2018

Редактировать: Очевидно, вы не можете использовать albumId и filters вместе: источник

filters: object(Filters)

Фильтры для применения к запросу.Не может быть установлен вместе с albumId.


Кроме того, albumId должен быть string, а не массивом: source

"albumId": "<albumid code>",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...