【Python】tweepy:使用可能回数、残り使用回数、リセットまでの時間をAPI実行時に確認

  • URLをコピーしました!
目次

Twitter API

前回、PythonのTwitter API制御ライブラリtweepyを使って、APIの使用可能回数、残り使用回数、リセットまでの時間を確認してみました。

ただ残念ながら、思ったように使用可能回数、残り使用回数が取得できませんでした。

それはそれとして色々勉強していくと、実は他にもAPIの使用可能回数、残り使用回数、リセットまでの時間を取得する方法があるとのことが分かったので、今回はそのお話です。

ヘッダー情報の取得

前回の方法としてはAPIの認証をした後に、「api.rate_limit_status()」のコマンドを使うことにより、使用回数の情報をひとまとめに取得することができました(正しいかどうかは別として…)。

今回は使用回数の情報を取得するためのコマンドを使用しません。

ではどのように取得するかというと、通常API認証をして、APIのコマンドを実行すると、返ってきた情報のヘッダー部分に使用可能回数、残り回数、リセットまでの時間が記載されているので、その情報を取得するわけです。

しかしながらTweepyを使って、APIのコマンドを実行すると、返してくるデータの中からヘッダー情報を”落として”返してしまうらしいです。

ちなみにヘッダー情報も返すように変更する方法はこちらのサイトで紹介されています。

ただTweepy内部のプログラムを変更する必要があるので、なかなかハードルが高いです。

ということで今回はTweepyを使わずにAPIのコマンド実行時に使用回数に関するデータを取得してみます。

プログラム全体

まずはプログラム全体をお見せします。

from requests_oauthlib import OAuth1Session

query = 'テスト'

consumer_key = ' consumer key '
consumer_secret = ' consumer secret '
access_token = ' access token '
access_token_secret = ' access token secret '

api = OAuth1Session(consumer_key, consumer_secret, access_token, access_token_secret)

url = f'https://api.twitter.com/2/tweets/search/recent?query={query}'

res = session.get(url)

print(res.headers['X-Rate-Limit-Limit'])
print(res.headers['X-Rate-Limit-Remaining'])
print(res.headers['X-Rate-Limit-Reset'])

まずインポートするのはtweepyではなく、「from requests_oauthlib import OAuth1Session」です。

これはOAuth認証のためのライブラリらしいです。

Tweepyを使わないので、Twitter APIに接続するために、それに代わる認証が必要なわけです。

それが「OAuth1Session」なのです。

そして接続方法がこちら。

api = OAuth1Session(consumer_key, consumer_secret, access_token, access_token_secret)

そして実際にAPIのコマンドを実行する方法がこちら。

今回は特定のワードを含む検索をして、その際の使用回数の情報を取得してみます。

url = f'https://api.twitter.com/2/tweets/search/recent?query={query}'

res = session.get(url)

プログラムの最初の方に「query = ‘テスト’」がありますが、これが検索するワードになります。

そしてurlが実際にAPIで情報を取得するためのアドレスです。

他のAPIのURLは公式サイトをご覧ください。

このようにURLに検索するための情報を詰め込んで、URLにアクセスし、返ってきた情報を取得するのはOpen Weather Mapのときでもやっているので、良かったらこちらの記事もどうぞ。

そして最後に返ってきた情報から、使用可能回数、残り回数、リセットまでの時間の情報を抽出・表示しているのがこちらです。

print(res.headers['X-Rate-Limit-Limit'])
print(res.headers['X-Rate-Limit-Remaining'])
print(res.headers['X-Rate-Limit-Reset'])

これで実際に実行してみるとこんな感じでデータが得られます。

実行結果
180
179
1636658868

最初が使用可能回数、2つ目が残り回数、最後がリセットまでの時間(エポック秒)です。

つまりこのAPIのコマンドを1回使用したということが分かります。

ちなみにこちらの方法なら正しい回数が取得できるようです。

ただこの方法はTweepyでは使用できないため、Tweepyを使わずにTwitter APIを使うことを再度勉強する必要があります。

また前回の「api.rate_limit_status()」とは異なり、API全体の使用回数の情報を取得することはできません。

ということで、APIの使用回数の情報を取得するにはどうしたらいいのかもう少し考えてみたいと思います。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次