見出し画像

お題botのできるまで

おなじみのうたの日は、お題の出るタイミングも含めて謎とスリルに包まれているわけですが、お題が出たらなるべく早くに知りたい、と考えたのがbotを作ったそもそものきっかけでした。

まず家で眠っていた古いパソコンを引っ張り出して、簡単なシェルスクリプトを書きました。こういった流れになります。

  1. うたの日のトップページをテキストとして読み込みます

  2. 読み込んだテキストを整形し、題にかかわる部分を抜粋して「odai-old」として保管します

  3. 数分待ちます

  4. 再びうたの日のトップページをテキストとして読み込みます

  5. 読み込んだテキストを整形し、題にかかわる部分を抜粋して「odai-new」として保管します

  6. 「odai-old」と「odai-new」の内容を比べます。もしも差があるときは「odai-new」の内容を私にメールします。もしも差がないときは何もしません

  7. 「odai-new」の内容を「odai-old」にコピーします

  8. 項3に戻って繰り返します

とまあ、こういった仕組みを作ってしばらくはごく内々に使っておりました。そのうちに「あんた、出題のタイミングがまちまちなのにやけに投稿が早いね」とある方に言われ、実は、と打ち明けたところ「それは公開してもらわないと困るな?!」ということになり、それなら、とTwitterに公開する運びになりました。当初はAPI(Webサービスとのお話しの約束事みたいなもの)を使わない野良botとして始めましたが、途中からTwitter開発者向けプラットフォームに正式に登録してAPIを使用するようになりました。

Twitter bot 化にあたっては、こちらの記事をほぼそのまま拝借しました。ありがとうございます。

Tweepyはライブラリと言って、Pythonというプログラム言語におけるTwitter API を使いやすくするパッケージのようなものでして、有志が無償で公開しています。Mastodonには「Mastodon.py」Blueskyには「atproto」というライブラリがあって、ひとつわかると他はそんなに難しいものではありません。

いまではTwitterでふたつ、他にMastodon、Blueskyでもお題botを運用しています。botが4台でも4回うたの日を読み込んでいるわけではなくて、あくまで一度読んだ内容を4つのbotでシェアして利用しています。いうまでもなく、うたの日のサーバに負担を与えないためです。また、当初は等間隔で読み込んでいたところを、のちに乱数によって適当間隔に散らして読み込むように改修しています。

そして今月には自宅にちょっとした実験サーバを立てたその一角に移植しまして、実体を持たない仮想パソコンのような形になりました。出張先からでもいろいろ手を加えることもできますよ。

(了)