Python で副業(?) Twitter API を使ってみる 〜その2:OAuth 2.0 で Twitter API curl で取得〜

IT

OAuth 2.0 で Twitter API を使う手順はとても簡単なのでサクッといきましょう。
使用するのは「Search Tweets」という、ツイートを検索する API です。
いつも通り、先ずは curl コマンドを用いて動作を確認し、続いて Python でも動作確認するようにします。

curl コマンドで利用する

ヘッダ「Docs」→「API reference index」をクリックします。
Developer Platform、Developer Portal どちらの画面からでも大丈夫です。

「Docs」→「API reference index」をクリックする様子
「Docs」→「API reference index」をクリックする様子

小さくなってしまいました。申し訳ありません。
どちらも遷移先は同じです。

Twitter API v2 で利用できる API の一覧が表示されますので、下にスクロールして目的の「Search Tweets」の項目を探して下さい。”recent” の方を選択します。
※ “all” の方は研究用に承認された人用です

Twitter API v2 の「Search Tweets」から “recent” をクリックする様子

どの API についても以下 5 個のタブで構成されております。

[Introduction]: 対象 API の概要が記載されています。
[Quick start]: Postman というツールを使って API を使用する際の手順が記載されています。その他、サンプルプログラムがアップロードされている Github リポジトリのページへのリンクもあります。
[Integrate]: 対象 API を使用する際に知っておくべき条件や概念について記載されています。
[Migrate]: v1.1 → v2.0 の変更点について記載されています。
[API Reference]: API で利用可能なパラメータや、項目ごとの詳細な説明が記載されています。

Postman はスゴく便利なツールです!
機会があれば是非、挑戦してみて下さい!

「API reference」タブを確認してみましょう。すると OAuth 2.0 が使えることや、この章の目標としている curl コマンドの例まで記載されていることが確認できるはずです。

「API reference」タブを確認している様子

ページで記載されている curl コマンドは「BEARER_TOKEN」という変数を使用してトークン情報を取得することを前提としています。そのため、先ずはその変数を設定する必要があります。
この後確認する Python のサンプルプログラムでは “環境変数” からトークン情報を取得する前提となっているため、ここでは、どちらにも対応できるよう “環境変数” として定義しましょう。

“環境変数” の定義は、Windows と Max / Linux で異なります。ご自身の環境に合わせて下記のプログラムを実行して下さい。Windows でも Git Bash を導入していて、その Bash 上で動かす場合は Max / Linux 側をご使用下さい。
どちらもイコール「=」の前後にスペースは含めないでください。

Windows の場合 ※コマンドプロンプトで実行

set BEARER_TOKEN=XXXXXXXXX...xxxxxxXxxxXXxxxXxXxX

curl "https://api.twitter.com/2/tweets/search/recent?query=from%3Atwitterdev%20new%20-is%3Aretweet&max_results=10" -H "Authorization: Bearer %BEARER_TOKEN%"

Max / Linux、または Windows でも Git Bash を使用する場合 ※端末(ターミナル)で実行

export BEARER_TOKEN=XXXXXXXXX...xxxxxxXxxxXXxxxXxXxX

curl "https://api.twitter.com/2/tweets/search/recent?query=from%3Atwitterdev%20new%20-is%3Aretweet&max_results=10" -H "Authorization: Bearer $BEARER_TOKEN"

ただし、私の環境(Emacs 上の shell)では、正しく動かなかったので url の両端をダブルクオーテーション「"」で括りました。
※ cURL (optional fields) の方は両端をダブルクオーテーション「”」で括られているので、記載漏れかなと思います。

curl コマンドを用いて Twitter API 経由でツイートを取得した様子

取得できました!

自分のツイートを取得してみる

次はコマンドを少し変更して、自分のツイートを取得してみましょう。
関係ないですが、背景画像も東京の写真です。

自分の ID とツイートを確認

確認した ID を使って「query=from:」の後ろを書き換えます。

さらに、ここで「--data-urnencode」オプションを使うように修正します。そうすることで URL エンコードされる前の値を指定できますし、復数の値を分けて指定することも可能になります!
curl コマンドを使用する場合は、是非、知っておきたいオプションです!!

curl -G \
"https://api.twitter.com/2/tweets/search/recent" \
--data-urlencode "query=from:mxkLlrpl4qNvH5i -is:retweet" \
--data-urlencode "max_results=10" \
-H "Authorization: Bearer $BEARER_TOKEN" \
| python -c 'from sys import stdin; import json; print(json.dumps(json.loads(stdin.readline()), indent=2, ensure_ascii=False))'

さらにさらに、「\」でコマンドを複数行にわけ、Python も使って整形しちゃいます!

これも取得できました!

「API Reference」のページで確認したように、他にも色んなパラメータを指定できます。「--data-urlencode」オプションを用いれば手軽に設定できますので、是非、色々試してみて下さい。
query オプションについては、「Integrate」タブ→「Building search queries」→「how to build a query」ページに(英語ですが)細かく載っております。こちらもお時間がある時に確認してみて下さい。

「Integrate」→「Building search queries」→「how to build a query」を確認する様子

次回は、Python を使って同じ様にツイートを取得してみましょう!

コメント

タイトルとURLをコピーしました