我正在尝试使用Python FlickrAPI包来管理我在Flickr中的一些照片。我无法让某些功能正常工作。我从以下开始:
import flickrapi
api_key='###MYkeyHERE###'
api_secret'####MYsecretHERE###'
flickr = flickrapi.FlickrAPI(api_key,secret=api_secret)
我还运行了令牌身份验证并检查了我的Flickr帐户页面以确保其正常工作
(token, frob) = flickr.get_token_part_one(perms='write')
flickr.get_token_part_two((token, frob))
当我运行以下内容获取我的集合列表时,它会返回看似空响应的内容。
photos = flickr.photos_search(user_id='MYuser@id', per_page='10')
回复看起来像:
<Element 'rsp' at 0x22c2e10>
它的属性为&#39; stat&#39;设置为OK。我想知道如何实际看到集合列表。
有趣的是,以下代码可以完美地工作,并在我的一个集合中打印照片的名称:
for photo in flickr.walk_set('72157636771398243'):
print photo.get('title')
这让我觉得我的身份验证工作正常,但我发现了其他一些错误。我非常感谢帮助。
答案 0 :(得分:5)
我不认为你错了。查看Flickr API flickr.photos.search documentation page上的示例响应。
<photos page="2" pages="89" perpage="10" total="881">
<photo id="2636" owner="47058503995@N01"
secret="a123456" server="2" title="test_04"
ispublic="1" isfriend="0" isfamily="0" />
<photo id="2635" owner="47058503995@N01"
secret="b123456" server="2" title="test_03"
ispublic="0" isfriend="1" isfamily="1" />
<photo id="2633" owner="47058503995@N01"
secret="c123456" server="2" title="test_01"
ispublic="1" isfriend="0" isfamily="0" />
<photo id="2610" owner="12037949754@N01"
secret="d123456" server="2" title="00_tall"
ispublic="1" isfriend="0" isfamily="0" />
</photos>
我出于好奇而尝试了这一点并得到了这些结果,与操作解析的XML响应字符串一致:
>>> photos
<Element 'rsp' at 0x2199a10>
>>> photos[0]
<Element 'photos' at 0x2199a30>
>>> photos[0][0]
<Element 'photo' at 0x2199cf0>
>>> photos[0][0].get('id')
'11124140143'
>>> photos[0][0].get('owner')
'62997566@N08'
所以我怀疑您正在使用API,但您可能需要进行一些实验以了解如何最好地使用结果。
根据FlickrAPI documentation,FlickrAPI调用的返回值为ElementTree。这应该有助于弄清楚如何分开回应的内容:
>>> import flickrapi
>>> import xml
>>> api_key = 'my API key'
>>> api_secret = 'my API secret'
>>> flickr = flickrapi.FlickrAPI(api_key,secret=api_secret)
>>> r = flickr.photos_search(user_id='48439369@N00', per_page='10')
>>> xml.etree.ElementTree.dump(r)
<rsp stat="ok">
<photos page="1" pages="376" perpage="10" total="3754">
<photo farm="8" id="10550639536" isfamily="0" isfriend="0" ispublic="1" owner="48439369@N00" secret="fb5a1b526c" server="7336" title="Morgan and Quinn" />
<photo farm="3" id="10550684964" isfamily="0" isfriend="0" ispublic="1" owner="48439369@N00" secret="0091541055" server="2840" title="Morgan and Quinn" />
...
</photos>
</rsp>
>>>
ElementTree类提供了更多方法来检查结果,遍历树并查找感兴趣的节点。
答案 1 :(得分:0)
我之前遇到过同样的问题,我的flickr设置没有结果。我所做的是将令牌作为参数包含在FlickrAPI中。请看下面。在这个实现中,我正在使用Flickr的json响应。
import flickrapi
import simplejson as json
flickr = flickrapi.FlickrAPI(FLICKR_API_KEY, FLICKR_API_SECRET, token='#############', format='json')
sets = flickr.photosets_getList(user_id='##########')
sets = sets.replace('jsonFlickrApi', '').strip('()')
jsets = json.loads( sets )
photoset_group = jsets['photosets']['photoset']
for photoset in photoset_group:
print photoset