仮想サーファーの波乗り

仮想化エンジニアの日常

プログラミング・ブロックチェーン・VR/AR・作業効率化・中国事情などに関してよく書きます。

Pythonでwebアプリケーション開発⑤ ~TwitterAPIでタイムライン表示~


こんばんは!


TwitterのAPIを触ってみよう企画の第2回目です。今回は、TwitterAPIを使ってタイムラインのつぶやき情報を取得していきます。


TwitterのAPI利用準備


まだTwitterのAPI準備をしていない方は、こちらを参考にAPIを使える状態にしておいてください。


Twitterのタイムライン情報を一度だけ取得


Requests-OAuthlibを使ってTwitterにリクエストをしてタイムライン情報を取得してタイムライン上に表示する方法です。
まずは、以下のコマンドでRequests-OAuthlibをインストールします。

$ pip install requests-oauthlib


次に、「twitter_timeline_request.py」というファイル(ファイル名はなんでもいいです)を作成し、以下のようにコードを書いていきます。

import os
import tweepy

CONSUMER_KEY = os.environ['CONSUMER_KEY']
CONSUMER_SECRET = os.environ['CONSUMER_SECRET']
ACCESS_TOKEN = os.environ['ACCESS_TOKEN']
ACCESS_TOKEN_SECRET = os.environ['ACCESS_TOKEN_SECRET']

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

api = tweepy.API(auth)
public_tweets = api.home_timeline()

for status in public_tweets:
    print('----------------------------------------------------------------------------------')
    print('@' + status.user.screen_name, status.text)


実行してみましょう。

$ forego run python twitter_timeline_request.py


タイムラインでのつぶやきがterminal表示されました。 f:id:virtual-surfer:20180212100607p:plain


実際にTwitterで確認しても、タイムライン上のデータであることがわかります。 f:id:virtual-surfer:20180212100702p:plain


Twitterのタイムライン情報を継続的に取得


次に、一度だけタイムライン情報を取得するのではなく、Twitterのサーバーから継続的にタイムライン情報が送られてくるようにしてみましょう。


「twitter_timeline_streaming.py」というファイルを作成して、以下のように記述します。

import os
import tweepy

CONSUMER_KEY = os.environ['CONSUMER_KEY']
CONSUMER_SECRET = os.environ['CONSUMER_SECRET']
ACCESS_TOKEN = os.environ['ACCESS_TOKEN']
ACCESS_TOKEN_SECRET = os.environ['ACCESS_TOKEN_SECRET']

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

class MyStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        print('----------------------------------------------------------------------------------')
        print('@' + status.author.screen_name, status.text)

stream = tweepy.Stream(auth, MyStreamListener())
stream.sample(languages=['ja'])


以下のコマンドでファイルを実行すると、タイムラインのつぶやき情報が継続的に表示され続けます。表示を中断したい場合は、「control」 + 「C」を押して中断させます。

forego run python twitter_timeline_streaming.py


継続的につぶやき情報が更新されていることがわかります。 f:id:virtual-surfer:20180212101744p:plain


まとめ


今回はタイムラインのデータ取得・表示の方法を見ていきましたが、これをアプリケーションに組み込めばマストドンみたいに読込みなしでタイムラインの情報が更新されていくようなものも作れそうです。APIの利用方法ある程度理解できたら、Twitterの各種操作を自動化するアプリケーション開発進めていきたいですね。


では!
(面白いと思っていただけたら、「B!ブックマーク」していただけると嬉しいです!!)