特定ユーザーの特定キーワードを含むツイートのみを自動RT(リツイート)する

栃木県内の情報を流しているTwitterアカウントで、大雨が降るたびに手動で警報・注意報や河川情報をリツイートしてるんだけど、寝不足になって大変なので自動化してみた。

直接、速報ニュースのソースをツイートするBOTを作成したいとも思うんだけど、すでに色んな専用BOTがあるので、餅は餅屋でお任せして、栃木に関する情報のみをそれらからお借り(リツイート)する方法にする。

参考にしたのは、こちら。
[完全無料]Twitterで人のアカウントを自動で定期的にリツイートする方法あすたまいず | あすたまいず

サーバーの準備

まず定期的にプログラムを起動させるのに必要なcron(クローン)を備えたサーバーが必要。
今、このWordPressを置いているロリポップでcronが使えるので、このまま行こう。

Twitter側の準備

TwitterのAPIを使用する際にキーを取得する方法あすたまいず | あすたまいず

Twitter Developerにログイン後、フッターメニューの「TOOLS」→「Manage Your Apps」をクリック。
twitter-developers_1

Twitter Applicationをこのアカウントで作るのは初めてなので、「Create New App」ボタンを押す。
twitter-developers_2

後は、参考サイトの通りに、必要事項を入力して、

  • consumer key(コンシューマーキー)
  • consumer secret(コンシューマーシークレット)
  • access token(アクセストークン)
  • access token secret(アクセストークンシークレット)

を控える。

「Retweetする相手のScreen name(スクリーンネーム)」は、こちらを参考に取得できた。
TwitterでユーザIDからスクリーンネームを知る方法。または、その逆。 – hoge256 blog

ブラウザの「ソースを表示」機能でソースを表示し、data-user-idを検索

※実際に動かしてみたところ、ユーザIDでのRTはうまくいかず、@xxxxxのスクリーンネームで運用してます。

プログラムファイルを準備

先ほど控えたコンシューマーキーなどを、参考サイトからダウンロードしたファイル(拡張子をtxt→phpに変更)に書き込み。

で、よく考えたら、「特定ユーザーの、特定キーワード(ex.栃木県)が含まれるツイートのみ」リツイートしたいんだったわ。

検索結果を公式RTする方法として、こっちのコードを拝借。
【続編】PHP+Twitter API 1.1 複数のキーワードでつぶやきを検索して公式RTする | 京都でウェブ制作なら らくらく株式会社

検索結果を絞り込むには、演算子を用いる。
今回は、「特定キーワード」+「特定ユーザー」にしたいので、
検索パラメータをセットする「$key = “*****”;」に、「from:@****」を追記。
参考)search/tweets – ツイートを検索する | Twitter Rest API 日本語リファレンス

ファイルをサーバーにアップロードする

参考サイトからDLして、一部編集した3つのファイルをアップロードする。
OAuth.php
twitteroauth.php
(任意の名前をつけたプログラム).php

お使いのサーバー毎にやり方が違うので、自分とこのサーバーに合ったやり方でどうぞ。
[完全無料]Twitterで人のアカウントを自動で定期的にリツイートする方法で作ったPHPファイルでは、3つのファイルは同じフォルダでOK。
その他、公開されているコードに変数名の間違い(定義と参照で変数名が違う)や配列として扱われている変数がオブジェクトだったりして、手直しが必要なので、直し切れたらUPします。
【続編】PHP+Twitter API 1.1 複数のキーワードでつぶやきを検索して公式RTするで作ったPHPファイルでは、ファイル構造が

//twitteroauthフォルダのファイル構成
// ./twitteroauth/twitteroauth.php
// ./twitteroauth/OAuth.php

という風にしてあるので、(任意の名前をつけたプログラム).phpを入れた階層に「twitteroauth」フォルダを作って、twitteroauth.php、OAuth.phpを入れるか、

require_once('./twitteroauth/twitteroauth.php');

の「./twitteroauth/」を消して、

require_once('twitteroauth.php');

に修正して、3つのファイルを同一フォルダに入れる。

cronを設定

自分はロリポップのスタンダードプランを使っているので、
cron登録数は10個
最小実行間隔は1分
警報・注意報情報をリツイートするには十分かな。
スタンダードプラン 詳細はこちら

ロリポップのcron設定の詳しい方法はこちら

5分おきに、某ロボットアニメに出てくる特務機関名を冠したTwitterアカウントのツイートから、「栃木」を含むものを公式RTするようにしてみたので、しばらくほっといて様子見です。

ロリポップでは、実行したcronの実行結果をメールで受け取れる。
無事、目当てのツイートを自動RTできた。

これで寝れる〜。

スポンサーリンク
レクタングル(大)