2021年12月20日月曜日

Tweepy4でリアルタイムツイートを取得する

Twitter API v1.1でのリアルタイムツイート取得ができなくなっているので、この記事の方法は使えない。リアルタイムにツイートを取得するときは、PythonとTwitter API v2でリアルタイムにツイートを取得するのようにv2を使う。(2022.12.30追記)


 TweepyTwitter APIを利用してツイート検索などを行えるPythonライブラリ。バージョンが3から4になって仕様がけっこう変わっている。今回はTweepyの最新バージョン4でリアルタイムツイートを収集してみる。


環境

WSL2(Ubuntu20.04)。

1
2
3
4
5
$ lsb_release -dr
Description:    Ubuntu 20.04.3 LTS
Release:        20.04
$ python3 -V
Python 3.8.10

Twitter APIの利用に必要なAPIキーやトークンなどが未取得であれば、Twitterの開発者向けサイト(Developer Platform)で取得しておく。


Tweepyのインストール

Tweepyはpipでインストールできる。

1
2
3
4
5
6
$ pip3 install tweepy
$ pip3 show tweepy
Name: tweepy
Version: 4.4.0
Summary: Twitter library for Python
...


Tweepyでリアルタイムにツイートを取得する

Tweepyバージョン3でリアルタイムにツイートを取得するには、StreamListenerを継承するクラスのインスタンスをStreamオブジェクトにわたすようにしていたが、バージョン4ではStreamListenerが廃止されている。TweepyドキュメントのFrequently Asked QuestionsにStreamListener廃止についての記載がある。

Tweepyバージョン4でリアルタイムにツイートを取得するには、Streamを継承するクラスを作成し、そのインスタンスを使う。以下のコードではリアルタイムに日本語ツイートのランダムサンプリングを表示する。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import tweepy
 
# Twitter APIの認証情報
# Twitterの開発者向けのページで取得したキーとトークンを使う
CONSUMER_KEY = 'Consumer Key'
CONSUMER_SECRET = 'Consumer Secret'
ACCESS_TOKEN = 'Access Token'
ACCESS_TOKEN_SECRET = 'Access Token Secret'
 
class TwStream(tweepy.Stream):
    def on_status(self, status):
        # status(APIで取得できるデータ)を受け取ったときにon_statusが実行される
        print('-------------------------')
        # スクリーンネームとツイートを表示
        print(f'@{status.author.screen_name} {status.text}')
 
def main():
    twstream = TwStream(
        CONSUMER_KEY,
        CONSUMER_SECRET,
        ACCESS_TOKEN,
        ACCESS_TOKEN_SECRET
    )
 
    # 日本語ツイートに限定してランダムサンプリングを取得
    twstream.sample(languages=['ja'])
 
if __name__ == '__main__':
    main()



0 件のコメント:

コメントを投稿