2015.3.16
せっかくMac持ってるならPythonを。という連載なんですが、ゆくゆくはカテゴリーを分けたほうがいいのかなぁとかなんとか。今回はPythonでTwitterからツイートを取得してみましょう。既に多くのブログでやりかたは明快に出ているのですが、まぁお遊びから学ぶPythonということでやってみましょう。
今回はPython-twitterを使用しますからターミナルを起動しインストールしましょう。
$ sudo pip install python-twitter
上記URLからキーを取得しましょう。TwitterのWEB版から既にログインを済ませておくと楽だとか何とか。画面下の方の「Manage Your Apps」をクリックしましょう。
そうするとこんな画面で入力を開始します。*印のところだけ入力すればよいです。
Name:アプリケーションの名前を入力。他に使ってる人がいたらエラー出ます
Description:アプリ概要 分かる範囲で
Website:あなたのWebサイトURLを入れておきましょう
以上で完了。簡単!
そうすると 「Key and Access Tokens」のタブをクリックして、ページ下の方でCreateをクリックすれば、
Consumer Key (API Key)
Consumer Secret(API Secret)
Access Token
Access Token Secret
の4項目の情報が出てきますので、これをメモメモしておきましょう。絶対に外部に漏らしてはダメですよ。
認証キーは別ファイルで作って、importしてやると楽ちんです。
twkey = { "cons_key": "******************************", "cons_sec": "******************************", "accto_key": "******************************", "accto_sec": "******************************" }
変数名は仮にtwkeyとしてみました。もっと分かりにくい変数名のほうが安全なのかどうか。このファイルをtwitkeyという名前をつけて保存します。
では実際に動作させるスクリプトを書いていきましょう。
#!/usr/bin/env python # coding: utf-8 import twitter import twitkey CONSUMER_KEY = twitkey.twkey['cons_key'] CONSUMER_SECRET = twitkey.twkey['cons_sec'] ACCESS_TOKEN_KEY = twitkey.twkey['accto_key'] ACCESS_TOKEN_SECRET = twitkey.twkey['accto_sec'] api = twitter.Api(consumer_key=CONSUMER_KEY, consumer_secret=CONSUMER_SECRET, access_token_key=ACCESS_TOKEN_KEY, access_token_secret=ACCESS_TOKEN_SECRET) tweets = api.GetSearch(term=u"#今日") for tweet in tweets: print(tweet.text)
ものすごくシンプルですね。このファイルをtwitprint.pyとして保存しましょう。シェルからcdで移動して動かしましょう。
$ cd pyworks $ python twitprint.py
動きましたか?ではスクリプトの中身を解説していきましょう。
#!/usr/bin/env python #おまじない # coding: utf-8 #UTF-8ですよという宣言 import twitter #twitterのモジュールをインポートします import twitkey #さきほど作った認証キーが入ったファイルをインポートします CONSUMER_KEY = twitkey.twkey['cons_key'] #ここから下4行にtwitkey.pyの内容を読めという指令を書いてます CONSUMER_SECRET = twitkey.twkey['cons_sec'] ACCESS_TOKEN_KEY = twitkey.twkey['accto_key'] ACCESS_TOKEN_SECRET = twitkey.twkey['accto_sec'] api = twitter.Api(consumer_key=CONSUMER_KEY, #これはTwitterAPIに使う箇所なのでまる覚えで consumer_secret=CONSUMER_SECRET, access_token_key=ACCESS_TOKEN_KEY, access_token_secret=ACCESS_TOKEN_SECRET) tweets = api.GetSearch(term=u"#今日") # (term=u"#今日") のとこは日本語なのでユニコードを表す u が要ります for tweet in tweets: #tweetsの内容があれば以下を実行しろという命令です print(tweet.text) #textでプリントしろという命令です
tweets = api.GetSearch(term=u"#今日")
この箇所を書き換えると色々取得できますね。
tweets = api.GetFavorites()
でお気に入りを調べたり。api.GetFavorites(id=*****)とかで特定ユーザーのを取得。
デフォルトの引数はあなた自身になってるはず。
TLの取得はこんな感じ。
tweets = api.GetHomeTimeline()
リプライ取得はこんな感じになってます。
tweets = api.GetMentions()