メモってこ!

IT関連系のあれやこれ

Tweepy(TwitterAPI V2.0)の利用方法について

  • 書いたきっかけ
  • Tweepy(TwitterAPI v2)とは

  • 前提事項
  • 使い方
  • コード例
  • そのほか

 

■書いたきっかけ

とあるポイ活系サイト巡回中に懸賞botの作成記事があり、自動化で懸賞bot作れるのであればぜひやりたいというのがきっかけ(2022/11~)。

ただ現時点での開始だとTwitterAPIは2.0に指定されており、2.0の記事にあまり出会えなくてドツボにはまったことによる。

※2月上旬にAPI有料化のお知らせが出たときは焦った

 

■Tweepy(TwitterAPI v2)とは

Twitterが提供しているAPIの一種。Pythonライブラリ。

Tweepyで検索するとv1.0のほうが上位に来る。

現時点でtwitterの開発ポータル開設した人は、v2.0の使用に制限される。

 

※XXX.OAuthHandlerの記述があればv1.0

 

■前提事項

Twitterの開発ポータルを開いたのは2022/11あたり。

開発ポータルの権限はEssential。

python初心者。

つぶやき方法は検索したら出たので、本記事はbot作成時に使用した項目のみ記載。

 

■使い方

以下リファレンス。

tweepy.mkuriki.com

 

TwitterAPIv2.0では上記リファレンスに載ってないことは、TwitterAPIの一覧に載っている関数の使用ができない。

また、負担軽減の観点からか、v2.0では取得件数もだいぶ制限される。

利用したい関数を上記リファレンスから探し、関数を検索エンジンで検索して、開発ポータルのリファレンスに飛び、両方とも参照するのがおすすめ。

 

〇検索

検索メソッドは2種あるが、Client.search_all_tweets()関数は、Essentialでは使用できない。使用できるのは1種である。

Client.search_recent_tweets(query*user_auth=Falseend_timeexpansionsmax_resultsmedia_fieldsnext_tokenplace_fieldspoll_fieldssince_idstart_timetweet_fieldsuntil_iduser_fields)

引用:https://tweepy.mkuriki.com/client.html#tweepy.Client.search_recent_tweets

関数名の通り最近のツイートから検索する関数。

第一引数queryが必須で、他はoptional。json形式で返却されてくる。

queryには検索キーワードを入力する。

v1.0だと自分がツイート済みかどうかの引数があるそうだが、上にはなさそうである。

optional項目に指定してやることで、取得結果内容が増える。

例:ツイートしたアカウントのidを取得したい → 引数にexpansions  ='author_id'を指定する

 

pythonだと当然なのか、一部引数のリファレンスはままだと使用ができない。

引数として使用できないという場合はアンダースコアに変えてみるとよい。

例:tweet.fields → tweet_fields

 

developer.twitter.com

 

・第一引数:queryについて

検索の第一引数内容によって、検索したい内容を指定することが可能。

文字制限があるのがネックだが、結構自由に条件指定が可能。

 

developer.twitter.com

 

 

リツイート

Client.retweet(tweet_id)

引用:https://tweepy.mkuriki.com/client.html#tweepy.Client.retweet

 

ツイートごとに割り振られているID(ツイートID)を引数にリツイート実行を行う関数。search_recent_tweetsと組み合わせれば、取得してきた特定条件を含むツイートをリツイートする、といったことが可能。

 

■コード例

client = tweepy.Client(
        bearer_token = '*****', #bearer_tokenないとAPI情報の読み取りができない
        consumer_key = '****',
        consumer_secret = '*****',
        access_token = '1595303721772101632-J4UHewLEyaJ399no7MgZveS2rSCO1B',
        access_token_secret = '****'
        )
 
my_user_id = client.get_user(username = '@から始まるid(id抜き)')[0]['id']

 

 

■そのほか

API実行エラーが出る

→tweepyのバージョン古くないか

pythonインタプリタモードで実行してないか(>>が先頭につくのはインタプリタモード。cmdで開けば普通にpyファイルを実行するだけ)

デベロッパーアカウントの権限は大丈夫か(読み取りのみになってないか)

→権限外の関数を使用しようとしてないか