FileMaker で Twitter に投稿する
現在 Raspberry Pi で Twitter bot を運用している。
Raspberry Pi + PHP で Twitter bot を作る – with a Christian Wife
https://wacw.cf/2018/02/15/twitterbot-with-php-on-pi/
しかしツイート内容を編集するには、Raspberry Pi 上のファイルを編集する必要があり面倒だった。自由度を持たせるには Mac の FileMaker を Twitter bot として使いたい。
いろいろ方法を研究してみて、あまりスマートとは言えないがいい方法を見つけた。この方法だとランダムな文章をツイートしたり、複数アカウントの切り替えもできたりする。常時起動する Mac が必要になるが、私は普段使いの Mac 以外に、サーバー用に 24 時間稼働している Mac があるので、それを使えばいい。
(1)Tw というコマンドラインから Twitter に投稿できるツールをインストールする。
Tw: Twitter client on Ruby.
http://shokai.github.io/tw/
Mac にもインストール可能だ。
インストール後 $ tw
を実行するとブラウザが開くので数字を入力して認証する。ツイートするには $ tw こんにちは
のようにコマンドを実行するだけでいい。
ツイートには毎回 Yn の確認が出てくるが –yes を付けることでそれをスキップできる。
2つ目のアカウントを追加するには $ tw --user:add
を実行(事前にブラウザで追加したいアカウントにログインしておく)。ブラウザが開くので数字を入力して認証する。
以下のコマンドでユーザー一覧を確認できる。
$ tw --user:list
例えば wacw というユーザーで投稿するなら以下のようにする。
$ tw ユーザー2です。 --user=wacw
これで複数アカウントでツイートできるようになった。
参考:
Raspberry Pi の CUI から tw でツイートする | ε-ARK Project
http://www.e-ark.jp/2013/02/20/raspberry-pi-%e3%81%ae-cui-%e3%81%8b%e3%82%89-tw-%e3%81%a7%e3%83%84%e3%82%a4%e3%83%bc%e3%83%88%e3%81%99%e3%82%8b/
(2)FileMaker で「投稿テキスト」というテキストフィールドを作成する。
Perform AppleScript というスクリプトステップを作成。まずは Native AppleScript で以下のコマンドを実験してみよう。
1tell application "Terminal"
2activate
3do script with command "tw テスト --yes"
4end tell
これで Terminal が開いて Tw からの投稿が行われる。
投稿後に Terminal を閉じるなら以下のようにする(投稿に少し時間が掛かるので、3秒の delay を付けている)。
1tell application "Terminal"
2activate
3do script with command "tw テスト2 --yes"
4delay 3
5quit
6end tell
もしウィンドウだけ閉じるなら quit を close window 1 とすればいい。これで投稿後に Terminal のアクティブウィンドウが閉じられる。
「投稿テキスト」フィールドの内容をツイートするには、Perform AppleScript のオプションで Calculated AppleScript を選択。以下のように記述する。
1"tell application \"Terminal\""&¶&
2"activate" & ¶&
3"do script with command \"tw " & Table::投稿テキスト & " --yes\"" & ¶&
4"delay 3"&¶&
5"quit"&¶&
6"end tell"
これで FileMaker からツイートできるようになった。1で書いたようにユーザーを指定すれば指定したアカウントからの投稿も簡単だ。投稿のたびに Terminal が開くけれど、それは良しとしよう。
参考:
フリーなツールを使ってメールをFMProに取り込んでみる[後編]
http://www.fmpro.jp/contents/040080/report.html
AppleScript でターミナルを操作する | まくまくMacノート
https://maku77.github.io/mac/applescript/terminal.html
AppleScript でアプリケーションを起動・終了する – ObjecTips
http://koze.hatenablog.jp/entry/2015/05/26/000000
AppleScript でウィンドウを閉じる – ObjecTips
http://koze.hatenablog.jp/entry/2015/05/27/000000
ASH Planning: AppleScript でアプリケーションの起動と終了
http://ashplanning.blogspot.com/2016/02/activate-quit-applications.html
(3)FileMaker からツイートできるようになったところで、次はこれを定期的に実行したい。Keyboard Maestro を使う手もあるが、Mac の標準機能だけでやってみる。
参考:
Keyboard Maestro 8.2.4: Work Faster with Macros for macOS
https://www.keyboardmaestro.com/main/
(3-1)Automator を使って、FileMaker のスクリプトを実行するアプリケーションを作成する。
Automator を開き「File>New」で Application を選択し、Choose をクリック。
(3-2)Library から Run AppleScript を見つけ、右側へドラッグアンドドロップ。
(3-3)以下のスクリプトを書く。
1tell application "FileMaker Pro Advanced"
2 activate
3 open alias "[FileMaker のファイルへのパス]"
4 tell application "System Events" to keystroke "1" using {command down}
5end tell
FileMaker のファイルへのパスはシステムディスク名から始め、ディレクトリは /(スラッシュ)ではなく :(コロン)で区切る。
最後は keystroke で FileMaker のスクリプトを選択している(do script を使う方法は上手くいかなかった)。2で作成したスクリプトを実行するキーボードショートカットに合わせて数字の部分( "1" )を変更すればいい。
参考:
キーボードを操作できるApplescript | 戦業主夫
http://sengyoaruji.iinaa.net/20160603a.html
Complete list of AppleScript key codes
https://eastmanreference.com/complete-list-of-applescript-key-codes
Apple ScriptでFMのスクリプトを動かすには
http://mtlab.ecn.fpu.ac.jp/WSM_1998/981014160346.html
(3-4)スクリプトを保存する。app の拡張子のアプリケーションができあがる。
試しにダブルクリックして実行してみるとツイートできるはず。初回は Preferences>Security & Privacy>Privacy へのアプリの登録が求められるはず。
(3-5)cron へ 3-4 のアプリケーションを登録する。
$ crontab -e
例えば毎日 15 時にツイートするなら以下。
0 15 * * * open [ 3-4 のアプリケーションへのパス]
ツイートのたびに FileMaker や Terminal が開くことになるが、FileMaker で投稿内容を管理できると便利なので悪くないと思う。
参考:
Mac で nano エディタを使う – with a Christian Wife
https://wacw.cf/2019/03/01/nano-in-mac/
crontabでAppleScriptを定期的に実行する – ゆっくり技術ノート!
https://coro.hatenadiary.jp/entry/2014/03/27/214439
using crontab to run workflow apps i've created? | Mac Support
https://macosx.com/threads/using-crontab-to-run-workflow-apps-ive-created.290932/