結論
Tweetオブジェクトの uris
メソッドを用いた戻り値*1の要素に対してさらに url
メソッドを用いる。
具体例
以下のツイートを例とします。
【イベントレポート】Intel、最大5GHz達成のCore i7-8086Kを6月8日から発売... (71 users) https://t.co/PUbnmOle1K 21件のコメント https://t.co/xJ8hjzicJ9 pic.twitter.com/DN9FBqep2w
— はてなブックマーク::Hotentry (@hatebu) 2018年6月5日
上記のツイートには 2つ の URL が埋め込まれています。それぞれの URL を t.co
形式で取得します。
まずは Tweetオブジェクト を取得する
まずは上記のツイートを Twitter::Tweet
のオブジェクトとして取得します。以下のようになります。
client = Twitter::REST::Client.new do |config| config.consumer_key = "YOUR_CONSUMER_KEY" config.consumer_secret = "YOUR_CONSUMER_SECRET" config.access_token = "YOUR_ACCESS_TOKEN" config.access_token_secret = "YOUR_ACCESS_SECRET" end tweet_obj = client.status(1004056787513774081)
ツイートに埋め込まれている URI を配列で取得する
次に、取得できた tweet_obj
が持つ uris
メソッドを用います。戻り値は配列です。戻り値は具体的にはツイートに埋め込まれている URI の集合です。
embedded_uris = tweet_obj.uris #=> Array
取得した配列の要素に url メソッドを適用する
上記の embedded_uris
という配列の要素数はここでは 2 です。ツイートに埋め込まれている URI の数になります。
あとはそれぞれの配列の要素に対して url
メソッドを用いれば、t.co
形式でリンクの URL が返ってきます*2。
puts embedded_uris[0].url #=> https://t.co/PUbnmOle1K puts embedded_uris[1].url #=> https://t.co/eMCtCN9bbD
補足
「ツイートに URL が埋め込まれているか否か」を調べるためには Tweetオブジェクト に対して uris?
メソッドを用いればよいです。