見出し画像

Pythonとcronでささっと自動ツイートBotを自作する

建築学科のための材料力学』というブログを運営している中で、記事の内容や力学公式などを自動でツイートしてくれるスクリプトを書きたいなーと前々から思っていたので、実装しました。この機能はPythonでささっと実現することができました。このnoteではその手順を書いていこうと思います。


自動ツイートBotの機能を決定する

僕が作りたかった自動ツイートBotは以下のようなものです。

・毎朝8:30にツイートする

・ツイートの内容は、決められたツイート本文からランダムで選ばれる

大まかにはこれだけです。自分で毎朝8:30に起きてツイートするのでは大変なので、ここら辺はスクリプトを書いてコンピュータにやってもらう方が効率的です。では次から実際に自動ツイートBotの作り方を紹介していきます。


Twitter APIに登録

まずはじめにTwitter APIに登録する必要があります。この部分はQiitaの記事でわかりやすいものがありましたので、そちらを参照してください。


僕がTwitter APIに登録した時とは仕様が変わっているようです。どうやら申請が厳格に審査されるようになったみたいです。何かわからないことがあればコメント欄にてお願いします。

Twitter APIに登録が完了し、いろいろ設定していると『Consumer Key』『Consumer Secret』『Access Token』『Access Token Secret』の情報を取得できます。自動ツイートbotを作成するにはこれら4つを使用します。


ツイートしたい本文をjsonファイルで定義

まずはじめに、自動ツイートしたいツイート内容を定義します。ここではjsonにてその内容を作成します。ここでは"tweet_content.json"というファイル名にしてください。

{
    "content" : [
        "ツイート1:ここで自動ツイートの内容を定義します。1ツイートにつき一行です。",
        "ツイート2:'バックスラッシュとn'でツイート本文を改行して表示することができます。\n改行後のツイート本文",
        "ツイート3:ハッシュタグの付け方は通常のツイートの仕方と同様です。#ハッシュタグ1 #ハッシュタグ2",
        "ツイート4:urlなどはそのまま記載してください(例:https://materialmechanics.work)。"
    ]
}

ここでツイート本文を決定します。このjsonファイルで定義したツイート本文の中から、ランダムで1つツイートされるBotを作成します。ツイートしたい本文を追加するには、contentに行を新たに追加する形です。


Pythonで自動ツイートBotを作成

Pythonでなくても自動ツイートBotの作成はできるのですが、今回は自分の勉強も兼ねてPythonを使用しました。以下、Pythonスクリプトになります。

#!/usr/local/bin/python

import json, random
from requests_oauthlib import OAuth1Session

CONSUMER_KEY = "" #Consumer Key
CONSUMER_SECRET = "" #Consumer Secret
ACCESS_TOKEN = "" #Access Token
ACCESS_TOKEN_SECRET = "" #Access Token Secret
twitter = OAuth1Session(CONSUMER_KEY, CONSUMER_SECRET ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

def postTweet(tweetText):
    url = "https://api.twitter.com/1.1/statuses/update.json"
    params = {"status" : tweetText}
    res = twitter.post(url, params=params)
    if res.status_code == 200:
        print("Success.")
    else:
        print("Failed. : %d"% res.status_code)

def getTweetContent(jsonFilepath):
    f = open(jsonFilepath, "r", encoding='utf-8')
    json_data = json.load(f)
    return random.choice(json_data["content"]) #jsonファイルから取得したツイート本文の中からランダムで1つを返す

def main():
    tweetText = getTweetContent("./tweet_content.json") #jsonファイルへのフルパスを引数にする
    postTweet(postTweet)

main()

たったこれだけです。先ほど作成した"tweet_content.json"ファイル内で定義したツイート本文の中から、ランダムで一つをツイートするスクリプトです。ツリー構造は下のようになります。

root/
    ├ auto_tweet.py
    └ tweet_content.json

以上で自動ツイートのスクリプトが完成しました。あとはこのスクリプトを定刻に実行すれば自動ツイートBotが完成します。


cronでスクリプトを定刻実行

最後にcronで先ほど作成したPythonファイルを定刻に実行させます。cronはunix系のOSで定期的にコマンドを実行させるものです。僕はロリポップレンタルサーバーと契約をしており、このレンタルサーバーではcronを簡単に行うことができるので、今回はそれを使用しました。

cronの使い方に関しては、下のnoteでまとめました。


以上になります。プログラミングで何でもかんでも自動化できてしまう時代になりましたね〜。

(2019年3月24日追記 : 画像付きツイートBotの作成手順をまとめました)


この記事が気に入ったらサポートをしてみませんか?