概要
Twitterの140文字制限拡張について、Twitter4J の修正内容をメモしておく。
参考:
Twitter4Jの変更点
ざっと下記の修正をすれば良さそう。
閲覧系
- REST Request 拡張モード対応
-
tweet_mode=extended
を指定できるようにする
-
- ストリーミング・Gnip用パーサ変更
- 下記パラメータをパースできること。
-
extended_tweet
full_text
display_text_range
entities
extended_entities
-
- 下記パラメータをパースできること。
- 拡張モード用パーサ変更
- 下記パラメータをパースできること。
full_text
display_text_range
- 下記パラメータをパースできること。
- 実装した⇒ https://github.com/takke/twitter4j/commits/support_extended_tweets
- 色々迷ったけど
ExtendedTweet
のようなオブジェクトやfull_text
を作らず、Status.text
等にマージする方式で実装した。 - 一度
ExtendedTweet
オブジェクトやfull_text
を作る方式で実装したが、アプリ側の修正が100カ所以上を超えてしまったのでアプリ側のインパクトがほとんどない上記の方式に変更した。 - 140文字オーバーのtextを与えられたら壊れるアプリはTwitter4Jをアップデートしないでね、という方針で。
- (2016/12/26追記) Twitter4J 4.0.6 でマージされました。
- 色々迷ったけど
投稿系
- statuses/update 修正
- 下記パラメータを指定できること。
auto_populate_reply_metadata
exclude_reply_user_ids
attachment_url
- 下記パラメータを指定できること。
-
attachment_url
だけ先行実装されたので対応した -> https://github.com/yusuke/twitter4j/pull/248
使用例
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setOAuthConsumerKey(...);
builder.setOAuthConsumerSecret(...);
builder.setOAuthAccessToken(...);
builder.setOAuthAccessTokenSecret(...);
// ここで tweet_mode=extended を指定する
builder.setTweetModeExtended(true);
TwitterFactory factory = new TwitterFactory(builder.build());
Twitter twitter = factory.getInstance();
result = twitter.getHomeTimeline();
// これで full_text も getText() で取得できる
// 表示領域は getDisplayTextRangeStart(), getDisplayTextRangeEnd() で。