難解な標題
難解な標題とともに、内容も難解です。箇条書きで説明します。
- ツイートはそれぞれがユニークな「ツイートID」を持つ
- リツイートであってもそのリツイート自体が「ツイートID」を持つ
- ただしその「ツイートID」にアクセスするとリツイート元(オリジナルツイート)へリダイレクトされる
- Twitter の gem *1では上記の2つの「ツイートID」で取得したツイートに差異がある
- リツイート元(オリジナルツイート)の「ツイートID」で情報を取得すれば正しい情報が得られる
- リツイート自体の「ツイートID」で情報を取得すると正しく情報を得られないときがある
- 正しく情報を得られない場合というのは、本文が日本語で140文字付近になっている場合
- 添付URLや添付画像の情報が本文中ではなくsuffixに送られてしまっているとき
- 正しく情報を得られない場合というのは、本文が日本語で140文字付近になっている場合
具体例
以下のようなオリジナルツイートがあります。ツイートIDは934008345999982592
です。
上記のツイートをRTしたツイートが以下のツイートです。ツイートIDは934043544418885633
です。
後者のアドレスは前者のアドレスにリダイレクトされるため、見た目は同じです。しかし、Twitter の gem(というか API)で取得する場合は前者と後者で得られる情報が違います。
以下、メソッドごとに前者の結果と後者の結果を示します。
tweet.media?
前者
true
後者
false
tweet.attrs[:full_text]
前者
【秋葉原ラジオ会館店】 ゲームセンターCXオリジナルメダルゲーム「戦え!課長ファイター」好評稼働中! 週末に是非プレイしに来て下さい! あみあみ秋葉原ラジオ会館店は、JR秋葉原駅電気街口を出た所にある「秋葉原ラジオ会館」の4Fです!営業時間は10時~20時まで☆ ご来店お待ちしています♪ #gccx https://t.co/Y3boAcSury
後者
RT @amiamiakihabara: 【秋葉原ラジオ会館店】 ゲームセンターCXオリジナルメダルゲーム「戦え!課長ファイター」好評稼働中! 週末に是非プレイしに来て下さい! あみあみ秋葉原ラジオ会館店は、JR秋葉原駅電気街口を出た所にある「秋葉原ラジオ会館」の4Fです!営業…
結論
ツイートの情報を取得する際にはオリジナルのツイートIDを用いること。もちろんこれはAPI制限に引っかかる可能性が高いのだが、現状そうするしか方法がない。
関連記事
下記の記事中の「取得できない場合」というのは、この記事の内容ではないかと推測しています。
*1:だけじゃなく一般的にかもしれませんが