プログラミング

定期的にツイートするbotをPythonで作る方法

投稿日:2017年6月1日 更新日:

Twitterでツイートを行う botプログラムを Python(プログラミング言語)で作ります。
このプログラムは、CentOS(Linuxの一種です)上で定期実行します。

1. 動作概要

プログラムで以下の処理を行います。

  1. プログラムの中に複数のメッセージを用意しておく。
  2. ここからランダムにメッセージを選択する。
  3. このメッセージをツイートする。

このプログラムを、cron で定期実行させます。

2. 環境

  • CentOS 7.3
  • Python 2.7.5
  • Twitterを操作するライブラリとして、tweepy を使用します。

3. 事前準備

Twitter App を作成して APIキーなどを取得する

Twitter Application Management にて、Twitter App を作成します。

作った時点で、以下の情報を得ることができます。

  • Consumer Key (API Key)
  • Consumer Secret (API Secret)

更に、Access Token というのも作成することで、以下の情報も得ることができます。

  • Access Token
  • Access Token Secret

これらは、あとで使うことになります。

4. プログラムを実行する予定のサーバーでの作業

4-1. 必要なライブラリのインストール

今回の環境では、Python 2.7.5 が既にインストールされていましたが、pip(Pythonのパッケージ管理ツール)が入っていなかったので、まずインストールします。

$ sudo yum install python-pip

pipを最新版にアップグレードします。

$ sudo pip install --upgrade pip

tweepy をインストールします。

$ sudo pip install tweepy

今回は一般ユーザーでプログラムを実行する予定なので、Pythonのライブラリのパーミッションを変更します。

$ sudo chmod go+rx -R /usr/lib/python2.7/site-packages/

これで、プログラムを書くための準備が整いました。

4-2. プログラムを書く

例として、/home/foo/twitter/bot.py というファイルにプログラムを書くとします。

このファイルに以下を記述します。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tweepy
import random

CONSUMER_KEY = "xxxxxxxxxxxx"
CONSUMER_SECRET = "xxxxxxxxxxx"
ACCESS_TOKEN = "xxxxxxxxxxxx"
ACCESS_TOKEN_SECRET = "xxxxxxxxxxxxx"

"""
ツイートする文字列
"""
STATUS_DATA = [
    ["1つ目のメッセージ"],
    ["2つ目のメッセージ"],
    ["3つ目のメッセージ"]
]


def main():
    makeApi().update_status(random.choice(STATUS_DATA))


def makeApi():
    """Return tweepy.API object"""

    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
    return tweepy.API(auth)


if __name__ == "__main__":
    main()

STATUS_DATA というリストに格納されたメッセージをランダムに取得して、ツイートするだけのプログラムです。エラー処理も書いておらず、最低限の記述になっています。

参考

4-3. 定期実行させる

今回は、一般ユーザーの crontab コマンドで cron を設定して定期実行させます。

次のコマンドで cron設定の編集を開始します。

$ crontab -e

以下を記述します。

10 9-19/3 * * * /home/foo/twitter/bot.py

この設定によって、9時から19時まで3時間毎に○時10分にプログラムが実行されます。

5. おわりに

今回の Pythonプログラムを改造して、より複雑なメッセージを動的に生成してツイートすることができます。

ちなみに、私は以下の書籍で Pythonの学習を始めました(版はもっと前のものでしたが)。かなり分かりやすかったです。

現在だと、こちらの本も評判が良さそうです。

📂-プログラミング
-, ,

執筆者:labo


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

Riot.jsを使ってみた感想

Riot.js を使って、素数判定を行うページを作ってみた感想です。 ※ 以前は、ここにその素数判定を実装していたのですが、今はありません。 目次Riot.jsを使った感想良い点悪い点 Riot.js …

フレームレートを指定して Canvas に描画するサンプルページを作りました

フレームレートを指定して Canvas に描画するサンプルページを作りました。 目次1. スクリーンショット2. デモ3. 説明4. ソースコード 1. スクリーンショット スクリーンショット 2. …

web development

Web Development for Beginners を読む:レッスン15, 16, 17

目次1. はじめに2. Part1: イントロダクション「継承」と「コンポジション」Pub/Sub パターン3. Part 2: canvas にヒーローとモンスターを描く4. Part 3: 動きを …

React Redux

React + Redux の最小限の雛形コード

この記事に載せている JavaScriptのコードは、React + Redux を使っています。 但し、まだ何も意味のある処理を書いていないので、このままだと 属性 id=”root” を持った要素 …

定期的にDOM要素をアニメーションするサンプルを用意しました

定期的にDOM要素をアニメーションするサンプルを用意しました。 DOM要素が対象ですので、div要素や img要素などが動かせます。 目次1. デモ2. ソースコード3. まとめ4. 参考 1. デモ …