概要
Twitterの140文字制限拡張について、Twitter4J の修正内容をメモしておく。
参考:
Twitter4Jの変更点
ざっと下記の修正をすれば良さそう。
閲覧系
- REST Request 拡張モード対応
-
tweet_mode=extendedを指定できるようにする
-
- ストリーミング・Gnip用パーサ変更
- 下記パラメータをパースできること。
-
extended_tweetfull_textdisplay_text_rangeentitiesextended_entities
-
- 下記パラメータをパースできること。
- 拡張モード用パーサ変更
- 下記パラメータをパースできること。
full_textdisplay_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_metadataexclude_reply_user_idsattachment_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() で。