Raspberry Pi + PHP で Twitter bot を作る

CentOS で PHP を使った Twitter bot を作ったことを書いた。

CentOS + PHP で Twitter bot を作成する(ランダムツイート) – with a Christian Wife
https://wacw.cf/2018/02/13/twitter-bot-withcentos-and-php/

CentOS + PHP で Twitter bot を作成する(単発ツイート) – with a Christian Wife
https://wacw.cf/2018/02/14/single-tweet-with-cenos-and-php/

しかし、なぜか cron へ登録しても実行できない。いろいろ調べてもよく分からなかったので、Raspberry Pi で同じことをやってみることにした。

環境:Raspberry Pi 3 Model B、Raspbian Stretch

(1)dirmngr をインストールする。

$ sudo apt-get install dirmngr --install-recommends

(2)PHP をインストールする。

Raspberry Pi 3 に「PHP」をインストール | 大-はなまるの絵日記ブログ
http://d-hanamaru.jp/2017/04/28/post-4434/

(3)curl をインストールする。

$ sudo apt-get install php-curl

参考:
php – Call to undefined function curl_init() even it is enabled in php7 – Stack Overflow
https://stackoverflow.com/questions/34842596/call-to-undefined-function-curl-init-even-it-is-enabled-in-php7/36935239

(4)適当なディレクトリ(twitter-bot とする)を作成。ディレクトリへ移動。

$ mkdir twitter-bot
$ cd twitter-bot

(5)TwistOauth.phar をダウンロード。

$ wget https://github.com/mpyw/TwistOAuth/raw/master/build/TwistOAuth.phar

(6)以下のページで consumer key、consumer secret, access token、access token secret を取得する。

Twitter Application Management
https://apps.twitter.com/

(7)以下のような PHP ファイル(tweet.php とする)を作成し、$ php tweet.php と実行すればツイートされるはず。

 1<?php
 2require 'TwistOAuth.phar';
 3
 4$consumer_key = 'xxxxxxxxxxxxxxxxx';
 5$consumer_secret = 'xxxxxxxxxxxxxxxxx';
 6$access_token = 'xxxxxxxxxxxxxxxxx';
 7$access_token_secret = 'xxxxxxxxxxxxxxxxx;
 8
 9$connection = new TwistOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
10$connection->post('statuses/update', array('status' => 'おはよう。'));

このように、追加のインストールは必要だけど、CentOS と同じやり方で Twitter bot を作成できた。

以下のように cron への登録し、実行できた。CentOS ではなぜできなかったんだろう。

0 8 * * * php ./twitter-bot/tweet.php

CentOS の時と同じようにやって、ランダムに通知する方法にも挑戦した。

CentOS + PHP で Twitter bot を作成する(ランダムツイート) – with a Christian Wife
https://wacw.cf/2018/02/13/twitter-bot-withcentos-and-php/

その際、twitter-bot.php 内の TwistOAuth.phar と list.txt は絶対パスで書く必要がある。つまり、/home/pi/twitter-bot/TwistOAuth.phar、/home/pi/twitter-bot/list.txt のようにする。これで cron で実行できた。