Tweetのリアルタイム取得

Twitter APIのstatuses/filterを使用して、リアルタイム取得を擬似的に行えます。

動作確認はPython 3.6で行いました。

# -*- coding: utf-8 -*-
import sys
import json
import twitter


TWITTER_SCREEN_NAME = "(screen_name)"


def display_tweet(dict_tweet):
    try:
        print("--------")
        print("%s %s" % (dict_tweet["user"]["name"], dict_tweet["user"]["id_str"]))
        print("%s" % (dict_tweet["text"],))
        if "entities" in dict_tweet:
            if "media" in dict_tweet["entities"]:
                for dict_media in dict_tweet["entities"]["media"]:
                    print(dict_media)
        print()
    except KeyError:
        if "delete" not in dict_tweet:
            print(dict_tweet)
            sys.exit()


def main():

    with open("config.json", "r") as h_json_r:
        dict_json = json.load(h_json_r)
        o_twitter = twitter.Api(**dict_json)

    # フォローユーザーの取得
    list_raw_friend = o_twitter.GetFriends(screen_name=TWITTER_SCREEN_NAME)

    dict_friend = {}
    for r in list_raw_friend:
        dict_friend[r.id_str] = r
        print("%s %s" % (r.name, r.id_str))

    # ツイートの取得
    iter_tweet = o_twitter.GetStreamFilter(follow=dict_friend.keys())

    for r in iter_tweet:
        display_tweet(r)


if __name__ == "__main__":
    main()

# [EOF]

config.jsonにはTwitterの認証キーを設定します。

{
    "consumer_key": "****",
    "consumer_secret": "****",
    "access_token_key": "****",
    "access_token_secret": "****"
}