Twitter の API で取得できる media(画像)の URL は原寸大画像を示してはいない

結論

たとえば、API で取得できる media_url_httpshttps://pbs.twimg.com/media/FAlJ_JsUUAAgOSq.jpg であったとします。この URL に wget をしても原寸大画像は得られません*1

常に原寸大画像を取得するためには https://pbs.twimg.com/media/FAlJ_JsUUAAgOSq?format=jpg&name=orig のようにします。つまり media_url_https に対して以下の処理を施します。

  • 拡張子を取り除く(ドットを含む)
  • パラメータとして以下の2つを付与する
    • format=拡張子(ドット不要)
      • たとえば format=jpg
    • name=orig

Ruby でこの処理を行うスクリプト例は以下のとおりです。

url = 'https://pbs.twimg.com/media/FAlJ_JsUUAAgOSq.jpg'
extension_including_dot = File.extname(url)
extension_without_dot = extension_including_dot[1..]
url_without_extension = url.gsub(extension_including_dot, '')

"#{url_without_extension}?format=#{extension_without_dot}&name=orig" #=> "https://pbs.twimg.com/media/FAlJ_JsUUAAgOSq?format=jpg&name=orig"

*1:ただし、元画像のサイズが一定以下ならば原寸大画像となる

Powered by はてなブログ