小ネタです。XのことをいつまでもTwitterと呼び続けています。
メイプル公式サイトの更新情報が欲しい #
メイプルは毎週水曜日にメンテナンスが入りますが、その更新に伴う情報が公式Twitterから出るのが微妙に遅い気がしています。それに加え、すべての情報がTwitterでお知らせされるわけではないようです。
一番利用するSNSがTwitterで、メイプルの情報収集をTwitter上で完結させたかったので、メイプルストーリー公式サイトの 「お知らせ」 が更新されたら自動でツイートする非公式Botを作成しました。
2024.01.25 【メンテナンス】 【完了】1月25日(木)臨時システムメンテナンスのお知らせ https://t.co/7GEbZYgHaC
— メイプルストーリー更新情報bot (@JMS_notice) January 25, 2024
技術的な部分のメモ書き(クリック)
言語はpython3.11。利用パッケージは以下の通り。
- pandas
- google-cloud-storage
- google-cloud-firestore
- requests
- bs4
メイプルストーリー公式サイト「お知らせ」ページを15分間に1回スクレイピング
1。
前回スクレイピング時に作成した記事リストと比較し、新着記事がある場合はその記事の「日付、カテゴリー、タイトル、URL」をツイート。その後、ツイート内容を記事リストに追記。記事リストを上書き保存。新着記事が無い場合はなにもしない。
スクリプトはGoogleCloudFunction(第1世代)で実行。GoogleSchedulerで実行スケジュールを設定。
記事リストはcsv形式でGoogleCloudStorageに収めて、スクリプト実行時に毎度読み込みに行く。
公式サイトが動的サイトだったので、その部分のスクレイピングに PhantomjsCloudのAPIを利用。動的サイトのスクレイピングはseleniumを利用するのが一般的らしいが、GoogleCloudPlatform上で動かすのが難しいのでこちらを採用。
スマートフォンアプリのTwitterには、ユーザがツイートすればプッシュ通知で知らせてくれる機能があります。
これをオンにしておけば、メンテナンスの状況やアプデ情報をそれなりに早く入手できると思います。ただし動作がバグってBOTがツイートを連投し始めたりすると、ものすごい数の通知が行くことになります。そうならない自信がありません。
BOTといえばロボット、ロボットといえばアルファロボ
あくまで非公式であること、運用者が素人であること、公式サイトのフォーマットが変わったら一瞬で停止すること、等々、ファンメイドであることをご理解いただいたうえでご利用いただければと思います。
次にやりたいこと #
更新情報だけじゃなくてボスリセットの通知や、デイアのGポーション、絆の羽根好感度リセットの通知なんかもあれば便利かもしれないですね。
要望や意見等を聞きながら、ちょっとずつアップデートしていきたいと思います。気が向いたらDiscord版のBotも作ってみます。
DiscordのBotは作ったことないのでちょっと時間がかかると思いますが、進捗あればまたお知らせします。
misskey版Botも作成しました。
RSS通知が利用できるので、ブログに埋め込んだり、Feedlyに登録したりしてご活用いただけると思います。
大手サーバではなく自鯖に立てたので動作はかなり重いですが、Fediverse在住の方はこちらをご活用ください。
Discord版はWebhookを利用したBotは作成できたのですが、サーバに招待していただけるようなBotアカウントの作成方法がいまいちわからず。
Webhook版をへびにょろDiscordで試し運用していますが、Discord版が一番便利です。ぼちぼちやります。
Discord版は技術足らず、結局サーバを立てる形になりました。あくまでも通知を受けるだけです(リアクションはできます)。また、アナウンスチャンネルを設定しているので、ご自分の管理されているサーバで通知を受け取ることができます。
仕組み的にTwitterのほうが情報が早いですが、Discordをよく利用されている方、自分の管理されているサーバに更新情報を通知したい方はこちらを利用していただければと思います。加入・退出自由です。よろしくお願いします。
Twitter版に「不具合掲示板」を監視する機能を搭載しました。1日に4回、不具合掲示板を確認し、更新があればツイートします。
また、Twitterの無料版APIの制約が厳しくなったせいで、1日の投稿上限が約15件になりました。
つまり、1日に15件以上公式ホームページの更新が行われた場合、BOTが止まります。
というか、CHASERの時に15件以上の更新が行われたせいですでに1回BOTが止まっています…。
有料版APIの法外に高い料金は払えませんし、個人開発なので仕方ないと割り切っています。