Skip to main content
 首页 » 编程设计

Python Flickr-api 空白响应

2025年05月04日15bjzhanghao

我正在尝试使用 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 类提供了更多方法来检查结果、遍历树和查找感兴趣的节点。