python flickr api 进行群组搜索并获取图像数据集

python flickr api for group search and get image data set

有没有 python flickr api 我可以打群 url 并获得所有最新的图像数据?

我有一个 url 喜欢:

https://www.flickr.com/groups/caterpillarequipment/

我想获取所有最新的图像数据集。 我尝试用 flickrapi lib 来做,但到目前为止我能想出任何方法。 我是 flickr 的新手 api 不知道如何获取这些数据。

如果您想获取群组池的所有信息,请使用 flickr.groups.pools.getPhotos API 调用,如下所示:

import flickrapi
from pprint import pprint

api_key = 'your api key'
secret = 'your secret key'
flickr = flickrapi.FlickrAPI(api_key, secret, format='parsed-json')

group_id = '544735@N20'    # caterpillarequipment's group_id
response = flickr.groups.pools.getPhotos(group_id=group_id, per_page=3)
pprint(response)
{u'photos': {u'page': 1,
             u'pages': 1033,
             u'perpage': 3,
             u'photo': [{u'dateadded': u'1428715622',
                         u'farm': 8,
                         u'id': u'16912446348',
                         u'isfamily': 0,
                         u'isfriend': 0,
                         u'ispublic': 1,
                         u'owner': u'71639059@N00',
                         u'ownername': u'ocrr4204',
                         u'secret': u'311b63f966',
                         u'server': u'7685',
                         u'title': u'Dufresne Construction 146 a CAT D7H bulldozer Ottawa, Ontario Canada 04252007 \xa9Ian A. McCord'},
                        {u'dateadded': u'1428713719',
                         u'farm': 8,
                         u'id': u'16896411327',
                         u'isfamily': 0,
                         u'isfriend': 0,
                         u'ispublic': 1,
                         u'owner': u'62532775@N03',
                         u'ownername': u'Jibup',
                         u'secret': u'76dc9110ed',
                         u'server': u'7695',
                         u'title': u'Caterpillar'},
                        {u'dateadded': u'1428554028',
                         u'farm': 8,
                         u'id': u'17058845816',
                         u'isfamily': 0,
                         u'isfriend': 0,
                         u'ispublic': 1,
                         u'owner': u'73369431@N07',
                         u'ownername': u'Stephen Ball Photography',
                         u'secret': u'607f522144',
                         u'server': u'7705',
                         u'title': u'One Up One Down'}],
             u'total': u'3097'},
 u'stat': u'ok'}

出于演示目的,我使用了 3 的小页面大小 - 默认值为 100,最大值为 500。这意味着您需要多次调用该服务才能检索所有照片。你可以这样循环:

group_pool_photos = []
group_id = '544735@N20'    # caterpillarequipment's group_id
page = 1
success = True
while True:
    response = flickr.groups.pools.getPhotos(group_id=group_id, page=page)
    if response['stat'] != 'ok':
        print 'Error occurred in flickr.groups.pools.getPhotos'
        pprint(response)
        success = False
        break

    if len(response['photos']['photo']) == 0:
        break

    group_pool_photos.extend(response['photos']['photo'])
    page += 1

if success:
    print 'Info for all pool photos successfully retrieved. Total photos {}'.format(len(group_pool_photos))

最后 group_pool_photos 应该包含所有照片信息。

N.B。由于在检索过程中添加或删除照片,池可能会发生变化,因此您可能希望通过比较连续响应中的总数来尝试检测这一点。