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)