flickAPI:如何列出我的用户帐户的集合?

时间:2011-09-05 04:02:43

标签: python api flickr

我希望列出此用户创建的所有集以及set id。我正在使用flickrApi和Python。这是我的代码。 setName在输出中返回“none”。 elm.get('title')返回“none”。

    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='51784048@N00')
    #favs = flickr.favorites_getPublicList(user_id = '51784048@N00')
    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 个答案:

答案 0 :(得分:2)

当您在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