Tweepy
前回、Twitter APIを使用するため、Twitter Developersに登録して、API keyなど必要なキーの取得を行いました。

今回はTwitter APIをPythonで制御するためのライブラリ「Tweepy」のインストールと初期設定をしていきましょう。
そして今回の最後には実際にTweepy→Twitter API→Twitterという連携でつぶやいてみたいと思います。
ということで始めていきましょう。
AnacondaへのTweepyのインストール
AnacondaへのTweepyのインストールは、Jupyter notebookのセルに
pip install tweepy
とするだけでインストールできます。
試してみるとこんな感じです。
pip install tweepy
実行結果
Collecting tweepy
Downloading tweepy-3.10.0-py2.py3-none-any.whl (30 kB)
Requirement already satisfied: six>=1.10.0 in /opt/anaconda3/lib/python3.7/site-packages (from tweepy) (1.15.0)
Requirement already satisfied: requests[socks]>=2.11.1 in /opt/anaconda3/lib/python3.7/site-packages (from tweepy) (2.24.0)
Collecting requests-oauthlib>=0.7.0
Downloading requests_oauthlib-1.3.0-py2.py3-none-any.whl (23 kB)
Requirement already satisfied: idna<3,>=2.5 in /opt/anaconda3/lib/python3.7/site-packages (from requests[socks]>=2.11.1->tweepy) (2.10)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /opt/anaconda3/lib/python3.7/site-packages (from requests[socks]>=2.11.1->tweepy) (1.25.9)
Requirement already satisfied: chardet<4,>=3.0.2 in /opt/anaconda3/lib/python3.7/site-packages (from requests[socks]>=2.11.1->tweepy) (3.0.4)
Requirement already satisfied: certifi>=2017.4.17 in /opt/anaconda3/lib/python3.7/site-packages (from requests[socks]>=2.11.1->tweepy) (2020.6.20)
Requirement already satisfied: PySocks!=1.5.7,>=1.5.6; extra == "socks" in /opt/anaconda3/lib/python3.7/site-packages (from requests[socks]>=2.11.1->tweepy) (1.7.1)
Collecting oauthlib>=3.0.0
Downloading oauthlib-3.1.0-py2.py3-none-any.whl (147 kB)
|████████████████████████████████| 147 kB 3.2 MB/s eta 0:00:01
Installing collected packages: oauthlib, requests-oauthlib, tweepy
Successfully installed oauthlib-3.1.0 requests-oauthlib-1.3.0 tweepy-3.10.0
Note: you may need to restart the kernel to use updated packages.
もしこれでインストールできない方は、こちらの記事を参考に他の方法でのライブラリのインストールを試してみてください。

