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上でツイートを投稿することができました。
コメント