如何使用Google相册API获取所有用户照片?

时间:2016-09-03 16:31:50

标签: api gdata google-data-api google-photos

我使用Picasa Web Albums Data API访问我的Google相册帐户。我的目标是在给定的开始和结束时间之间下载所有照片(旧假期照片)。此API不支持服务器端时间过滤,因此我尝试访问最近4000个图像的元数据,并在客户端按时间过滤它们。我有一个工作的概念证明,但我只能让服务器返回~900个图像参考(我的Google照片帐户很容易有40k的总图像)。是否有一些我遗漏的API方法让我下载整个" feed"对于我的用户,我可以访问我所有照片上的元数据?这是我尝试过的......

# 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可以正常工作以列出所有图片 - “自动备份”#39;专辑(从Android手机上的Google照片接收图像)有30k图像,我可以查询它们的元数据。

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

2 个答案:

答案 0 :(得分:1)

经过多次尝试,我认为它可以完美工作。

我所做的是同时玩start-indexmax-results

您需要按以下步骤进行操作(考虑使每次击中的请求的max-results值保持不变):

  1. start-index = 1和max-results = Any_Value_You_Want 例如: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个条目外,它都会很好地工作。

答案 1 :(得分:0)

永远不会让我的API工作,因为我想要,但我能够解决"这可以通过使用Google Takeout

下载目标日期来实现