Pythonライブラリ「tweepy」を使って、ブログの過去記事ツイートbotを作ってみたので、今回はその作り方を紹介していきます。
Google Cloud PlatformやTwitter Developerなどの開発者用サービスへの登録が面倒ですが、コーディング自体はとても簡単。
誰でも真似ができるので、ぜひ試してみてください。
具体的な内容は次の4ステップ。
- Google Cloud Platformへの登録と仮想サーバーの立ち上げ
- Twitter Developerへの登録と、tweepyのインストール
- Pythonで記事投稿スクリプトを記述
- cronでスクリプト定時実行を設定
今回のbotの仕組み
今回作成する「過去記事ツイートbot」の仕組みは非常にシンプル。
過去記事ツイート用のスクリプトを、Ubuntu(LinuxOS)の予約機能を使って定時実行するだけ。
その予約機能のことをcron(クロン)といいます。(詳細は後述)
ただcronの予約機能はサーバーが動いているときにしか発動しないので、botを稼働し続けるにはパソコンの電源をつけっぱなしにしなければなりません。
そんな時に便利なのが、Cloud上の仮想サーバーですね。
現実世界のパソコン(サーバー)ではなく、Cloud上の仮想サーバーに働き続けてもらいましょう。
GCPへの登録・Cloud仮想サーバーの立ち上げ
ということでまずはGoogle Cloud Platform(GCP)に登録して、仮想サーバーのインスタンスを立ち上げていきましょう。
以下の記事で、「GCP登録 → GCEでVMインスタンスの立ち上げ → ローカルマシンからのSSH接続」の流れを説明しています。
本格的にKaggleに挑戦することになったので、その中で発生した問題の解決策を共有。 この記事では「Google Cloud上での仮想マシンを、ローカルなWindowsで使用する手順」を説明していきます。 具体的には以下の6ス[…]
ちなみにクラウドサービスならAWSでも、Azureでもなんでもいいですよ。
どれも最初は無料お試し期間があるので、それを利用して作成していけばいいです。
Twitter Developerの登録とtweepyのインストール
続いてTwitter Developerへの登録と、tweepyのインストールを行っていきましょう。
Twitter Developerへの登録が必要な理由は、TwitterAPIを利用するため。
またtweepyはTwitterAPIを簡単に利用するためのpythonライブラリです。
以下の記事で「APIとは何か? → Twitter Developer登録 → tweepyインストール → Tweepyの使い方」の流れで解説しています。
今回は、TwitterAPI操作用のPythonライブラリ「tweepy」を紹介する記事。 利用までに必要な登録・設定の流れと、簡単な操作方法を紹介していきます。 tweepyはTwitterの自動化には欠かせないライブラリで[…]
過去記事ツイートのためのpythonスクリプトを書く
では自動ツイートを行うためのpythonスクリプトを仮想サーバー上で作成していきましょう。
とりあえず例を載せておくので、自分の好きなように書き換えてください。
auto_tweet.py
import tweepy
#credential.pyからKeyとTokenをインポート
from credential import CONSUMER_KEY ,CONSUMER_SECRET ,ACCESS_TOKEN ,ACCESS_SECRET
#API使用認証
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
#Twitterアカウント認証
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
#APIインスタンス生成
api = tweepy.API(auth)
#article.pyから、要約・URL・ハッシュタグ、の入った辞書(pick_up_article)をインポート
from article import pick_up_article
#ピックアップしてきた記事(辞書型)を変数に格納
article = pick_up_article
#辞書キーを指定して、値を取得
abst = article["ABST"]
url = article["URL"]
hashtag = article["HASH_TAG"]
#ツイート内容をtweet変数に格納。\nは改行を行う。
tweet = f"{abst}\n{url}\n{hashtag}\n#過去記事PickUp"
#ツイート
api.update_status(tweet)
この途中で出てくるcredential.pyとarticle.pyの中身はこんな感じ。
credential.pyの中身は、Twitter Developer登録時に入手した4つの情報をそれぞれ入力してください。
credential.py
CONSUMER_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXX'
CONSUMER_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
ACCESS_TOKEN = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
ACCESS_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
article.py
import random
#記事の辞書登録。美しくない。
articles = [
{"ABST":"Twitter API活用のためのPythonライブラリtweepyを使用するまでの流れを解説。",
"URL":"https://t-chemkunfu-y.com/program/control-twitter-by-python/",
"HASH_TAG":"#python"},
{"ABST":"スクリプトを定時実行するために必要なcronの設定方法をまとめた記事。",
"URL":"https://t-chemkunfu-y.com/program/cron-auto-script/",
"HASH_TAG":"#Linux"},
{"ABST":"GCP登録→仮想サーバー立ち上げ→ローカルマシンからのSSH接続をまとめた記事。",
"URL":"https://t-chemkunfu-y.com/program/vm-on-local/",
"HASH_TAG":"#Google Cloud Platform"},
{"ABST":"仮想サーバーとVSCodeをSSH接続して、ローカルから編集する方法をまとめた記事。",
"URL":"https://t-chemkunfu-y.com/program/gce-vscode/",
"HASH_TAG":"#Visual Studio Code"}
]
#(0~articlesの要素数-1)の数値をランダムで取得。indexに格納。
index = random.randint(0,3)
#取得したindexを用いて、リストの中から辞書を取得。
pick_up_article = articles[index]
cronでスクリプト定時実行を設定
最後に先ほど書いたスクリプトを定期実行するcron設定を行っていきます。
詳しくは以下の記事で解説しています。
今回は備忘録もかねて、UNIX系OSに備わっている「cron(クロン)」についてまとめていきます。 cronとは? cronとは、多くのUNIX系OSで標準的に利用される常駐プログラム(デーモン)の一種。 利用[…]
今回は毎日6時と18時にスクリプト実行をする設定をしていきます。
まずはコマンドライン上で次のコマンドを打ち込んでください。
$ crontab -e
最初はエディターの選択を求められると思いますが好きなのを選んでください。
よくわからない人は、「nano」でいいです。(「vim」は操作しにくいので。)
すると選択したエディターを使ってcrontabファイルが開きます。
そこでつぎのように記述してください。
* 6,18 * * * [command] [script]
[command]には、「bash」や「python」などの実行コマンド。 [script]には、実行したいスクリプトファイルの絶対パス(フルパス)を指定してください。またpythonコマンドにはちょっとした罠が存在するので、うまくいかなかった人は先ほどの記事を読んでください。
以上です。
充実したtwitter botライフを!