Twitter botの作成②

サンプルプログラムの作成

Twitter APIには「REST API」、「Streaming API」、「Sample API」などがある

。REST APIは過去のツイートを検索できる機能もあって、よく使われていると思う。だが、検索にかかるのはほんの一部なので、検索結果を元に統計分析を行うのには適していない。

Streaming APIはリアルタイムですべてのツイートが流れてくる。だが、日本語での検索がうまくいかないようだ。

そこで今回はSample APIを使ってみる。

Sample APIはツイート全体の1%しか利用できない。だが、その1%が無作為に選ばれているのであれば(どのように選ばれているかは知らないが)、それなりに全体を代表していると言えるだろう。1%といってもデータは大量で、REST APIとは比較にならない。

○以下のプログラムを「test_bot.py」ファイルとして「~/py」フォルダーに保存する。

「# キー、アクセストークンを設定する。」のブロックは「Twitter botの作成①」でメモしたものに書き換える。

# coding: utf-8

import sys
import time
import twitter
from datetime import datetime

# キー、アクセストークンを設定する。
#consumer_key = "*************************"
#consumer_secret = "**************************************************"
#access_token_key = "**********-***************************************"
#access_token_secret = "*********************************************"

if __name__ == "__main__":
    api = twitter.Api(
        consumer_key=consumer_key, consumer_secret=consumer_secret,
        access_token_key=access_token_key,
        access_token_secret=access_token_secret)
    argvs = sys.argv
    query = argvs[1]
    count = 0
    i = 0
    while True:
        # 回線不通の場合を処理する。
        try:
            for line in api.GetStreamSample():
                # 空のデータが流れてきた場合を処理する。
                try:
                    now = datetime.now()
                    count = count + line["text"].count(query)
                    interval = now.minute % 1 == 0 and now.second == 0
                    if i == 0 and interval:
                        print(
                            now.strftime("%Y-%m-%d %H:%M:%S"), query, " = ",
                            count, "回")
                        count = 0
                        i = 1
                    if interval == False:
                        i = 0
                except:
                    # 何もしたくないのでパスする。
                    pass
        except:
            print("回線不通です。")
            time.sleep(60)

使い方

記事を書いている時点で台風が近づいているみたいなので、今回はとりあえず「台風」というキーワードが使われた回数を5分ほど数えてみた。

○以下のコマンドをSpyderの「IPython console」にコピー&ペーストして「Enter」キーを押す。

%run ~/py/test_bot.py 台風

出力

2016-10-03 11:23:00 台風  =  2 回
2016-10-03 11:24:00 台風  =  4 回
2016-10-03 11:25:00 台風  =  0 回
2016-10-03 11:26:00 台風  =  2 回
2016-10-03 11:27:00 台風  =  0 回

台風というキーワードは5分間で8回使われた。これが全体の1%だとすると、単純計算で800回。1日に換算すると20万回を超える。かなりの人が台風に関心を持っているように見える。

参考リンク

python-twitterのドキュメント

https://python-twitter.readthedocs.org/en/latest/

(2016/10/03更新)

コメント

非公開コメント