twitterのjsonファイル眺めてみた。複数枚の画像URLの保存先

#記事が見つからない
画像のURLを取得する際に、複数枚画像があった際それぞれのURLを取得する記事が見つからなかったので、諦めてjson眺めてみました。
今回は画像つきのツイートを参考にしたので動画など画像以外のことはわかりません。

<details><summary>旧リスト※あまり見る意味はないです</summary><div>

| key | value | 使いみち |
|:-:|:-:|:-------:|
| created_at  |Thu Apr 23 09:53:23 +0000 2020|投稿した時間|
|id|1253260671044616192|投稿id|
|text|画像取得テスト用（複数枚）|投稿内容|
|entities|'hashtags','symbols',などなど|画像の情報がなどが入っているが、`extended_entities`の方に全てあるので存在意義は謎。|
|media_url|'http://pbs.twimg.com/media/EWR529vUMAMnBuK.png'|httpの画像URL|
|media_url_https|'https://pbs.twimg.com/media/EWR529vUMAMnBuK.png'|httpsの画像URL|
|extended_entities|   |追加のEntities。画像や動画の詳細データが入っている|
|type|'photo'|アップロードされたメディアの種類。|

</div></details>

#取得したツイートデータ

```txt:取得したツイートデータ
{
'created_at':ツイートした時間
'id':ツイートの固有id
'id_str':ツイートの固有id(上と同じ値)
'text':ツイート内容
'truncated':#わからない
'entities':{ツイートに含まれるエンティティ(後述)}
'extended_entities': {画像や動画などの情報が含まれる(後述)}
'source': '<a href="https://mobile.twitter.com" rel="nofollow">Twitter Web App</a>' #使用用途がわからない
'in_reply_to_status_id': None #取得できてないのでわからない
'in_reply_to_status_id_str': None #取得できてないのでわからない
'in_reply_to_user_id': None #取得できてないのでわからない
'in_reply_to_user_id_str': None #取得できてないのでわからない
'in_reply_to_screen_name': None #取得できてないのでわからない
'user':{ツイートしたユーザーのデータが含まれる(後述)}
'geo': None #取得できてないのでわからない
'coordinates': None #取得できてないのでわからない
'place': None #取得できてないのでわからない
'contributors': None #取得できてないのでわからない
'is_quote_status': False #取得できてないのでわからない
'retweet_count': #リツイートの数
'favorite_count': #フォバ(ハート)の数
'favorited': False #取得できてないのでわからない
'retweeted': False #取得できてないのでわからない
'possibly_sensitive': False #取得できてないのでわからない
'lang': 'ja' #ツイートした際の言語
}
```

#entities

```txt:'entities'
{
'hashtags': []
'symbols': []
'user_mentions': []
'urls': []
'media': [
#ここから下はmediaの中の内容
{'id': #メディアの固有id
'id_str': #メディアの固有id(上と同じ値)
'indices': [14,37]#ここの値は何に使っているかわからない
'media_url':#画像や動画のURL(http)
'media_url_https':#画像や動画のURL(https)
'url': #短縮URLツイートへの(https)
'display_url': #謎の短縮URl(pic.twitter.com/*****)(ツイートにリダイレクトする)
'expanded_url':#画像を拡大表示する際のURL
#ここから下はわからない
'type': 'photo'
'sizes': {'small': {'w': 510,'h': 680,'resize': 'fit'}
'medium': {'w': 535,'h': 713,'resize': 'fit'}
'large': {'w': 535,'h': 713,'resize': 'fit'}
'thumb': {'w': 150,'h': 150,'resize': 'crop'}}}
]
}
```

#extended_entities

```txt:extended_entities
{
'media': [
{'id': #メディアの固有id
'id_str': #メディアの固有id(上と同じ値)
'indices': [14,37]#ここの値は何に使っているかわからない
'media_url':#画像や動画のURL(http)
'media_url_https':#画像や動画のURL(https)
'url': #短縮URLツイートへの(https)
'display_url': #謎の短縮URl(pic.twitter.com/*****)(ツイートにリダイレクトする)
'expanded_url':#画像を拡大表示する際のURL
#ここから下はわからない
'type': 'photo'
'sizes': {'small': {'w': 510,'h': 680,'resize': 'fit'}
'medium': {'w': 535,'h': 713,'resize': 'fit'}
'large': {'w': 535,'h': 713,'resize': 'fit'}
'thumb': {'w': 150,'h': 150,'resize': 'crop'}}}
]}
]
}
```

