DEV Community

kaede
kaede

Posted on

Twitter API Part 2 -- Postman を使って Twitter API で tweet.fields の created_at,attachments を取得する。

why

https://developer.twitter.com/en/docs/tutorials/postman-getting-started

この公式doc の postman チュートリアルによると

Postman を使うと

  • エンドポイントの URL
  • 自分の Bearer Token
  • tweet.fields や expansions などの追加情報

これらをファイル(ワークスペース?)として保存して置けるらしい。


Postman で Twitter API v2 のワークスペースを保存

まず、上部のURL の画面に

https://api.twitter.com/2/tweets/20?expansions=author_id 
Enter fullscreen mode Exit fullscreen mode

前回使った URL を入れる。

Image description

すると ? クエリで追加されている expansions が Params のタブに追加されている。

Image description

次に Auth タブから Type で Bearer Token を選択。
Token の入力欄に 自分の Bearer Token を入力する。

Image description

これで実行できることを確認して

Image description

Twitter API v2 として保存する。


Params で tweet.fields に created_at,attachments を追加する

Image description

Params タブの GUI のテーブルに
KEY に tweet.fields を入れて
VALUE に created_at,attachments を追加する

https://api.twitter.com/2/tweets/ 1528004049932816384 ?expansions=author_id &tweet.fields=created_at,attachments 
Enter fullscreen mode Exit fullscreen mode

すると & で URL にも
今追加した tweet.fields のパラメータが追加される。


attachments と created_at を入れた状態で実行する

4 枚の犬の画像でテストする

{ "data": { "attachments": { "media_keys": [ "3_1528004043674898432", "3_1528004043649732608", "3_1528004043637149696", "3_1528004044899635200" ] }, "author_id": "2669426204", "id": "1528004049932816384", "text": "すくすく育っとるな〜 https://t.co/OB0LAKtKwA", "created_at": "2022-05-21T13:25:29.000Z" }, "includes": { "users": [ { "id": "2669426204", "name": "ハマジ", "username": "xxhama2" } ] } } 
Enter fullscreen mode Exit fullscreen mode

attachments の中に media_keys が入っていて
その中に 写真の内部ID ?が 4 つ入っている。

また、id や text に並列で created_at も取得できた。

ただ、この後 media_keys から画像をどうやって表示するかは不明。


python で media_key から photo_url を取得しているサンプルを見てみる

https://gist.github.com/msakamoto-sf/356b986d26878ba803d1e00146f218f1

この画像保存の gist コードを見ると

 media_key_to_photo_urls = {} medias = response.includes['media'] for media in medias: media_key = media.media_key media_type = media.type media_url = media.url if hasattr(media, 'url') else '' #print(f'===>> key={media_key}, type={media_type}, url={media_url}')  if media_url: media_key_to_photo_urls[media_key] = media_url 
Enter fullscreen mode Exit fullscreen mode
  • お馴染みの メディアの ID となる media_key
  • replied_to などが入る? type
  • entities.urls.url のことだと推測される url

これらを

media_key_to_photo_urls オブジェクトの
media_key の名前の key で
media_url の value を入れてまとめて、そこから tweetpy で引っ張っているらしい。詳細はわからなかった。

Youtube などで調べても python のサンプルばかりだった。


まとめ

Postman を使うと

  • エンドポイントの URL
  • GET/POST/PUT/DELETE の HTTP メソッド名
  • トークン情報
  • クエリの key: value

これらをワークスペースとして保存することができる。

また、クエリパラメータの tweet.fileds として

  • created_at
  • attachments

これらを指定すると
作成日と写真ID と予想される media_keys を取得できる。

しかし、画像自体を取得する方法はわからなかった。

表の URL のように /photos/1 などで取得できるのだろうか?

Top comments (0)