1

我正在使用Picasa 网络相册数据 API访问我的 Google 照片帐户。我的目标是下载给定开始和结束时间之间的所有照片(旧假期照片)。此 API 不支持服务器端时间过滤,因此我尝试访问最近 4000 张图像的元数据并按时间客户端过滤它们。我有一个工作概念证明,但我只能让服务器返回约 900 个图像参考(我的 Google 照片帐户很容易拥有 40k 总图像)。是否有一些我缺少的 API 方法可以让我为我的用户下载整个“提要”,以便我可以访问我所有照片的元数据?这是我尝试过的...

# Tried this first, got ~900 results
pics = gd_client.GetUserFeed(kind='photo', limit=4000).entry
# Tried using the paging parameter start-index, but even if I 
# page through until it errors out, there are only ~900 results
pics = gd_client.GetFeed('/data/feed/api/user/default?kind=photo&max-results=100&start-index=500').entry

相册的 API 可以正常工作以列出所有图像 - “自动备份”相册(从 Android 手机上的 Google 照片接收图像)有 30k 张图像,我可以查询所有图像的元数据。

不幸的是,我无法将这些图像放入一个相册并以这种方式下载它们 - 用户创建的相册仅限于 2000 张图像。(我知道这次旅行总共有大约 3000 张图片,因为我可以在 Web 界面中“选择”它们并查看总数,但你不能一次下载那么多,而且一张专辑不能超过 2k。)

4

2 回答 2

1

经过多次尝试,我想我让它完美地工作了。

我所做的是同时使用start-indexand max-results

您需要按以下方式进行操作(考虑使max-results您遇到的每个请求都保持相同的值):

  1. start-index= 1 & max-results= Any_Value_You_Want ex: 50

网址请求如下所示:

/data/feed/api/user/default?kind=photo&max-results=50&start-index=1
  1. start-index= 1 + 上一个max-results= 51 & max-results= 50

网址请求如下所示:

/data/feed/api/user/default?kind=photo&max-results=50&start-index=51
  1. start-index= 51 + 上一个max-results= 101 & max-results= 50

网址请求如下所示:

/data/feed/api/user/default?kind=photo&max-results=50&start-index=101

依此类推,每次你将start-index原始值加上max-results一个,除了维护每个 url 请求的 50 个条目外,它将完美地工作。

于 2018-07-26T09:06:12.807 回答
0

从来没有让 API 像我想要的那样工作,但我能够通过使用Google Takeout下载目标日期来“解决”这个问题

于 2017-02-02T22:41:00.357 回答