LoginSignup
12
9

More than 5 years have passed since last update.

Twitter4Jの140文字制限拡張対応について

Last updated at Posted at 2016-09-17

概要

Twitterの140文字制限拡張について、Twitter4J の修正内容をメモしておく。

参考:
- Upcoming changes to Tweets | Twitter Developers
- Twitter / Upcoming changes to Tweets の日本語訳 - Qiita

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() で。

12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9