31
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python で Wunderlist API を使ってみる

Last updated at Posted at 2015-11-13

タスク管理、してますか?

タスク管理アプリケーションとして有名な Wunderlist の API に Python で触ってみました。API の Document もしっかり書いてあるので扱いやすい API だと思います。認証は OAuth2 が使われています。

#1. 下準備
自分の Wunderlist のアカウントがあるのが最低条件です。
まず、自分のアカウントを使って下記ページにログインします。
https://developer.wunderlist.com/

その後、REGISTER YOUR APP をクリック
スクリーンショット 2015-11-13 15.17.05.png

登録画面が出てくるので、必要事項を入力し、SAVEをクリック。後からでも変更できますが、NAME、APP URL、AUTH CALLBACK URL は入力必須です。
スクリーンショット 2015-11-13 15.21.26.png

すると CLIENT ID と CLIENT SECRET が取得できます。
スクリーンショット 2015-11-13 15.21.52.png

今回は簡略化のために、自分のアカウントに対する ACCESS TOKEN を取得します。CREATE ACCESS TOKEN をクリックしましょう。
スクリーンショット 2015-11-13 15.32.46.png

自分のアカウント情報を取得するのに必要なのは CLIENT ID と ACCESS TOKEN の2つです。必要な情報が取得できたので、早速ユーザー情報を取得してみます。

oauth2 認証には Requests-Oauthlib というライブラリを使用させてもらいました。
認証の詳細は ここ に書いてあります。リクエストするヘッダー情報に X-Client-ID と X-Access-Token をつければOK。


from requests_oauthlib import OAuth2Session
import json

client_id = "YOUR CLIENT ID"
access_token = "YOUR ACCESS TOKEN"
url = "https://a.wunderlist.com/api/v1/user"
params = {}

wunderlist = OAuth2Session()
wunderlist.headers['X-Client-ID'] = client_id
wunderlist.headers['X-Access-Token'] = access_token
req = wunderlist.get(url, params=params)

if req.status_code == 200:
    user = json.loads(req.text)
    print user['name']
else:
    print ("Error: %d" % req.status_code)

無事、自分のユーザー名が表示されたでしょうか?

#2. API に触ってみる

a. リストの一覧を取得してみる

url を変更

url = "https://a.wunderlist.com/api/v1/lists"

リストの id はタスクを CRUD するのに使います。

req = wunderlist.get(url, params=params)

if req.status_code == 200:
    lists = json.loads(req.text)
    for list in lists:
        print list["id"], list["title"].encode('utf-8')
else:
    print ("Error: %d" % req.status_code)

b. タスクを作成する

url と params を変更します。ちなみに買い物リストで一番書かれることが多いのはトイレットペーパーだそうで。(本社の人の情報なので間違いないです。)

url = "https://a.wunderlist.com/api/v1/tasks"
params = {
    "list_id": "買い物リストのID", #integer
    "title": "トイレットペーパー", #string
}

今度は GET ではなく POST ですね。status_code も変わります。

req = wunderlist.post(url, json=params)

if req.status_code == 201:
    print "New task was successfully created."
else:
    print ("Error: %d" % req.status_code)

自分の Wunderlist を見て、買い物リストにトイレットペーパーが追加されていればOKです。

c. タスクを完了する

タスクのアップデートに当たります。さっき追加したトイレットペーパーを買ったことにしましょう。

url と params を変更します。

url = "https://a.wunderlist.com/api/v1/tasks/"
params = {
    "revision": 1, # 基本は1で大丈夫
    "completed": True,
}
task_id = "トイレットペーパーのID"
url += task_id

PATCH という関数を使います。

req = wunderlist.patch(url, json=params)

if req.status_code == 200:
    print "Task was successfully completed."
else:
    print ("Error: %d" % req.status_code)

Wunderlist を確認してトイレットペーパーのタスクが完了していることを確かめましょう。

タスクやリストの id は Web版の Wunderlist の url を見れば一目瞭然だと思います。

31
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?