目次
Twiiter Stream APIについて
REST APIについては仕事上で利用することは多いですが、Streaming APIを利用することは初めてなので少しワクワクしてます!
さて、Streaming APIはざっくり言うとある条件でヒットさせた場合に、通知を待っているクライアントに対してプッシュ通知を一斉配信する仕組みです。プッシュ通知とは、サーバで発生したイベントをキッカケとして、クライアントからの要求なしに情報を送信することができる技術のことです。
Twitterでは以下のStreaming APIが用意されています。
● Public streams
Twitter上で流れる公開データのストリームのこと。特定のユーザやトピックをフォローしたり、データマイニングに適しています。
● User streams
ユーザ1人のストリームのこと。Twitterのシングルユーザビューで参照できるほぼ全てのデータを網羅する。
● Sites streams
ユーザストリームのマルチユーザ版。サイトストリームは、多くのユーザに代わってTwitterに接続しなければならないサーバを対象としている。
ぶっちゃけ記載していてうまく理解できていない私がいますが、そこは利用時にしっかり調査すればよし!!
と言うことで、今回はPublic streamsであるAPIを利用します。
2. プログラムの概要
今回のプログラムの流れです。
1. 必要なモジュールをインポート
2. Twitter APIを実行するために必要な変数用意
3. StreamListenerを継承するクラスを作成
4. Twitterオブジェクトの生成
5. Listenerクラスのインスタンス生成
6. 指定の検索ワードをフィルタして受信開始
上記の流れでプログラムを作成していきます。
必要なモジュールをインポート
import tweepy from datetime import timedelta
1では、tweepyとtimedeltaをインポートします。timedeltaはツイートの時間を日本時間に直すために利用します。
Twitter APIを実行するために必要な変数用意
CK = 'xxxx' # Consumer Key CS = 'xxxx' # Consumer Secret AT = 'xxxx' # Access Token AS = 'xxxx' # Accesss Token Secert
各種キーの値は、作成したtwitter開発者ページから取得したキーを代入します。
参考ページ:【Python】twitter APIを使用するための各種キーを取得する手順
StreamListenerを継承するクラスを作成
# StreamListenerを継承するクラスListener作成 class Listener(tweepy.StreamListener): def on_status(self, status): status.created_at += timedelta(hours=9)#世界標準時から日本時間に print('------------------------------') print(status.text) print("{name}({screen}) {created} via {src}\n".format( name=status.author.name, screen=status.author.screen_name, created=status.created_at, src=status.source)) return True def on_error(self, status_code): print('エラー発生: ' + str(status_code)) return True def on_timeout(self): print('Timeout...') return True
3では、StreamListenerを継承するクラスListenerを作成します。
Twitterオブジェクトの生成
# Twitterオブジェクトの生成 auth = tweepy.OAuthHandler(CK, CS) auth.set_access_token(AT, AS)
4では、OAuthHandlerインスタンス(auth)に、”Consumer Key”, “Consumer Secret”をセットします。
セットが終わったあとは、auth.set_access_tokenに、”Access Token”, “Accesss Token Secert”をセットします。
Listenerクラスのインスタンス生成
# Listenerクラスのインスタンス listener = Listener()
5では、listener変数にてListenerクラスのインスタンスを生成します。
指定の検索ワードをフィルタして受信開始
# 受信開始 stream = tweepy.Stream(auth, listener) stream.filter(track = ["プログラミング"])# 指定の検索ワードでフィルタ
6では、ようやく受信開始となりますが、stream.filterを利用して、任意の単語を含む全てのツイートをストリーミングします。
trackパラメータは、ストリームする検索語の配列です。
★twitter-stream1.py★
# twitter-stream1.py import tweepy from datetime import timedelta CK = 'xxxx' # Consumer Key CS = 'xxxx' # Consumer Secret AT = 'xxxx' # Access Token AS = 'xxxx' # Accesss Token Secert # StreamListenerを継承するクラスListener作成 class Listener(tweepy.StreamListener): def on_status(self, status): status.created_at += timedelta(hours=9)#世界標準時から日本時間に print('------------------------------') print(status.text) print("{name}({screen}) {created} via {src}\n".format( name=status.author.name, screen=status.author.screen_name, created=status.created_at, src=status.source)) return True def on_error(self, status_code): print('エラー発生: ' + str(status_code)) return True def on_timeout(self): print('Timeout...') return True # Twitterオブジェクトの生成 auth = tweepy.OAuthHandler(CK, CS) auth.set_access_token(AT, AS) # Listenerクラスのインスタンス listener = Listener() # 受信開始 stream = tweepy.Stream(auth, listener) stream.filter(track = ["プログラミング"])# 指定の検索ワードでフィルタ
★出力結果★
みなさんも気になるワードでツイッターを分析してみてはいかがですか?^^
それでは!!
機械学習や分析の分野に興味があり、pythonを学びたいと思っている方は是非こちらもどうぞ↓