MENU
本サイトの運営

エックスサーバー × SWELLで運営中です。
エックスサーバー : 高速表示かつ大容量に加えpythonプログラムを走らせるのに最適です。


SWELL: THE THORからSWELLに切り替えました。SEOや高速性を重視する私ですが、思い切ってSWELLに切り替えて大満足です。


【Python】Twitterに指定時間にて自動投稿(ツイート)する方法を解説!

こんにちは、fuyutsuki(@Fuyutsuki)です。

Twitterへのつぶやきを自動で投稿したり、投稿したツイートを解析したいと思ったことはありませんか?

自動化ということで、Python使えば可能だろうと思い調べてみましたが、やはり可能でした。

やはり自動化においてPythonは一強ですね。

今回の記事ではTwitter Developer Platformへの登録及び、Pythonを使って指定時刻に自動でツイートする方法を解説します。

Pythonとは何ぞやって方はこちらの記事をご覧ください。記事の後半にPythonのインストール方法についても解説しています。

Twitter Developer Platformへの登録方法についても画像付きで詳細に解説していきますので、ぜひご覧ください。

目次

Step1_Twitter Developer Platformに登録

最初のStepとして、以下のURLからTwitter Developer Platformに登録します。

https://apps.twitter.com/

「名前」などの必要事項を入力し、画面の指示に従って登録作業を行います。

電話番号がtwitterアカウントに登録されていないとエラーが出るので注意しましょう。

必要な情報としては下記の通りです。

  • API Key
  • API Key Secret
  • Acess token
  • Access token secret

作成時点で、下記項目はコピーするように表示されます。

  • API Key
  • API Key Secret

その後、下記画像の箇所からAccess Token and SecretのGenerateをクリックします。

fuyutsuki_twitter

Generateが完了すると、下記の項目をコピーするように表示されます。

  • Access Token
  • Access Token Secret

Step2_Twitter Developer Platformの設定

Twitter API v2にアカウントを昇格

次に、Pythonでツイートを自動投稿するためにtweepyというライブラリを使用するのですが、このライブラリを使用するためにはアカウントを昇格させる必要があります。

fuyutsuki_twitter_2

画像のように、Twitter API v2のタブをクリックし、ElevatedのタブのApply for Elevatedの黒色ボタンをクリックして昇格申請を行います。無料なのでご安心を。

各項目記述して申請手続きを進めます。途中英語で書かないといけない必要がありますが、ここは頑張って英語で記述しましょう。

承認が完了すると下記のような画面になります。

Fuyutsuki

私の場合は申請後すぐに承認されました。

fuyutsuki_twitter_3

権限の設定

今のままの状態でProgramを実行しても、権限の問題で401 Unauthorizedのエラーが発生します。

まずはAppの作成を行っていきます

https://developer.twitter.com/en/portal/projects-and-apps

のページからCreate Appをクリックしましょう。

create app

App nameを入力します。

app name

次に権限設定を行います。

Dashboard > ユーザー名右の歯車マーク > から下記画像のところまでいきましょう。

fuyutsuki_twitter_4

Set upボタンをクリックして、以下のように設定を行います。

権限設定-1

権限エラーが発生する場合は、App permissionsがReadになっていないかをまず確認しましょう。

Read and writeまたはRead and write and Direct messageでないと自動ツイートすることはできません。

権限設定-2

API Keyなどを再発行

権限の設定をした際には、再度API Keyなどを一通り再発行する必要があるので注意しましょう!

私はこれに気付かず、エラー解消にかなりの時間がかかりました。。

API Key and Secret

Pythonにより自動でツイートする

Python仮想環境の構築

先程紹介したこちらの記事で解説したように、vertualenvでPythonの仮想環境を構築します。

今回はこちらのように、tweepyとschedをインストールするバッチファイルを作成します。

@echo off
rem スクリプトが置かれている場所をカレントディレクトリにする。
cd /d %~dp0

rem 念のためvirtualenvのインストールとpipのアップグレードを行う。
pip install virtualenv
python -m pip install --upgrade pip

rem venvの環境を構築する。
python -m venv venv
call ./vENV/Scripts/activate

