提问者:小点点

mediaItems。搜索不使用albumId


当我运行以下代码时,我得到了这个错误。

{'错误':{'代码': 400,'消息':'收到的JSON有效负载无效。未知名称album_id:原始字段不重复,无法启动列表。,状态:INVALID_ARGUMENT,详细信息': [{'@类型:type.googleapis.com/google.rpc.BadRequest,字段违反:[{描述:收到无效的JSON负载。未知名称"album_id":原始字段不重复,无法启动列表.'}]}]}}

如果我删除的"相册":["相册代码"]它工作正常,并返回

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个答案

匿名用户

关于albumId和筛选器是独占的评论是正确的,因此您需要选择其中一个。但是,假设您想单独使用albumId,则需要删除albumId代码周围的方括号,下面是我的代码片段:

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']))

匿名用户

编辑:显然您不能同时使用albumId过滤器:source

过滤器对象(过滤器)

要应用于请求的筛选器。不能与bumId一起设置。

除此之外,mbmId是一个应该是字符串而不是数组:源

"albumId": "<albumid code>",