我正在尝试使用 Python FlickrAPI包来管理我在 Flickr 中的一些照片。我很难让某些功能正常工作。我从以下内容开始:
import flickrapi
api_key='###MYkeyHERE###'
api_secret'####MYsecretHERE###'
flickr = flickrapi.FlickrAPI(api_key,secret=api_secret)
我还运行了 token 身份验证并检查了我的 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>
它有一个设置为 OK 的“stat”属性。我想知道如何实际查看集合列表。
有趣的是,下面的代码可以完美运行并打印出我的一组照片的名称:
for photo in flickr.walk_set('72157636771398243'):
print photo.get('title')
这让我认为我的身份验证工作正常,但我犯了一些其他错误。非常感谢您的帮助。
请您参考如下方法:
我不认为你用错了。查看 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 类提供了更多方法来检查结果、遍历树和查找感兴趣的节点。
