![Pythonで自動ツイートする方法](https://osaka-se81.work/wp-content/uploads/2022/07/Pythonで自動ツイートする方法-644x362.png)
Pythonからツイートするときにハマった内容です。
この通りやればツイートできるはず。
ハマってる方はご参考にどうぞ。
Python側の設定
Pythonの実行環境はできているとして、ツイートに必要なモジュールをインポートしておきましょう。
コマンドをコピペでOK!
コマンドpip install tweepy
Twitter側
ここが非常に面倒でしたというかハマった原因はこのTwitter側の設定でした。
設定の流れは下記のとおりです。
Twitter設定
- Twitter Developersにアクセス
- プロジェクト作成
- Twitter社からのメールに回答
- キーを再発行
TwitterDevelopersにアクセス
ログインに使うユーザには気を付けてください。
裏垢で呟きたい(Pythonを使いたい)のであれば、このTwitter Developersの設定は裏垢でしてください。
各項目のスクショを取りそびれてしまいました。。。
ググれば出てくるので埋めて作成しましょう。
ぶっちゃけ質問を無視して面倒だったので、適当に記入しました(埋めました)。
とりあえず確定までいければOK!
プロジェクト作成
下手したら「本垢で呟いちゃった・・・」みたいなことになりかねません。
ここの設定は画面に沿って行けば難しくありません。
![](https://osaka-se81.work/wp-content/uploads/2022/06/image-644x359.png)
![](https://osaka-se81.work/wp-content/uploads/2022/06/image-1.png)
ここがやっかいなポイントです!
プロジェクト作成時に各キーが取れるのですが、この時点ではこれは使えませんでした。
いくら頑張っても以下のエラーが発生します。
urllib.error.HTTPError: HTTP Error 403: Forbidden
理由は後でわかったのですが
『Twitter社の承認が必要』
だったからです。
キーの発行ができるのに何故?って感じですよね。
なので
この時点でキーをコピーしても意味なしです。
後で再発行できるので、
とりあえず権限設定をしましょう。
![](https://osaka-se81.work/wp-content/uploads/2022/07/image-17.png)
この歯車マークをクリックして設定画面に移動。
まんまですが『User authentication settings(ユーザ権限設定)』の『Set up』をクリックし、設定画面に移動します。
![](https://osaka-se81.work/wp-content/uploads/2022/06/image-4-644x570.png)
設定画面で『OAuth 1.0a』にチェックを入れると詳細設定が可能になります。
設定内容は適当でいけるんですが、
『App permissions(アプリ権限)』だけはしっかり設定してください。
選択肢は以下の通りです。
ReadRead and writeRead and write and Direct message
はい、デフォが『Read(読み取り専用)』になっています。
これのままにしていると下記エラーが出てツイートできません。
tweepy.errors.Unauthorized: 401 Unauthorized
Read-only application cannot POST.
なので『Read and write』または
『Read and write and Direct message』
のどちらかを選択する必要がありますが、
テスト段階であれば『Read and write』が無難ですね。
万が一、ダイレクトメッセージを送ってしまうと面倒です。
そう考えるとTwitter社がデフォをReadにしているのは当然ですね。ともかく他は適当でいけました。
設定内容は以下をご確認ください。ちなみにこの読み取りの設定を変えるとキーの再発行が必要です。
再発行の方法は次の項目で解説しますが、再発行しないといけないというのは頭の片隅に置いといてください。
![](https://osaka-se81.work/wp-content/uploads/2022/07/image-18.png)
Twitter社からのメールに回答
アカウント作成時の設定が適当だったせいかどうかはわかりませんが、
Twitter社からこんなメールが来ました。
英語なのが面倒なところですが要は
「あなたのアプリは何に使うの?怪しい人ちゃうやんな?」
ってことです。
このメールに返信しましょう。
Twitterとのやり取りがうまくいったら承認メールが飛んできます。
これがこない内は
urllib.error.HTTPError: HTTP Error 403: Forbidden
のエラーメッセージが出続けるという事です。
![](https://osaka-se81.work/wp-content/uploads/2022/07/image-19.png)
キーを再発行
『Twitter社に承認された』
もしくは
『権限設定を変更』
したらキーを再発行しましょう。
Dashboardで鍵マークをクリックします。
再発行の方法は簡単です。
とりあえず全部『Regenerate(再発行)』してコピーです。
Pythonで必要になるのでしっかりメモしておいてください。
これを再発行すると過去に作っていたプログラムのキーも修正しないと動かなくなります。
![](https://osaka-se81.work/wp-content/uploads/2022/07/image-20.png)
![](https://osaka-se81.work/wp-content/uploads/2022/07/image-21.png)
Pythonのコードとりあえず以下をコピペしてください。
KEY情報だけは再発行したものを””内に入力してください。
このコード内でBEARER_TOKENは使っていないですが、
一応変数だけ用意しました。
Pythonからツイートするコードimport tweepy
BEARER_TOKEN = “”
API_KEY = “”
API_SECRET = “”
ACCESS_TOKEN = “”
ACCESS_TOKEN_SECRET = “”
#ツイートの内容を設定
MESSAGE = ‘Pythonからツイート’
#ツイートするメイン関数
def twitter_bot():
getKEY().update_status(MESSAGE)
#KEY情報をセット
def getKEY():
KEY = tweepy.OAuthHandler(API_KEY, API_SECRET)
KEY.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
return tweepy.API(KEY)
#関数の呼び出し
twitter_bot()
Pythonから投稿できるようにはなったのですが、
同じメッセージを複数回ツイートすると下記のようなエラーが発生しました。
187 – Status is a duplicate.
どうやら全く同じ文章を投稿しようとすると拒否されるようです。
短時間に同じメッセージをツイートしなければ問題ありません。
テストで短い間隔で投稿したい場合は、
1文字だけでも変えて実行するようにしましょう。
コメント