python - flickAPI:ユーザーアカウントのセットを一覧表示するにはどうすればよいですか?

python api flickr

このユーザーが作成したすべてのセットとセットIDをリストしたいと思います。 flickrApiとPythonを使用しています。これが私のコードです。 setNameは出力で「なし」を返します。
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!")
答え
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


関連記事

python - Pythonの他の属性定義内からクラス属性にアクセスする

python - CherryPyでのユーザー管理

python - GStreamerとTheora

python - DjangoカスタムChangeUserForm設定is_active、is_staff、is_superuserをFalseに設定

python - StringToSignの作成

python - 'コマンドラインインテリセンス'(TAB TAB)をPythonスクリプトで動作させる方法は?

python - 自動的にインポートされたモジュールを制御する

python - 書式付きでPythonスクリプトを保存-特殊文字

python - ツイストされた遅延コールバックチェーン

python - JSONからデータを読み込んだ後のメモリのクリーニング