python -m pip install --upgrade pip
rem 各パッケージをインストール
pip install tweepy
pip install sched
pause

Pythonで自動でツイートしてみる

まずはプログラミングでおなじみの”Hello World”と自動でツイートしてみましょう。

下記のコードを実行すれば”Hello World”と自動でツイートできます。

エラーになる方は、api key, api key secret, access token, access token secretが正しく記述できているかの確認+権限設定の確認などをしましょう。

import tweepy

if __name__ == '__main__':
    # 取得したアクセスキーたちをセット。
    api_key='XXXXXXXXXXXXXX'
    api_key_secret='XXXXXXXXXXXXXX'
    access_token='XXXXXXXXXXXXXX'
    access_token_secret='XXXXXXXXXXXXXX'

    auth = tweepy.OAuthHandler(api_key,api_key_secret)
    auth.set_access_token(access_token,access_token_secret)
    api = tweepy.API(auth)
    message = "Hello World"
    api.update_status(message)

このコードを実行した後にTwitterのアカウントで確認してみましょう。

以下のように、Hello Worldとツイートされているはずです!

Hello World

指定時刻に自動でツイートする

指定時刻にツイートする方法ですが、Pythonのscheduleライブラリを使えば簡単にできます。

コードは下記の通りです。

import tweepy
import time
import schedule

if __name__ == '__main__':
    # 取得したアクセスキーたちをセット。
    api_key='XXXXXXXXXXXXXX'
    api_key_secret='XXXXXXXXXXXXXX'
    access_token='XXXXXXXXXXXXXX'
    access_token_secret='XXXXXXXXXXXXXX'

    auth = tweepy.OAuthHandler(api_key,api_key_secret)
    auth.set_access_token(access_token,access_token_secret)

    def job():
        api = tweepy.API(auth)
        message = "Hello World"
        api.update_status(message)

    #  指定時刻で処理実行
    schedule.every().day.at("11:50").do(job)

    while True:
        schedule.run_pending()
        time.sleep(10)

schedule関数の解説

job関数に指定時刻になったら実行したい処理を登録します。

def job():
    api = tweepy.API(auth)
    message = "Hello World"
    api.update_status(message)

以下で処理したい時刻を設定します。幾つか例を記述します。

#  毎日午前11時50分に処理実行
schedule.every().day.at("11:50").do(job)
# 毎週金曜日の午後15時に処理を実行
schedule.every().friday.at("15:00").do(job)

schedule.run_pending()関数によって登録した処理を実行します。

while構文により無限ループとすることで、定期実行を行うことができます。

一度処理を実行するだけであればschedule.run_pending()関数だけを呼び出してあげればOKです。

ただし、同じ内容で繰り返しツイートするとBANされる可能性があります。

エクセルなどにツイート内容を登録しておいて、順番にツイートしていく(同じ内容のツイートはしない)といった工夫は必要ですね。

while True:
    schedule.run_pending()
    time.sleep(10)

まとめ:PythonでTwitterに自動ツイートしよう

Pythonを使ってTwitterに自動でツイートする方法について解説しました。

応用すれば過去に投稿したツイートを解析することもできますね。

Twitter Developer Platformへの登録にかなり苦労しましたが、ようやくエラーを解消し、記事にすることができました。

また、プログラミングを学習したいと思っている方はこちらの記事で紹介しているように、買い切り型のオンライン動画学習サービスUdemyがおすすめです。講師の方々のレベルがとても高いことが特長です。

独学でのプログラミング学習:Udemy
Udemy登録後画面

独学でプログラミング学習をするなら、まずおすすめしたいのがUdemyです。オンライン動画買い切り形式で、実務レベルのスキルを習得できます。定期的に80~90%OFFセールが実施されていますよ。

\ セール中は80~90%OFFで購入可能/

30日間返金保証

最後まで読んでいただきありがとうございました。

ではまた、次の記事で!

この記事が気に入ったら
フォローしてね!

この記事を書いた人

快適なデスク環境で作業効率アップをテーマに、様々なガジェットを紹介している20代エンジニアです。

作業効率化につながるようなプログラミングの情報についても発信中。

コメント

コメントする

目次