Python Flickr-api空白响应

时间:2013-11-30 05:27:52

标签: python flickr

我正在尝试使用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')

这让我觉得我的身份验证工作正常,但我发现了其他一些错误。我非常感谢帮助。

2 个答案:

答案 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