2011-09-05 85 views
1

我希望列出由该用户创建的所有集合以及集合ID。我正在使用flickrApi和Python。这是我的代码。 setName在输出中返回“none”。 elm.get('title')返回“none”。flickAPI:如何列出我的用户帐户的设置?

import flickrapi 

api_key = 'APIKEY' 
api_secret = 'APISECRET' 

flickr = flickrapi.FlickrAPI(api_key, api_secret) 

(token, frob) = flickr.get_token_part_one(perms='write') 
if not token: raw_input("Press ENTER after you authorized this program") 
flickr.get_token_part_two((token, frob)) 
try: 
    favs = flickr.photosets_getList(user_id='[email protected]') 
    #favs = flickr.favorites_getPublicList(user_id = '[email protected]') 
    for elm in favs.getiterator(): 
     print ("id: %s secret: %s setname: %s") %(elm.get('id'), elm.get('secret'), elm.get('title')) 
except: 
    raise Exception("Some error encountered!") 

回答

1

当你使用Python flickrapi工作,这是经常有用到打印这是由API调用返回,以看看发生了什么事情的XML。在你的榜样,如果添加:

from xml.etree import ElementTree 

...顶部,然后添加:

print ElementTree.tostring(favs) 

...你会看到,返回的结构是:

<rsp stat="ok"> 
<photosets page="1" pages="1" perpage="80" total="80"> 
    <photoset .../> 
    <photoset .../> 
    <photoset .../> 
    <photoset ...> 
</photosets> 
</rsp> 

在一个真实的应用程序中,您需要检查退货状态并检查page属性,但要快速找到您想要的内容,我们只需看看<photoset>元素。遍历它们,您可以将循环更改为:

for elm in favs.getchildren()[0]: 
    print ElementTree.tostring(elm) 

然后你会看到,你将不得不浏览各photoset元素的结构。例如,其中一个是:

<photoset can_comment="1" 
      count_comments="0" 
      count_views="34" 
      date_create="1156703089" 
      date_update="1297462539" 
      farm="1" 
      id="72157594253605858" 
      needs_interstitial="0" 
      photos="73" primary="226222345" 
      secret="63fde66413" 
      server="62" 
      videos="0" 
      visibility_can_see_set="1"> 
    <title>Birds</title> 
    <description /> 
</photoset> 

...所以标题实际上存储在title子元素中。从这一点,你可以看到,以获得您想要的信息,你可以这样做:

for elm in favs.getchildren()[0]: 
    title = elm.getchildren()[0].text 
    print ("id: %s secret: %s setname: %s") %(elm.get('id'), elm.get('secret'), title) 

...产生的输出:

id: 72157600139832705 secret: 4e884f3523 setname: French Creek State Park 
id: 72157600047937451 secret: d3c84ed8df setname: Las Vegas 
id: 72157594253605858 secret: 63fde66413 setname: Birds 

相关问题