ぷろぐらみんぐ中毒

プログラミングやらなんやら...とにかく情報関連を語るブログだよ!

PythonからTwitterAPIを用いてDMを取得してみる

はじめに

こんにちは。 先日、自分用にTwitterクライアントを作成していた際にTwitterのDM(ダイレクトメッセージ)を扱う必要が出てきたのですが、検索してもDM関連についてなかなか書いてあるサイトがないんですよね…(単に僕の検索能力がアレなせいかもしれませんが) というわけで、試行錯誤して何とか実装できたのでその時の事をメモしておきたいと思います。

準備をする

今回は、OAuth関連の処理はrequests-oauthlibに任せました。

Github https://github.com/requests/requests-oauthlib このライブラリは、とても簡単に扱うことができ、AccessToken,AccessTokenSecret,ConsumerKey,ConsumerSecretを渡すだけでパパッと認証をしてくれます。いつもお世話になっています。 しかも、導入もめちゃくちゃ簡単です! ターミナルに

pip install requests requests-oauthlib

と入力するだけです! いやー素晴らしいですね。

では、次に認証に必要なAccessToken,AccessTokenSecret,ConsumerKey,ConsumerSecretを取得しましょう。 AccessTokenなどを取得するには Welcome — Twitter Developers にアクセスします。 ここから取得するまでは、検索(TwitterAPI入門とか)すればたくさん出てくるので省略します。検索してください。 では、ここからはAccessTokenなどが取得できたとして話を進めていきます。

プログラムを書いていく

いよいよ、プログラムを書いていきます。 ここで使う言語はタイトルにもあるようにPythonです。

from requests_oauthlib import OAuth1Session
import json

consumer_key='****************'
consumer_secret='***************'
access_token='***************'
access_token_secret='****************'

token=OAuth1Session(consumer_key,consumer_secret,access_token,access_token_secret)

params={("count",100)}
getlist=token.get("https://api.twitter.com/1.1/direct_messages.json",params=params)
dmlist=json.loads(getlist.text)

for line in dmlist:
    print line["text"]

consumer_key、consumer_secret、access_token、access_token_secretはそれぞれ自分のものに置き換えてください。 以上のプログラムをshowdm.pyのような適当な名前で保存し、python showdm.pyのように実行します。 dmの本文が並んで表示されたら成功です。 一応、上のプログラムでは新しい順から100件取得するようにしています。 また、line[“text”]の"text"の部分を変更することによりidやscreen_nameを取得することもできます。 どのような事柄が取得できるかについては

GET direct_messages — Twitter Developers

を参考にしてください。