ラグマスのボスカード抽選情報ボットを作成したので、備忘録として記載する。

免責事項に記載の通り、可能な限り正確な情報を掲載するよう努めていますが、誤情報が入り込んだり、情報が陳腐化することもあります。必ずしも正確性を保証するものではありません。また合法性や安全性なども保証しません。 また、掲載された内容によって生じた損害等の一切の責任を負いかねますので、ご了承ください。

ラグマスのアプリケーション共通利用規約の第12条禁止事項として、下記が定められている。 あくまで私は、今回の OCR による情報の取得は下記に抵触しないと判断したが、本ソースコードの流用は利用者ご自身の判断において行ってください。

第12条 禁止事項
お客様は、本サービスの利用に際して、次の事項のいずれかに該当する、またはそのおそれのある行為をしてはなりません。
(1)第三者を不安にさせること、脅迫すること、当惑させること、つきまとうこと、不快感を与えること
(2)性的な事物を連想させる言葉、脅迫的な言葉、人種偏見のある言葉、法に反した言葉、低俗な言葉、わいせつな言葉、中傷的な言葉、その他あらゆる不快感を与える言葉の使用
(3)当社またはその関係会社の役職員その他当社または本サービスの関係者を装う行為
(4)誹謗中傷、流言その他第三者の名誉または信用を毀損する発言
(5)商取引、営利目的の宣伝、禁制品の交換、団体への勧誘、宗教活動
(6)宗教、人種、性、民族、人権その他のあらゆる差別・偏見に基づく信条をもった、または商業活動を意図とした団体の結成および活動
(7)国際法、憲法、法律、条例その他の法令に抵触する行為
(8)公序良俗に反する行為、またはこれを教唆もしくはほう助する行為
(9)犯罪行為、不法行為もしくはこれらに結びつく行為、またはこれらを教唆もしくはほう助する行為
(10)自殺もしくは自傷に結びつく行為、またはこれを教唆もしくはほう助する行為
(11)青少年の家出を誘引ないし助長する行為
(12)面識のない異性との出会いや交際等を希望し、もしくは交際等に誘導する行為、または異性交際の相手方となるように誘う行為
(13)未成年者の人格形成等や健全な育成に悪影響を与え、または障害を及ぼす行為
(14)性行為その他わいせつな行為を目的とする行為、わいせつ、児童ポルノまたは児童虐待に相当する情報を表示する行為、もしくはこれらの情報を集録した媒体を販売する行為、またはその送信、表示、販売を想起させる情報を表示しもしくは送信する行為
(15)実在する、または架空の人物へのなりすましその他これらに類する行為(他人のユーザIDの利用行為を含む)
(16)第三者の個人情報を収集、蓄積、開示もしくは伝達する行為、またはこれらを試みる行為
(17)過度に複数のモバイルデバイスに本アプリケーションを導入し、またはその他の方法により過度に複数のユーザIDの付与を受ける行為
(18)本サービスの内外を問わず、ユーザIDおよびポイント等その他一切のゲームデータを貸与、交換、譲渡、名義変更、売買、換金、質入、担保供与その他の方法により第三者に提供する行為、またはこれら行為を誘引・助長・宣伝等する一切の準備行為
(19)不正アクセス、他のお客様のパスワードを利用する等して他のお客様になりすます行為
(20)通信妨害行為、通信傍受行為、本サービスを運営するサーバーへの侵入行為または情報奪取行為
(21)コンピュータウィルスその他不正な情報を送信しまたは書き込む行為
(22)当社または第三者の知的財産権等その他一切の権利を侵害する行為
(23)本アプリケーションもしくはサーバーのバグその他の不具合の不公正な目的での使用、またはこれを教唆もしくはほう助する行為
(24)本アプリケーションもしくはサーバーの誤動作等、当社が意図していない一切の状態を利用して、自己または第三者が有利になるように行うすべての行為、またはこれを教唆もしくはほう助する行為
(25)不正ツール、不正アプリケーション、本アプリケーションの海賊版、チートツールその他本サービスの不正利用を目的としたプログラムの開発、配布もしくは使用、またはこれらの行為を第三者に誘発、推奨させるような一切の行為
(26)本アプリケーションまたは公式サイトの消去、改変(データの改ざんを含む)、修正、翻案、二次的著作物の作成、逆コンパイル、逆アセンブルもしくはリバースエンジニアリング、またはこれらの行為を第三者に誘発、推奨させるような一切の行為
(27)本アプリケーションの一部または全部(コピーを含む)の再頒布および貸与、ならびに本アプリケーションの再販または転売
(28)本サービスの運営を妨げる行為
(29)当社が禁止行為であることをお客様に通知し、または本アプリケーションもしくは公式サイト上で公表した行為
(30)その他、当社が不適切と判断する一切の行為

https://mobile.gungho.jp/reg/rules/terms.html

ラグマスの情報は基本的には OCR で取得することしかできないので、無償で利用できる Tesseract を利用する方針とした。 私自身本業がプログラマーではないので、比較的経験がある Python を採用した。 今回は、検索結果がユニークかつ需要がありそうなボスカードを対象とした。 当初は Disocord に投稿していたが、Twitter への投稿に変更した。

大まかな流れとしては、下記の通りである。

  1. 検索窓にボスカード名を都度入力し、検索結果に出てくる画面をキャプチャーする。

  2. キャプチャーした画像から、価格のみをクロップした画像と抽選残時間のみをクロップした画像に分け、OCR の精度をあげるために2値化する。

  3. 2値化した価格、および抽選残時間に値が入っている場合のみ、1. で取得した画像と共に、Twitter に投稿する。

余談だが、ラグマスには、リバース MVP の実装により、同名を含む別アイテムが存在する(例: アトロス、リバースアトロス)ので、検索結果が複数得られることがあったが、検索窓は一部正規表現が使えるようで、^ をつけることで回避できた。 今回は比較的容易なボスカードであったが、+15 装備やレアエンチャの通知にも応用は可能である。 また、これのために Mac で BlueStack を起動していたが、頻繁にフリーズしていたため、別のものを採用したほうが良いかもしれない。

ソースコードや具体的な利用方法は、GitHub を参照してください。