twitter APIで取得したツイート画像はフルサイズとリサイズ情報しかないが、実際各サイズの画像URLの取得方法を調べてみた。

ツイッターのAPIから取得したツイートに、画像情報はentities.mediaという配列に入っているが、配列の要素はMedia Objectという下記のようなJSONフォーマット:

{
    "type": "photo",
    "sizes": {
        "thumb": {
            "h": 150,
            "resize": "crop",
            "w": 150
        },
        "large": {
            "h": 238,
            "resize": "fit",
            "w": 226
        },
        "medium": {
            "h": 238,
            "resize": "fit",
            "w": 226
        },
        "small": {
            "h": 238,
            "resize": "fit",
            "w": 226
        }
    },
    "indices": [
        15,
        35
    ],
    "url": "http://t.co/rJC5Pxsu",
    "media_url": "http://p.twimg.com/AZVLmp-CIAAbkyy.jpg",
    "display_url": "pic.twitter.com/rJC5Pxsu",
    "id": 1.1408049304097e+17,
    "id_str": "114080493040967680",
    "expanded_url": "http://twitter.com/yunorno/status/114080493036773378/photo/1",
    "media_url_https": "https://p.twimg.com/AZVLmp-CIAAbkyy.jpg"
}

Media Objectの詳細は公式ドキュメントに記載されている:https://developer.twitter.com/en/docs/tweets/data-dictionary/overview/entities-object#media

media_urlmedia_url_httpsはフルサイズの画像URLで、各サイズのURLは下記のフォーマットで取得できる:

<フルサイズ画像URL>:<サイズ名>

例えば、https://p.twimg.com/AZVLmp-CIAAbkyy.jpgthumbサイズの画像URLはhttps://p.twimg.com/AZVLmp-CIAAbkyy.jpg:thumbとなる。

サイズ名はsizesというハッシュマップのキーである

ソース:https://stackoverflow.com/questions/45757649/how-to-download-different-sizes-of-an-image-from-twitter