Tweepyを使用し、PythonでTwitterにツイートを投稿する

Tweepyを使用し、PythonでTwitterにツイートを投稿してみます。

Twitterにツイートを投稿するには、Tweepyモジュールが必要です。TweepyモジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■新しいアプリケーションを作成しAPI keyやAccess tokenなどを発行する

Twitterにツイートを投稿するには、まずTwitter(ツイッター)のAPI登録/開発者アカウント申請を行います。その後に、お持ちのTwitterアカウントでログインした状態で「Twitter Developer(https://developer.twitter.com/en)」にアクセスします。

アクセス後、サイト上部の「Developer Portal」の文字をクリックします。

クリックすると、「Developer Portal」のページが表示されますので、左側のメニューから「Project&Apps」の「Overview」をクリックします。

クリックすると、「Standalone Apps」の項目に「Create App」ボタンがありますので、こちらをクリックします。

クリックすると、「Name your App.(アプリに名前を付けます。)」と表示されますので、入力欄にアプリの名前を入力します。入力後、「Complete」ボタンをクリックします。

クリックすると、「Here are your keys & tokens(​こちらがあなたの鍵とトークンです)」と表示されますので、「API key」、「API secret key」、「Bearer token」をコピーして保存します。

このAPI keyが「Consumer Key」となります。またAPI secret keyが「Consumer Secret」となります。

保存後、左側のメニューから「Project&Apps」の「Overview」で、作成したアプリケーションの名前をクリックします。クリックすると、「Keys and tokens」の文字をクリックします。

クリックすると、「Authentication Tokens」という項目があり、「Access token & secret」の「Generate」ボタンをクリックします。

クリックすると、「Here are your new access token & secret. Have you saved them?(これが新しいアクセストークンとシークレットです。それらを保存しましたか?)」というウインドウが表示されますので、「Access token」と「Access token secret」をコピーして保存します。保存後「Yes, I saved them」ボタンをクリックします。

■Twitterにツイートを投稿する

クリック後、ツイートの投稿に必要なAPI keyやAccess tokenなどの発行が完了しましたので、Twitterにツイートを投稿するスクリプトを書いていきます。

■コード

import tweepy

# API keyやAccess tokenの設定
CK="Consumer Key(API key)"
CS="Consumer Secret(API secret key)"
AT="Access token"
AS="Access token secret"

# Twitterオブジェクトの生成
#OAuthHandlerインスタンスを作成
#アクセストークンを設定
#
auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, AS)
api = tweepy.API(auth)

# Twitterに投稿する
#認証されたユーザー(お持ちのアカウント)のステータスを更新
api.update_status("これはテストの投稿です")

今回はテストのため、Twitterアカウントで「これはテストの投稿です」と投稿してみます。

■実行

今回のスクリプトを「tweet-in.py」という名前で保存し、コマンドプロンプトから実行してみます。

Traceback (most recent call last):
File “C:\Users\user\tweet-in.py”, line 15, in <module>
api.update_status(“これはテストの投稿です”)
File “C:\pg\Python38\lib\site-packages\tweepy\api.py”, line 202, in update_status
return bind_api(
File “C:\pg\Python38\lib\site-packages\tweepy\binder.py”, line 252, in _call
return method.execute()
File “C:\pg\Python38\lib\site-packages\tweepy\binder.py”, line 234, in execute
raise TweepError(error_msg, resp, api_code=api_error_code)
tweepy.error.TweepError: Read-only application cannot POST.

実行してみると、「TweepError」というエラーが発生しました。「Read-only application cannot POST.(読み取り専用アプリケーションはPOSTできません。)」という内容です。

■エラーの対処をする

Twitter Developer(https://developer.twitter.com/en)」の「Developer Portal」にアクセスします。

アクセス後、左側のメニューから「Project&Apps」の「Overview」で、作成したアプリケーションの名前をクリックします。クリックすると「App permissions(アプリの許可)」という項目がありますので、項目の「Edit」ボタンをクリックします。

クリックすると、「Edit app permissions(アプリの権限を編集する)」と表示されます。表示されたページ内の「Read + Write + Direct Messages」を選択し、「Save」ボタンをクリックします。

クリックすると、「Changing permissions might affect your app(権限を変更するとアプリに影響する可能性があります)」というウインドウが表示され、「Are you sure you want to change permissions?(権限を変更してもよろしいですか?)」と質問されていますので、「Yes」ボタンをクリックします。

クリックすると「Your Changes have been saved!(変更内容が保存されました!)」というポップアップが表示され、変更が完了となります。

変更後、今回のスクリプトを実行してみます。

Traceback (most recent call last):
File “C:\Users\user\tweet-in.py”, line 15, in <module>
api.update_status(“テスト投稿です”)
File “C:\pg\Python38\lib\site-packages\tweepy\api.py”, line 202, in update_status
return bind_api(
File “C:\pg\Python38\lib\site-packages\tweepy\binder.py”, line 252, in _call
return method.execute()
File “C:\pg\Python38\lib\site-packages\tweepy\binder.py”, line 234, in execute
raise TweepError(error_msg, resp, api_code=api_error_code)
tweepy.error.TweepError: [{‘code’: 89, ‘message’: ‘Invalid or expired token.’}]

今度は新しいエラーが表示され「{‘code’: 89, ‘message’: ‘Invalid or expired token.’}(トークンが無効または期限切れです。)」という内容なので、これを対処します。

Twitter Developer(https://developer.twitter.com/en)」の「Developer Portal」で、左側のメニューから「Project&Apps」の「Overview」で、作成したアプリケーションの名前をクリックします。クリックすると、「Keys and tokens」の文字をクリックします。

クリックすると「Authentication Tokens」の「Access token & secret」の項目で「Regenerate」ボタンをクリックします。

クリックすると、「Are you sure you want to regenerate?(再生してもよろしいですか?)」というウインドウが表示されます。「If you regenerate your access token, you might need to update your code for your app to work properly. Want to regenerate?(アクセストークンを再生成する場合、アプリが正しく機能するようにコードを更新する必要がある場合があります。再生したいですか?)」と質問されていますので、「Yes, regenerate」ボタンをクリックします。

クリックすると、「Access token and secret regenerated.(アクセストークンとシークレットが再生成されました。)」というポップアップが表示されますので、をコピーして保存します。保存後「Yes, I saved them」ボタンをクリックします。

クリックするとウインドウが閉じますので、スクリプトのコードの「Access token」と「Access token secret」の部分をコピーした情報に変更します。

変更後、スクリプトを実行してみます。

実行してみると、Twitter上でツイートを投稿することができました。

コメント

タイトルとURLをコピーしました