Magicode logo
Magicode
1
6 min read

Tweepy(Twitter API v2)の基本的な使い方

https://cdn.apollon.ai/media/notebox/blob_r6Ynyj4
今回はTweepy(Twitter API v2)の基本的な使い方について、紹介していこうと思います。 現在Twitter API には、v1とv2の二種類があり今回はv2を使います。Twitter API v2の方は面倒な申請はありません。(その分月の使用量が限られますが)制限などについては別の記事で紹介します。 API keysがある前提で話を進めていきます。 環境は windows 11 21H2 Python : 3.10.1 64-bit Tweepy : 4.5.0 VS code 使用です。 基本的にコードは動くとは思いますが間違ってたらごめんなさい。本当にごめんなさい。 最後に、コードまとめあります。
  1. ライブラリのダウンロードとインストール
python
pip install tweepy
pip install を使います。 たしか、condaにはライブラリがなかった気がします。
python
pip show tweepy
を、実行し
python
#出力
Name: tweepy
Version: 4.5.0
Summary: Twitter library for Python
Home-page: https://www.tweepy.org/
Author: Joshua Roesslein
Author-email: tweepy@googlegroups.com
License: MIT
Location: c:\users\username\appdata\local\programs\python\python310\lib\site-packages
Requires: requests, requests-oauthlib
Required-by:
のように色々出てきたら、インストールできています。
  1. インポート
python
import tweepy
普通にインポートします。
  1. API keysの設定
python
api = tweepy.Client(bearer_token="", consumer_key="", consumer_secret="", access_token="", access_token_secret="",wait_on_rate_limit=True)
#wait_on_rate_limit=True はあってもなくてもいいですが、APIの使用回数が制限に達したときにエラーを返しません。
#が、コードが止まることには変わりません。
API keyをそれぞれぶち込むだけです。 v2はv1よりここが簡単になった、、、というよりは行数が減りました。 ツイートなどをする時は、権限をread and writeに変えておいてください。というか、色々したい時はread and writeらへんの権限が必要になるのでプロジェクト(app)を作ったら権限をread and writeに変えておくことをお勧めします。 なんか色々権限変えたときに、一つのkeyを変えただけじゃ反映されないことがあるので(反映されません)、keyを全部変えといてください。変える方法は、別記事で今度書きます。
  1. ツイート
python
tweet = api.create_tweet(text="Twitterしか勝たん")
#https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by-username-username
" "の中にツイートしたい内容をぶち込んでください。 他にも、色々なパラメーターがあります。 投票とかも設定できます。 テキストだけならこの一行で済みますが、引リツやリツ、画像付きツイートはもうひと手間必要です。手順などは、別記事で解説します。
  1. ユーザーの情報を取得
python
user = api.get_user(username="", user_fields="description,protected,location,name,username,public_metrics,profile_image_url,verified",tweet_fields="id",expansions="pinned_tweet_id")
#usernameだけ必須です なのでuser_fieldsの中とかは要らんやつ省けます よく分らんかったらそろまま言っちゃってください
#description:プロフィール
#protected:鍵垢かどうか
#location:位置
#name:名前
#username:ユーザーネーム(いわゆる@から始まるやつ)
#public_metrics:このオブジェクトの中にフォロワーとかフォロー中とかツイートの数のデータが入ります
#profile_image_url:アイコンの画像のurl
#verified:公式マークがついてるかどうか
#詳しく知りたい方はTwitter APIの公式リファレンスへ(もちろん英語)
#https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by-username-username
一つ注意することがあって、Twitter APIにはidという属性があるのですが、それはいわゆるID,@から始まるやつではありません。上記でのusernameが@から始まるやつです。idはこのリスポンスから取得することができます。 user_fieldsにほしい物ぶっこみます。デフォルトでは、IDとusername(@から始まるやつ)と名前がかえってきます。 tweet_fieldsとexpansions="pinned_tweet_id"は固定ツイートに関するパラメーターです。 tweet_fieldsには固定ツイートに関してほしい情報のクエリを入れてください。 ちなみに、json形式です。ただありがたいことにPythonのdictと同じ形式なのでいろいろいじる必要はありません。
で、そうするとこんな感じのやつがかえってきます。たぶんもっと長いです(公式リファレンスから持ってきたので基本的なやつしか書いてないです)。(print()すると違う感じのものが出てくると思いますが中身はこのような感じです。)
python
{
  "data": {
    "username": "TwitterDev",
    "created_at": "2013-12-14T04:35:55.000Z",
    "pinned_tweet_id": "1255542774432063488",
    "id": "2244994945",
    "name": "Twitter Dev"
  },
  "includes": {
    "tweets": [
      {
        "text": "During these unprecedented times, what’s happening on Twitter can help the world better understand & respond to the pandemic. nnWe're launching a free COVID-19 stream endpoint so qualified devs & researchers can study the public conversation in real-time. https://t.co/BPqMcQzhId",
        "created_at": "2020-04-29T17:01:38.000Z",
        "id": "1255542774432063488"
      }
    ]
  }
}
このままでは、jsonのままなので、データから値を変数に格納します。
python
user_id = user.data.get("id")
pinned_tweet_id = user.includes.get("tweets").get("id")#user.data.get("pinned_tweet_id")も同義 固定ツイートがなかったらエラーなります
こんな感じで他の値も取得できます。
  1. フォロー
今回はフォローしたいターゲットのidを知る必要があります。
python
user = api.get_user(username="Twitter")#@Twitterのuserオブジェクトを取得
user_id = user.data.get("id")#@Twitterのidを変数に格納
api.follow(target_user_id=user_id)#@Twitterをフォロー
何度も言いますが、idは@から始まるやつじゃないです。usernameがそれです。
  1. まとめ
案外こうゆう記事書くの大変なんだなーと思いました。 こうゆうのを書くのは初めてなので、多少雑なのは許してください(笑) 僕なりに分かりやすいように書いたつもりですが、わかりにくいところもたくさんあると思います。 改善していきたいので、コメント、質問などどんどん書いちゃってください! これからも頑張ります。 4/27/2022
  1. コードまとめ
python
import tweepy
api = tweepy.Client(bearer_token="", consumer_key="", consumer_secret="", access_token="", access_token_secret="",wait_on_rate_limit=True)
tweet = api.create_tweet(text="Twitterしか勝たん")
user = api.get_user(username="Twitter", user_fields="description,protected,location,name,username,public_metrics,profile_image_url,verified",tweet_fields="id",expansions="pinned_tweet_id")
pinned_tweet_id = user.includes.get("tweets").get("id")
user = api.get_user(username="Twitter")
user_id = user.data.get("id")
api.follow(target_user_id=user_id)

Discussion

コメントにはログインが必要です。