#extended_entities(複数枚時)
画像などが複数枚ある場合は{}が増え、[]の中に追加される

```txt:extended_entities(複数枚時)
{
'media': [
{'id': #メディアの固有id
'id_str': #メディアの固有id(上と同じ値)
'indices': [14,37]#ここの値は何に使っているかわからない
'media_url':#画像や動画のURL(http)
'media_url_https':#画像や動画のURL(https)
'url': #短縮URLツイートへの(https)
'display_url': #謎の短縮URl(pic.twitter.com/*****)(ツイートにリダイレクトする)
'expanded_url':#画像を拡大表示する際のURL
#ここから下はわからない
'type': 'photo'
'sizes': {'small': {'w': 510,'h': 680,'resize': 'fit'}
'medium': {'w': 535,'h': 713,'resize': 'fit'}
'large': {'w': 535,'h': 713,'resize': 'fit'}
'thumb': {'w': 150,'h': 150,'resize': 'crop'}}}
]}
{'id': #メディアの固有id
'id_str': #メディアの固有id(上と同じ値)
'indices': [14,37]#ここの値は何に使っているかわからない
'media_url':#画像や動画のURL(http)
'media_url_https':#画像や動画のURL(https)
'url': #短縮URLツイートへの(https)
'display_url': #謎の短縮URl(pic.twitter.com/*****)(ツイートにリダイレクトする)
'expanded_url':#画像を拡大表示する際のURL
#ここから下はわからない
'type': 'photo'
'sizes': {'small': {'w': 510,'h': 680,'resize': 'fit'}
'medium': {'w': 535,'h': 713,'resize': 'fit'}
'large': {'w': 535,'h': 713,'resize': 'fit'}
'thumb': {'w': 150,'h': 150,'resize': 'crop'}}}
]}
{'id': #メディアの固有id
'id_str': #メディアの固有id(上と同じ値)
'indices': [14,37]#ここの値は何に使っているかわからない
'media_url':#画像や動画のURL(http)
'media_url_https':#画像や動画のURL(https)
'url': #短縮URLツイートへの(https)
'display_url': #謎の短縮URl(pic.twitter.com/*****)(ツイートにリダイレクトする)
'expanded_url':#画像を拡大表示する際のURL
#ここから下はわからない
'type': 'photo'
'sizes': {'small': {'w': 510,'h': 680,'resize': 'fit'}
'medium': {'w': 535,'h': 713,'resize': 'fit'}
'large': {'w': 535,'h': 713,'resize': 'fit'}
'thumb': {'w': 150,'h': 150,'resize': 'crop'}}}
]}
{'id': #メディアの固有id
'id_str': #メディアの固有id(上と同じ値)
'indices': [14,37]#ここの値は何に使っているかわからない
'media_url':#画像や動画のURL(http)
'media_url_https':#画像や動画のURL(https)
'url': #短縮URLツイートへの(https)
'display_url': #謎の短縮URl(pic.twitter.com/*****)(ツイートにリダイレクトする)
'expanded_url':#画像を拡大表示する際のURL
#ここから下はわからない
'type': 'photo'
'sizes': {'small': {'w': 510,'h': 680,'resize': 'fit'}
'medium': {'w': 535,'h': 713,'resize': 'fit'}
'large': {'w': 535,'h': 713,'resize': 'fit'}
'thumb': {'w': 150,'h': 150,'resize': 'crop'}}}
]}]
}
```

#user

正直使わなかったので調べてない

```txt:user
'user': {'id': #ユーザー固有id
'id_str': #ユーザー固有id(上と同じ値)
'name': #ユーザーネーム
'scr een_name': #@から始まるユーザーid
'location':#住んでいる場所
'description:#ユーザー説明欄
'url': #ユーザーの設定してるwebサイト
'entities': #ユーザーのプロフィールに含まれるURL
{'description': {'urls': [{'url': #twitterによる短縮URL(https)
'expanded_url': #リンク先
'display_url': #実際に表示されている文字
'indices': [6,29]#わからない
}]}}
'protected': False
'followers_count': #フォロワー数
'friends_count': #フォロー数
'listed_count': #なんのリストかわからない
'created_at': #ツイッターの開始日
'favourites_count': #フォバ(ハート)をした数
'utc_offset': #わからない
'time_zone': #わからない
'geo_enabled': #わからない
'verified': #わからない
'statuses_count': #わからない
'lang': #わからない
'contributors_enabled': #わからない
'is_translator': #わからない
'is_translation_enabled': #わからない
'profile_background_color': #わからない
'profile_background_image_url': #わからない
'profile_background_image_url_https': #わからない
'profile_background_tile': #わからない
'profile_image_url': #アイコン画像url(http)
'profile_image_url_https': #アイコン画像url(https)
'profile_banner_url': #ヘッダー画像のurl
'profile_link_color': #わからない
'profile_sidebar_border_color': #わからない
'profile_sidebar_fill_color': #わからない
'profile_text_color': #わからない
'profile_use_background_image': #ヘッダーに画像があるか
'has_extended_profile': #わからない
'default_profile': #わからない
'default_profile_image': #わからない
'following': #わからない
'follow_request_sent': #わからない
'notifications': #わからない
'translator_type': #わからない}
```

