我已将这段代码放在一起,以便从给定的Facebook帐户(fb_id)中获取最后MAX_PHOTOS
的数据,不包括EXCLUDED_ALBUM_TYPES
中的数据。我想我现在已经完成了这个图谱API ...除非有人能想出更好的方法吗?
# itertools.chain, with parse_datetime from Django
def get_facebook_photos(self, fb_id):
EXCLUDED_ALBUM_TYPES = ['profile', 'cover', 'wall', ]
MAX_PHOTOS = 20
albums = fb_client.get_object('{}/albums?fields=id,type'.format(fb_id)).get('data', [])
photos = []
album_ids = [a['id'] for a in albums if a['type'] not in EXCLUDED_ALBUM_TYPES]
# No prefix for this path.
photos_path = '/photos?ids={}&fields=source,link,created_time.order(reverse_chronological)'.format(
','.join(album_ids))
photos_data = chain.from_iterable(photos['data'] for photos in fb_client.get_object(photos_path).values())
for i, photo in enumerate(photos_data):
if i == MAX_PHOTOS:
break
photos.append({
'src': photo['source'],
'link': photo['link'],
'time': parse_datetime(photo['created_time'])
})
return photos
我想我可以尝试限制检索到的专辑数量。 limit
查询字符串中的photos_path
设置了每张相册中照片项数量的限制,这不是我想要的。现在我依赖于性能的默认响应分页,为收集的图像使用Django模板片段缓存(它们显示在轮播中)。不可否认,所有这一切都让我想知道为什么不能简单地在JS的前端进行...