TwitterのRESTとStreamingのレスポンスがあまりにも難しすぎて忘れてしまうのでメモ。
- RESTでtweet_mode=extendedがついていない場合
- 添付画像のURLを含めて140文字以下の場合
- 今まで通りtext, entities, extended_entities が設定される
- 添付画像のURLを含めて140文字を超える場合
- textには全文表示URLを含んだものが設定される。
- truncatedフィールドがtrueになる
- entities, extended_entitiesに画像などは含まれず、全文表示URLのみが含まれる
- 添付画像のURLを含めて140文字以下の場合
- RESTでtweet_mode=extendedがついている場合
- 添付画像のURLを含めて140文字以下の場合
- textはなくなる。代わりにfull_textが増える
- truncatedフィールドはfalseになる
- display_text_rangeフィールドが増えて、本文範囲が明示される
- entities, extended_entities はこれまで通り
- 含まれるindicesはfull_textに対して正しい値が格納される
- 添付画像のURLを含めて140文字以下の場合
- Streamingの場合
- 添付画像のURLを含めて140文字以下の場合
- 今まで通りtext, entities, extended_entities が設定される
- 添付画像のURLを含めて140文字を超える場合
- textには全文表示URLが含まれる
- entities, extended_entitiesに画像は含まれず、全文表示URLのみが含まれる
- extended_tweetフィールドが増える
- ここにfull_text, display_text_range, entities(画像入ってる)がある
- extended_tweet.entitiesはextended_entitiesと同様に複数枚画像に対応してる
- 添付画像のURLを含めて140文字以下の場合
つまるところ、全部のパターンをパースしようと思うと
- extended_tweet フィールドを見る
- full_text をみる
- text をみる
とかしないといけなくてくそめんどい
追記: entities を見るときは
- extended_tweet.entities をみる (extended_tweet.entitiesはextended_entitiesを包含しているので単体でOK)
- 画像はextended_entities、それ以外はentitiesをみる
で、いけます。こっちもめんどい。
結論
くそめんどい