目的
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"