Twitter APIを利用する準備をしよう
Twitter APIを利用して、ツイートをすべて取得しよう
さて、POSTから受け取った値を、FLASKで扱う方法を学んだので、次はPOSTから受け取ったuser_idから、ユーザーのツイートを取得して、HTMLに返す処理を行いましょう。
仕様の確認
今回は、以下のような機能を作成します。
- ツイッターのユーザーのデータを取得する
- ユーザーのツイートのデータをすべて収集し、そのツイートでリツイート数が多い順に並べる
- ①で収集したツイートを、日次で集計し、時系列グラフでリツイート数、いいね数を表示する
さっそく、TwitterのAPIを利用して、それぞれのデータを取得していきましょう。
Twitter APIの認証を行う
まずは、ツイッターから、以下の値を取得します。
- Access Token
- Access Secret
- Consumer Secret
- Consumer Key
取得したら、以下のようにツイッターのAPIの認証情報を保存します。
- .envというファイルを作成
- Access Token / Access Secret / Consumer Secret / Consumer Keyを設定する
- twitter.pyというファイルを新規作成
- twitter.pyから環境変数をインポートする
.envは以下の階層に作成します。
top-tweets
├── app.py
├── .env
└── templates
└── index.html
さて、編集して以下のようにコードを書いていきましょう。中の値は空になっていますが、実際にはさきほど取得したAPIの認証情報を保存することになります。
.env
CONSUMER_KEY=xxxx
CONSUMER_SECRET=xxxx
ACCESS_TOKEN=xxxx
ACCESS_SECRET=xxxx
さて、記入が終わったら保存し、再度twitter.pyを編集し、以下のファイルをコピペします。
twitter.py
import tweepy #1 Twitter APIが使えるライブラリ
import os #2 OSの操作ができるライブラリ
from dotenv import load_dotenv #3 環境変数が読み込まれるライブラリ
load_dotenv() #4 dotenvの読み込み
#5 各種ツイッターのキーをセット
CONSUMER_KEY = os.getenv("CONSUMER_KEY")
CONSUMER_SECRET = os.getenv("CONSUMER_SECRET")
ACCESS_TOKEN = os.getenv("ACCESS_TOKEN")
ACCESS_SECRET = os.getenv("ACCESS_SECRET")
#6 Tweepyの初期化
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
#7 APIインスタンスを作成
api = tweepy.API(auth)
#8 Tweepyの利用テスト
user = api.get_user("manajob_jp")
print (user)
順に追って説明します。
#1では、Twitterを利用するためのライブラリであるtweepyをインポートします。まだインストールできていないので、tweepyはのちほどインストールします。
#2では、osという、環境変数を読み込むために使うライブラリをインポートします。
#3では、.envから環境変数を読み込むためのdotenvというライブラリをインポートします。こちらもまだインストールできていないので、のちほどインストールします。
#4では、.envファイルを環境変数に設定するコマンドを実行しています。
#5では、Twitterの各種設定キーを変数に入れています。
#6, #7 では、TwitterのAPIを使うためのセッティングを行っています。具体的には、Twitter APIの認証を行っていて、APIが利用できるようにしています。
#8では、実際にAPIが使えるかどうか、確認しています。
さて、実際にここまでできたら、ファイルを実行してみましょう。
その前に、もろもろのライブラリをインストールしておきましょう。
pip install dotenv
pip install tweepy
次に、以下のコマンドで実行します。
python twitter.py
実行すると、IDに該当するアカウントが出てくるはずです。
{'id': 987921290672525312, 'user_id': 'manajob_jp', 'image': 'http://pbs.twimg.com/profile_images/1069152674442932225/VXyo_onN_normal.jpg', 'description': 'マナジョブは、ビジネスサイドの人が、IT技術を学んで実践できるようになるための学習サービスです。無料のチュートリアルもあるので、ぜひ利用してみてください!'}
次のレッスンでは、さっそくツイートの一覧を取得してみましょう!