Google Photos API mediaItems仅返回25条,如何获取下一分页数据?
Google Photos API mediaItems接口分页拉取完整数据方法
Google Photos Library API的mediaItems.list接口默认单页返回最多25条资源,所有批量类接口都采用分页机制避免单次响应数据量过大,这是只能拉取到25条数据的原因。
核心分页参数说明
pageSize:可选参数,用于指定单页返回的最大条目数,最高支持设置为100,调整该参数可减少总请求次数pageToken:可选参数,填写上一次接口返回的nextPageToken值即可获取对应下一页的结果,当无后续数据时,接口返回的nextPageToken字段为空
完整拉取所有照片的代码示例
import googleapiclient.discovery # 初始化服务(保持原有初始化逻辑不变即可) gphoto_service = googleapiclient.discovery.build( 'photoslibrary', 'v1', credentials=creds, static_discovery=False ) all_photos = [] page_token = None while True: # 构造请求参数,指定单页最大100条,存在分页token时携带该参数 request_params = { "pageSize": 100 } if page_token: request_params["pageToken"] = page_token # 执行接口请求 response = gphoto_service.mediaItems().list(**request_params).execute() # 追加当前页的照片数据到总列表 if "mediaItems" in response: all_photos.extend(response["mediaItems"]) # 检查是否还有下一页,没有则终止循环 page_token = response.get("nextPageToken") if not page_token: break # 输出总照片数验证结果 print(len(all_photos))
注意事项
- 该接口有调用频率限制,短时间大量请求可能触发限流,若遇到报错可适当添加请求间隔
- 若只需要拉取特定相册的内容,可额外添加
albumId参数到请求参数中,对应目标相册的ID即可
内容的提问来源于stack exchange,提问作者chencyu
相关产品推荐
相关产品推荐

