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']
で取得するのはいい方法なのかという疑問は残る)