TweepyのAPI設定
Tweepyを使用するには最初に前回取得したAPI keyなどを読み込ませる必要があります
その読み込みに関してはこんな感じになります。
<セル1>
import tweepy
consumer_key = 'API keyを入力'
consumer_secret = 'API key secretを入力'
access_token = 'Access tokenを入力'
access_token_secret = 'Access token secretを入力'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
実行結果
まず「import tweepy」でTweepyのライブラリをインポートします。
その後、前回取得したAPI key、API key secret、Access token、Access token secretをそれぞれ変数consumer_key、consumer_secret、access_token、access_token_secretに代入します。
consumer_key = 'API keyを入力'
consumer_secret = 'API key secretを入力'
access_token = 'Access tokenを入力'
access_token_secret = 'Access token secretを入力'
その後、Twitterの認証を行うため、
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
とすることで、今後Twitter APIを「api」として使用することができるようになります。
ツイートしてみる その1
ということでツイートしてみましょう。
ツイートするには「api.update_status(ツイートするテキスト)」とします。
<セル2>
api.update_status("Tweetpyでの投稿テスト")
実行結果
Status(_api=<tweepy.api.API object at 0x7fd850c0da50>, _json={'created_at': 'Tue Jan 05 13:52:15 +0000 2021', 'id': 1346454465826627588, 'id_str': '1346454465826627588', 'text': 'Tweepyでの投稿テスト', 'truncated': False, 'entities': {'hashtags': [], 'symbols': [], 'user_mentions': [], 'urls': []}, 'source': '', 'in_reply_to_status_id': None, 'in_reply_to_status_id_str': None, 'in_reply_to_user_id': None, 'in_reply_to_user_id_str': None, 'in_reply_to_screen_name': None, 'user': {'id': 1130965094983131137, 'id_str': '1130965094983131137', 'name': 'のり@Python✖️3Dプリンタ使い' (以下略)
Twitterのアカウントを確認して、ツイートできているか確認してみましょう。

確かにツイートできていました。
ツイートしてみる その2:改行してみる
次に改行を含むツイートをしてみましょう。
改行するには「\n」をテキスト中の改行したい場所に挿入します。
ちなみに「\」をMacで打つには「Option + ¥」で打つことができます。
<セル3>
api.update_status("Tweepyでの投稿テスト その2\n\n改行するには\\nでできるよ")
実行結果
Status(_api=<tweepy.api.API object at 0x7fd850c0da50>, _json={'created_at': 'Tue Jan 05 13:54:55 +0000 2021', 'id': 1346455136596475908, 'id_str': '1346455136596475908', 'text': 'Tweepyでの投稿テスト\u3000その2\n\n改行するには\\nでできるよ', 'truncated': False, 'entities': {'hashtags': [], 'symbols': [], 'user_mentions': [], 'urls': []}, 'source': '', 'in_reply_to_status_id': None, 'in_reply_to_status_id_str': None, 'in_reply_to_user_id': None, 'in_reply_to_user_id_str': None, 'in_reply_to_screen_name': None, 'user': {'id': 1130965094983131137, 'id_str': '1130965094983131137' (以下略)
ツイートを確認してみるとこんな感じです。

「\」は「バックスラッシュ」といい、また別の名を「エスケープシーケンス」と言います。
これは特別な文字として扱われ、「\ + 何かのキー」で特別な効果(今回の場合は「\ + n」で改行)をもたらします。
また「\\」とすると「文字として一つの\」を出力します。
そのため、「改行するには\\nでできるよ」とすると「改行するには\nでできるよ」と出力されるわけです。
ツイートしてみる その3:変数をいれてみる
また時には変数を入れたいこともあるでしょう。
ということで変数を使用可能か試してみましょう。
<セル4>
number = 12345
api.update_status("Tweepyでの投稿テスト その3\n\n変数も入れれるよ" + str(number))
実行結果
Status(_api=<tweepy.api.API object at 0x7fd850c0da50>, _json={'created_at': 'Tue Jan 05 13:57:19 +0000 2021', 'id': 1346455740291059712, 'id_str': '1346455740291059712', 'text': 'Tweepyでの投稿テスト\u3000その3\n\n変数も入れれるよ12345', 'truncated': False, 'entities': {'hashtags': [], 'symbols': [], 'user_mentions': [], 'urls': []}, 'source': '', 'in_reply_to_status_id': None, 'in_reply_to_status_id_str': None, 'in_reply_to_user_id': None, 'in_reply_to_user_id_str': None, 'in_reply_to_screen_name': None, 'user': {'id': 1130965094983131137, 'id_str': '1130965094983131137', 'na (以下略)
ツイートを確認してみると「str(number)」の部分が「12345」となっており、変数も使用可能であることが確認できました。

ということでTweepyからの初めてのツイートに成功しました。
もっと予測不要なことが起こってTwitter社に迷惑かけてしまうのではないかと心配していたのですが、そういうことが起こらないようにするためのAPIということで、そこまで怖がらなくても良かった気がします。
ただループ処理の中でツイートするなんてプログラムの場合は永遠とループして永遠とツイートし続ける(多分、ツイート回数規制に引っかかって止まるでしょうが)なんて、恐ろしいことが起こりかねないので、ループ処理中のツイート処理はしない方が無難な気がします。
ちなみにツイートする以外にも、いいね、リツイート、リストへの追加・削除、ブロックなんかもできるようです。
なかなか面白いツールを手に入れたので、次回から色々と試していきましょう。

ということで今回はこんな感じで。
コメント