Raspberry Piで作る全自動417マシン
ちぺらです。牛の皮膚にうつつを抜かしていたので、久しぶりに理科の実験をします。
ところで、皆さんは夏川椎菜さんをご存知でしょうか。
夏川さんは声優事務所ミュージックレインに所属する女性声優で、演じた役としては(ほぼ)デビュー作の「アイドルマスターミリオンライブ!」望月杏奈役、「ハイスクール・フリート」岬明乃役などが有名です。最近だと「IDOLY PRIDE」で奥山すみれを演じたのが記憶に新しいところでしょうか。すみれちゃ^~
また、2015年にユニット「TrySail」として、2017年にソロ歌手としてもデビューされており、特に個人活動ではデビュー以来5枚のシングル、1枚のアルバム、1枚のEPを発売するなど声優兼業アーティストとしてはかなりの実力者といえます。今キテる声優アーティスト(ちぺら調べ)同率1位です(ここまで一息)
さて、夏川さんのオタ……ファン、通称ヒヨコ群には妙な習性があることが知られています。午前4時17分に「417」とだけツイートするのです。気持ち悪いですね。
ぼくもファンの端くれであるからには当然417ツイをする義務があるのですが(そんなものはない)、いかんせん時間が悪い。ぼくのような社会に高度に適応した人類にとって、午前4時17分というのは一般的に睡眠時間の真っ只中にあたります。当然、パソコンに張り付いて時計をにらみながらツイートすることなどできません。ということで、今回はいわゆるbotを作っていくことになります。
毎日決まった時刻に定型文をツイートするだけなら、まず考えるのはIFTTTの利用でしょう。しかし、残念ながらIFTTTでは狙った時刻ぴったりにツイートを送信するのは難しいようです。実際にフォロワーがIFTTTを運用していましたが、4時17分を狙っても4時15分ごろにツイートが送信されたりと結構ブレている印象でした。これではいただけないのでIFTTTはボツ、かといって夜中じゅうPCを起動させるとファンがうるせえし、他に何か方法が……方法……
半導体がバカ高くなる前に何となく買ったはいいけど、イマイチ使い道がなくてしまい込んでいたRaspberry Pi 3 Model B+じゃないか~!!!(大茶番)
というわけで、以下ラズパイにBotを実装します。以前のキーボード自作を見ていただくと分かる通り、この手の作業は素人なので大目に見てください。なお、各項目に貼ってあるリンクは作業をパk……参考にしたサイトです。
・SSHの設定
まずはリモートでログインできるようにSSHをセットアップし、ついでに設定もいくつかいじっておきます。具体的にはGUIの起動を無効化したり、なんで入ってるかわからないマイクラを削除したりとかそういう作業をします。ここは特にハマることもなく、つつがなく終わると思います。
・API KeyとTokenの発行
英作文の時間です。API取得の目的を100ワード(100字だったかもしれない)以上で記述しないといけないのですが、今回作るような中身ペラッペラのBotでは至難の業です。学生時代に培った文章水増し術を駆使し、なんとかいい感じに内容を嵩増しして提出します。問題がなければ数日でAPI発行お知らせメールが来るので、Twitter Developer PortalからAPI Key, API Key Secret, Access Token, Access Token Secretの四種を発行してメモっておきます。これは後から参照できないのでメモ必須(メモを忘れると再発行するハメになる)。
・Botの実装
こちらのサイトを参考にBotをつくります。まず落としたファイルの.env.sampleを.envにリネームし、その中身にAPI KeyとAccess Tokenをコピペしておきます。
次に、main.pyの中身をいじってBotの処理を記述します。今回は毎日4時17分にツイートを送信したいので、無限ループの中で1秒ごとに現在時刻を調べ、念のため1秒マージンを取って4時17分1秒になったらツイートを送信するプログラムを組みました。
実行するときはバックグラウンドで行わせます。
$ nohup python main.py &
これでいいはずですが、念のため実行中のプロセスにmain.pyがあるかどうか確認しておきます。
$ ps -x
main.pyがあれば、あとは放っておけば417TLに自動参加できるはずです。
417
— ちぺら (@cipher_413) 2021年11月16日
(*>△<)<今日も椎菜はかわいら!
— ちぺら (@cipher_413) 2021年11月16日
\しいな!/
(*>△<)<愛を叫べてたの!
\しいな!!/
(*>△<)<椎菜に会えてうれ!
\しいな!!!/
うむ、完璧。これで枕を高くして眠れるというものですね。