picasa api - 如何通过相册ID获取特定相册?

0 投票
2 回答
517 浏览
提问于 2025-04-17 10:45

我该如何从Picasa的API中获取特定的相册呢?

目前我是在这样做:

def album(gd_client, album_id, user):
    all_albums = albums(gd_client,user)
    for album in all_albums:
        if album.service_id == album_id:
            return album

这意味着我先获取所有的相册,然后再筛选出我需要的那个。

但是应该有更简单、更有效的方法。

谢谢!

2 个回答

0

看起来你想要的是“入口”API。下面是我如何获取一个公开相册的AlbumEntry(不想处理认证问题):

base = "https://picasaweb.google.com";
user = "101405741057659770470" # myself
albumid = "6333524051829767505"
# must be inside of a function to use locals()
url = "%(base)s/data/entry/api/user/%(user)s/albumid/%(albumid)s" % locals()

gd_client = gdata.photos.service.PhotosService()

entry = gd_client.GetEntry(url)
assert isinstance(entry, gdata.photos.AlbumEntry)

在Java中类似的写法是:

String baseURL = "https://picasaweb.google.com";
String userId = "101405741057659770470" // myself
String albumid = "6333524051829767505"
String albumUrl = String.format(
    "%s/data/entry/api/user/%s/albumid/%s", baseURL, userId, albumId);
// myService is defined here: https://developers.google.com/picasa-web/docs/2.0/developers_guide_java
AlbumEntry entry = myService.getEntry(new URL(albumUrl), AlbumEntry.class, (DateTime) null /* modified since*/);
2

在谷歌数据协议的2.0版本中,有一个实验性的功能叫做 PartialResponse,这个功能可以让你在服务器端筛选返回的数据,只需要传入一个叫做 fields 的参数就可以了。

不过,目前只有Java的API支持这个2.0版本,但你可以很简单地把它添加到Python的API中。

撰写回答