イカリングのステージ情報をスクレーピング→MongoDBに保存→Web APIでステージ情報を取得できるようにしました。
スプラトゥーンのステージ情報がとれるやつ(非公式)
もともとは自分用に勝敗記録アプリを作ろうとしてて、ステージ情報も必要になるので、ステージ情報用の機能を別APIとして独立させようと思った次第です。Microserviceというやつですね(流行ってるから言ってみたかっただけ。)
ただし検索機能まで休日中に実装間に合いませんでした。平日がクソ忙しいので一体いつになったら実装できるのやらです。スプラトゥーンやる時間削って実装しました(本末転倒)。過去の情報にどのくらい価値が有るのかはわかりませんが、眺めてみたら面白いんじゃないかなーって思います。
今のところDBの内容を全部返却するようになっています。これ検索できないと意味無くなりそうなので早めに実装したいですね。
もう同様のサービス絶対ありそうだけど自分で作ることに意義があると思ってるので…(ふるえ
検索機能まで作り終わったらソースをgithubに公開します。
→(2015/10/12)公開しました。retrorocket/splapi
デスノートが始まっちゃうので今日はこのへんで。
2017/01/30
サービスの公開を停止しました。DNSのAレコードごとAPIを削除しました。
ご利用ありがとうございました。金輪際子供向けゲームのツールは公開したくありません。良いこと一つもなかったです。
代替APIとしてstat.inkの作者さまがAPIを公開してくださっているので、そちらのご利用をご検討いただければと思います。
splapi.fetus.jp
(2017/02/07) 諸事情によりサービス公開停止理由を記載した記事を削除しました。何かございましたらメールかコメント欄にお願いいたします。
2016/09/26
2015-12-24T15:00:00のレギュラーマッチのステージ情報が誤っていたため修正しました。(シオノメ→アロワナ)
メールでのご指摘ありがとうございました。
2016/09/12
httpsで接続できるようにしました。http/2に対応させています。証明書はLet’s Encryptで取得しています。
Let’s Encrypt – Free SSL/TLS Certificates
2016/09/05
想定外のパスでAPIが実行できてしまう不具合を修正しました。(/regular/now.html等、任意の拡張子付きの形式で呼び出せる)
mojoliciousのformatsがデフォルトでONになってるの知りませんでした。
2016/04/19
/now, /next/, /next_all, /prev, /prev_all エンドポイントに全自分待望のstat.inkモードを追加しました。
stat_inkパラメータでonを指定すると、ステージ名とルール名がstat.inkのAPIに対応したもので返ってきます。
(origin_nameに日本語名、stat_ink_nameにstat.ink用の値が格納されます)
いちいちハッシュで変換かますのめんどくさかったので作ってよかったです。ちなみに実装のほうがメチャクソハードコーディングでブサイクなのですが、もうステージとルール追加ないだろうしいいやと思いました。
実行結果は例えばこんなかんじ。
ちなみにスクリプトにバグがあって、stat_inkフラグがずっとonになり続けてる状態が5分くらいありました。すみません。
2016/02/23
イカリングの情報を英語版で拾ってしまう問題と、DBの内容を日本語に修正しました。あと利用ルール守ってない人多すぎるのでほんと勘弁して下さい。
2016/01/27
利用者数も増えてきたようですので、API利用ルールを記載しました。問題が起こるとUAやIPで使用不可にしたりAPIキーを導入せざるを得なくなってしまうので、お手数ですが目を通していただけるとありがたいです。よっぽどのことがない限りはサーバ側でどうにかすべきだと思っているので、アクセスさばけないとかになりそうでもサーバ側でどうにかする予定です。
ちなみに今のところ210.172.144.35(ロリポップのどこか)からのアクセスはイエローカード気味です(UAもないしリファラもないしリンクされてる気配もないのでこっちでリンク元を調べられない&アクセス頻度的に個人利用じゃなさそうなので)
2016/01/06
2015/12/31-2016/01/01にかけて、日付に誤りのあるデータ(2015/12/31開始→2015/01/01終了等)が登録されていたためDB上の情報を修正しました。
スクリプトの修正自体は固定回線復旧後実施します。たぶん正月のnowとnext_allバグってたんじゃないかと思います。すみません。
#バグ報告ありがとうございました。助かりました。
#DBの修正とブログ記事の追記はテザリングでどうにかしました。月初めでよかったです。
2015/12/31
ブキがスクレイピングで取れるのをさっき知ったのでAPIで取得できるようにしました。
(更新用スクリプトが正常に動けば)新ブキ追加後の5分後にリストが更新されます。
たとえばこんなかんじ。
http://splapi.retrorocket.biz/weapons
2015/12/30
自分が必要になったので現在ゲーム上に存在するガチマッチのルールと、全マップのリストを返却するエンドポイントを作成しました。
(更新用スクリプトが正常に動けば)新ルール・マップ追加後の5分後にリストが更新されます。
たとえばこんなかんじ。
http://splapi.retrorocket.biz/maps
http://splapi.retrorocket.biz/gachi/rules
2015/11/18
(イカリングのデータ内容に誤りがあったことによる)11/13のデータの誤りを修正しました。
2015/10/15
map, ruleでOR検索ができるようにしました。カンマ(,)でパラメータを区切ってください。空白とかはいれないでください。
例えばこんな感じ。
splapi.retrorocket.biz/gachi?map=Bバスパーク,ヒラメが丘団地&rule=ガチヤグラ,ガチホコ
2015/09/13
cronのスクレーピングの実施時間見直しました。
2015/09/12
フェスのステージ情報を取得できるようにしました。ドキュメントにはまだ書いてません。
/next, /now, /next_allと組み合わせて使用できます。
?teamでチーム情報を絞り込めます。
たとえばこんなかんじ。
http://splapi.retrorocket.biz/fes?team=ボケ
検索に引っかからなかった場合、空の配列を返却します。
あと、書いてなかったけど、regularとgachiで、toパラメータで検索範囲を絞り込めます。
2015/09/03
特定時間を起点にするステージ情報を取得できるようにしました。
/next, /now, /next_allと組み合わせて使用できます。
たとえばこんなかんじ。
splapi.retrorocket.biz/regular/now?date=2015-09-01T14:00
splapi.retrorocket.biz/regular/next_all?date=2015-09-01T14:00
検索に引っかからなかった場合、空の配列を返却します。
2015/09/01
特定のマップ検索とガチマッチのルール検索ができるようにしました。
/, /next, /now, /next_allと組み合わせて使用できます。
たとえばこんなかんじ。
splapi.retrorocket.biz/regular?map=ネギトロ炭鉱
splapi.retrorocket.biz/gachi/next_all?rule=ガチヤグラ
検索に引っかからなかった場合、空の配列を返却します。
2015/08/31
とりあえず開催中のステージ情報と、次の1件と、次に開催されるすべてのステージ情報が取れるようにしました。
たとえば開催中はこんな感じ。
splapi.retrorocket.biz/regular/now