PythonでTwitterを制御するためのライブラリTweepyを試してみる〜インストールとAPI設定、Tweepyからの初めてのツイート〜

目次

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ということで、そこまで怖がらなくても良かった気がします。

ただループ処理の中でツイートするなんてプログラムの場合は永遠とループして永遠とツイートし続ける(多分、ツイート回数規制に引っかかって止まるでしょうが)なんて、恐ろしいことが起こりかねないので、ループ処理中のツイート処理はしない方が無難な気がします。

ちなみにツイートする以外にも、いいね、リツイート、リストへの追加・削除、ブロックなんかもできるようです。

なかなか面白いツールを手に入れたので、次回から色々と試していきましょう。

ということで今回はこんな感じで。

よかったらシェアしてね!

コメント

コメントする

目次
閉じる