Picasa Python API: 获取所有联系人最近上传的照片

0 投票
1 回答
524 浏览
提问于 2025-04-16 11:11

我正在使用Python的Picasa API来获取我所有联系人中最近的20张照片(也就是说,只要20张最新的照片)。我用Python写了这个程序,但速度非常慢。这个程序也没有优化好,因为我每个联系人都在获取20张照片,而我其实只想要总共20张照片。

def getRecentPhotos(self, user='default', limit='20'):
    users = self.getContactIDs(user)
    photos_tmp = []
    photos = []
    for user in users:
        photos_tmp = self.getRecentPhotosByUser(user)
        for photo in photos_tmp.entry:
            photos.append(photo)
    photos_sorted = sorted(photos, key=lambda photo: photo.timestamp.text, reverse=True)
    return photos_sorted[:20]

这个请求平均需要8秒钟(在本地服务器上)。我该如何优化这个呢?最耗时的部分是两个for循环嵌套在一起的地方。

1 个回答

1

你可以先从第一个用户那里获取20张照片,然后对于后面的每个用户,先只获取他们最近的一张照片。如果这张照片足够新,能算在最近的20张里,就再获取几张(直到没有新照片为止)。如果这张照片不够新,那就直接跳到下一个联系人。

如果你不太在意每次都要有正好最新的20张照片,你也可以把结果缓存起来,偶尔检查一下每个联系人,看他们有没有上传新照片。

撰写回答