tweepyでsearchの結果が省略される問題

tweepyを使ってTwitterからツイートを取得するプログラムを書いている。 ツイートは全文が欲しいのだが、Twitter APIの仕様が最近(今年から?)変更されたようで、 テキストが115文字より長いとt.coで圧縮されてしまい、ツイートの一部が省略されてしまうようだ。

例えばこんな感じ:

This is a test for Twitter API. This text will be truncated to 115 characters when search API is called because it is so long tweet.

This is a test for Twitter API. This text will be truncated to 115 characters when search API is called because it … https://t.co/hogehogejp

のようになる。

tweepyも影響を受けていて、API.search()で取得した結果のテキストが115文字より長いと省略されてしまう。

Twitter APIのリファレンスにも、tweepyのドキュメントにも解決できそうなものが無い…。

解決方法

ここここを参考にコードを書いたら動いた。

API.search()のパラメータにtweet_mode='extended'を追加すれば、textフィールドの代わりにfull_textフィールドが追加されて、そこにツイートの全文が格納されるようになる。

以下サンプルコード:

import tweepy

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)

tweets = api.search(q = 'sample query', tweet_mode = 'extended')
for t in tweets:
  print(t._json['full_text'])

とりあえず短縮されず取得できるようにはなった。(t._json['full_text']で取得するのはいい方法なのかという疑問は残る)

参考URL