12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-09-17

概要

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

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?