20
17

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.

Twitterリツイートに関するJSONについてまとめる

Last updated at Posted at 2017-02-22

目的

 Twitterの1つ1つのツイートはJSONで構成されており、TwitterAPIへのアクセス時には、応答として返ってきたJSONをパースして内容を読みます。
 開発者がJSONの各フィールド(変数)の意味を理解しておかなければ、「そのツイートがリツイートされたものなのか、普通のツイートなのか?」などを判定する際に、誤った状態として認識してしまうことに繋がります。

 本記事の目的は、リツイートに関するフィールドについてまとめ、自分への備忘録を残すことおよび情報共有を行うこととします。

結論

 目的で述べた**「そのツイートがリツイートであるか?」を判定するためには、"retweeted_status"のフィールドの有無**を調べれば良いです。

if (tweet.retweeted_status) {
  console.log(tweet.text + "はリツイートです")
  console.log(tweet.retweeted_status.text + "が原文です")
} else {
  console.log(tweet.text + "はリツイートではありません")
}

 リツイートに関連するフィールドと説明をまとめたものを下表に示します。

No. フィールド 説明
1. retweeted そのツイートがリツイートされたかどうかを示す。
リツイートであるかどうかではないことに注意。
2. retweet_count そのツイートが何回リツイートされたかを示す。
3. retweeted_status そのツイートがリツイートである場合のみ存在するフィールド。
よって**「そのツイートがリツイートであるかどうか」はこのフィールドの有無を判定すれば良い。**
中身はリツイート元のオリジナルのツイート。
4. quoted_status そのツイートが引用リツイートである場合のみ存在するフィールド。
中身は引用元のオリジナルのツイート。
5. quoted_status_id
quoted_status_id_str
そのツイートが引用リツイートである場合のみ存在するフィールド。
引用元のオリジナルのツイートのIDを表す。(4と同じ)

所見

  • **「そのツイートがリツイートかどうかを調べる」**にあたって、以前使っていたTwitter4Jでは、Statusインターフェースに"isRetweet()"メソッドがあり、をbooleanで返してくれるようになっていた。
  • 今回Node.jsでTwitter APIを利用することとなり、使用モジュール(Twit.js)には上に該当するメソッドが無かった。どのフィールドだったっけ? となった経緯がある。こうしてまとめられて良かった。

参考

1. Twitter Developer Documentation: "Tweets"
2. Twitter Developer Documentation: "POST statuses/retweet/:id"
3. Twitter開発者ドキュメント 日本語訳: "オブジェクト内のEntities"

20
17
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
20
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?