#結局どうなったの?
複数枚の画像の場合
`['extended_entities']→['media']→[画像の番号]→['media_url']`
のように指定すると画像のURLが取得できます。
`media`をlenで回すのがいいと思う。



<details><summary>サンプルjson</summary><div>
「,」(カンマ)で改行してあります。

```json:twitter
{'created_at': 'Thu Apr 23 09:53:23 +0000 2020'
 'id': 1253260671044616192
 'id_str': '1253260671044616192'
 'text': '画像取得テスト用（複数枚） https://t.co/Z8agNBIfI1'
 'truncated': False
 'entities': {'hashtags': []
 'symbols': []
 'user_mentions': []
 'urls': []
 'media': [{'id': 1253260581508755459
 'id_str': '1253260581508755459'
 'indices': [14
 37]
 'media_url': 'http://pbs.twimg.com/media/EWR529vUMAMnBuK.png'
 'media_url_https': 'https://pbs.twimg.com/media/EWR529vUMAMnBuK.png'
 'url': 'https://t.co/Z8agNBIfI1'
 'display_url': 'pic.twitter.com/Z8agNBIfI1'
 'expanded_url': 'https://twitter.com/_tomoi/status/1253260671044616192/photo/1'
 'type': 'photo'
 'sizes': {'small': {'w': 510
 'h': 680
 'resize': 'fit'}
 'medium': {'w': 535
 'h': 713
 'resize': 'fit'}
 'large': {'w': 535
 'h': 713
 'resize': 'fit'}
 'thumb': {'w': 150
 'h': 150
 'resize': 'crop'}}}]}
 'extended_entities': {'media': [{'id': 1253260581508755459
 'id_str': '1253260581508755459'
 'indices': [14
 37]
 'media_url': 'http://pbs.twimg.com/media/EWR529vUMAMnBuK.png'
 'media_url_https': 'https://pbs.twimg.com/media/EWR529vUMAMnBuK.png'
 'url': 'https://t.co/Z8agNBIfI1'
 'display_url': 'pic.twitter.com/Z8agNBIfI1'
 'expanded_url': 'https://twitter.com/_tomoi/status/1253260671044616192/photo/1'
 'type': 'photo'
 'sizes': {'small': {'w': 510
 'h': 680
 'resize': 'fit'}
 'medium': {'w': 535
 'h': 
    713
 'resize': 'fit'}
 'large': {'w': 535
 'h': 713
 'resize': 'fit'}
 'thumb': {'w': 150
 'h': 150
 'resize': 'crop'}}}
 {'id': 1253260602992021504
 'id_str': '1253260602992021504'
 'indices': [14
 37]
 'media_url': 'http://pbs.twimg.com/media/EWR54NxU0AACEcv.png'
 'media_url_https': 'https://pbs.twimg.com/media/EWR54NxU0AACEcv.png'
 'url': 'https://t.co/Z8agNBIfI1'
 'display_url': 'pic.twitter.com/Z8agNBIfI1'
 'expanded_url': 'https://twitter.com/_tomoi/status/1253260671044616192/photo/1'
 'type': 'photo'
 'sizes': {'large': {'w': 535
 'h': 713
 'resize': 'fit'}
 'small': {'w': 510
 'h': 680
 'resize': 'fit'}
 'thumb': {'w': 150
 'h': 150
 'resize': 'crop'}
 'medium': {'w': 535
 'h': 713
 'resize': 'fit'}}}
 {'id': 1253260618842304513
 'id_str': '1253260618842304513'
 'indices': [14
 37]
 'media_url': 'http://pbs.twimg.com/media/EWR55I0U8AEG5uD.png'
 'media_url_https': 'https://pbs.twimg.com/media/EWR55I0U8AEG5uD.png'
 'url': 'https://t.co/Z8agNBIfI1'
 'display_url': 'pic.twitter.com/Z8agNBIfI1'
 'expanded_url': 'https://twitter.com/_tomoi/status/1253260671044616192/photo/1'
 'type': 'photo'
 'sizes': {'small': {'w': 510
 'h': 680
 'resize': 'fit'}
 'medium': {'w': 535
 'h': 713
 'resize': 'fit'}
 'large': {'w': 535
 'h': 713
 'resize': 'fit'}
 'thumb': {'w': 150
 'h': 150
 'resize': 'crop'}}}
 {'id': 1253260634424094720
 'id_str': '1253260634424094720'
 'indices': [14
 37]
 'media_url': 'http://pbs.twimg.com/media/EWR56C3UMAAK0tL.png'
 'media_url_https': 'https://pbs.twimg.com/media/EWR56C3UMAAK0tL.png'
 'url': 
    'https://t.co/Z8agNBIfI1'
 'display_url': 'pic.twitter.com/Z8agNBIfI1'
 'expanded_url': 'https://twitter.com/_tomoi/status/1253260671044616192/photo/1'
 'type': 'photo'
 'sizes': {'medium': {'w': 535
 'h': 713
 'resize': 'fit'}
 'large': {'w': 535
 'h': 713
 'resize': 'fit'}
 'small': {'w': 510
 'h': 680
 'resize': 'fit'}
 'thumb': {'w': 150
 'h': 150
 'resize': 'crop'}}}]}
 'source': '<a href="https://mobile.twitter.com" rel="nofollow">Twitter Web App</a>'
 'in_reply_to_status_id': None
 'in_reply_to_status_id_str': None
 'in_reply_to_user_id': None
 'in_reply_to_user_id_str': None
 'in_reply_to_screen_name': None
 'user': {'id': 1092170420906733568
 'id_str': '1092170420906733568'
 'name': 'tomoi🌧'
 'scr een_name': '_tomoi'
 'location': '大宮'
 'description
    : '#N高 ( https://t.co/hdVu8AHFPo )通学コース3期生、大宮校1期生\nアイコンは@ChinoMaron先生のイラストをお借りしてます(宣伝)\nたまに上げてるやつ▶ #tomoi進捗
    '
 'url': None
 'entities': {'description': {'urls': [{'url': 'https://t.co/hdVu8AHFPo'
 'expanded_url': 'http://nnn.ed.jp'
 'display_url': 'nnn.ed.jp'
 'indices': [6
 29]}]}}
 'protected': False
 'followers_count': 167
 'friends_count': 387
 'listed_count': 3
 'created_at': 'Sun Feb 03 21:18:14 +0000 2019'
 'favourites_count': 7800
 'utc_offset': None
 'time_zone': None
 'geo_enabled': False
 'verified': False
 'statuses_count': 1205
 'lang': None
 'contributors_enabled': False
 'is_translator': False
 'is_translation_enabled': False
 'profile_background_color': 'F5F8FA'
 'profile_background_image_url': None
 'profile_background_image_url_https': None
 'profile_background_tile': False
 'profile_image_url': 'http://pbs.twimg.com/profile_images/1092176174711681024/swswyoOT_normal.jpg'
 'profile_image_url_https': 'https://pbs.twimg.com/profile_images/1092176174711681024/swswyoOT_normal.jpg'
 'profile_banner_url': 'https://pbs.twimg.com/profile_banners/1092170420906733568/1550315898'
 'profile_link_color': '1DA1F2'
 'profile_sidebar_border_color': 'C0DEED'
 'profile_sidebar_fill_color': 'DDEEF6'
 'profile_text_color': '333333'
 'profile_use_background_image': True
 'has_extended_profile': True
 'default_profile': True
 'default_profile_image': False
 'following': False
 'follow_request_sent': False
 'notifications': False
 'translator_type': 'none'}
 'geo': None
 'coordinates': None
 'place': None
 'contributors': None
 'is_quote_status': False
 'retweet_count': 0
 'favorite_count': 4
 'favorited': False
 'retweeted': False
 'possibly_sensitive': False
 'lang': 'ja'}
```

</div></details>
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">画像取得テスト用（複数枚） <a href="https://t.co/Z8agNBIfI1">pic.twitter.com/Z8agNBIfI1</a></p>&mdash; tomoi🌧 (@_tomoi) <a href="https://twitter.com/_tomoi/status/1253260671044616192?ref_src=twsrc%5Etfw">April 23, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>