はじめに
この記事は、アイカツ! Advent Calendar 2018の14日目の記事です。内容としては、現在大好評稼働中のアーケードゲーム、データカードダス アイカツフレンズ!のマイページから情報を取得するツールを作成中で、その内容と進捗の紹介になります。
前日の記事はiyanayatudazeさんによるスギカツフレンズ!2018 レポ - ねむいでした。
ちなみに、これまでアイカツ! Advent Calendar 2018では以下のような技術系記事が投稿されています。
-
アイカツ!画像でLGTMできるChrome拡張機能をストアに公開しました - matのブログ
- 2日目
-
Aikatsu Music Medoly - アトリエあざらし
- 5日目
-
アイカツ!のマイページから情報を取得するやつを作る その1 - Qiita
- 7日目
-
アイカツ!のマイページから情報を取得するやつを作る 番外編その1 - 各環境で実行可能なバイナリをgoreleaserでビルドしてGitHub Releasesでリリースする
- 11日目
-
冴草きいちゃんがアイカツ!画像を探してくれるdiscord botを作った話 - nyakuroのブログ
- 12日目
aikatsu-dcd-parser
kakakaya/aikatsu-dcd-parser: Fetch and parse Aikatsu! DCD mypage data.
取得及びパースをするライブラリ本体と、それを利用したCLIツールの2つが含まれており、いずれも dcdkatsu
という名前でインポートや実行が可能です。
進捗
- ユーザーごとの公開デジタルバインダーの取得
- URLを指定したカードの取得
を実装し、v0.2.1としてリリースしました。
詳細はREADMEを参照してください。以下のようなデータが取得可能です。
デジタルバインダー
dcdkatsu binder <ユーザーID> <弾ID>
みたいな感じでやることで次のような結果を得られます。なお、弾IDはデジタルバインダーのページの末尾に付く数字で、12がフレンズ1弾、13がフレンズ2弾、……16がフレンズ5弾に相当します。スターズのほうとのつながりがなく、謎です。
{
"series_id":16,
"series_name":"フレンズ5弾",
"cards":[
{"code":"","name":"","rarity":"","stars":"","type":"","category":"","brand":"","dress_appeal":"","appeal_point":0,"owner_id":"RX...3x","owned":false,"series_id":16,"url":"http://mypage.aikatsu.com/mypages/detail/NP10_H5_U_PR_Qt_001_T01/_00/16/RX...3x/","image_url":"http://mypage.aikatsu.com/images/cardlist/card/458005/f5-1bfr_00.png"},
{"code":"","name":"","rarity":"","stars":"","type":"","category":"","brand":"","dress_appeal":"","appeal_point":0,"owner_id":"RX...3x","owned":false,"series_id":16,"url":"http://mypage.aikatsu.com/mypages/detail/NP10_H5_U_PR_Qt_001_B01/_00/16/RX...3x/","image_url":"http://mypage.aikatsu.com/images/cardlist/card/458005/f5-2bfr_00.png"},
{"code":"","name":"","rarity":"","stars":"","type":"","category":"","brand":"","dress_appeal":"","appeal_point":0,"owner_id":"RX...3x","owned":false,"series_id":16,"url":"http://mypage.aikatsu.com/mypages/detail/NP10_H5_U_PR_Qt_001_S01/_00/16/RX...3x/","image_url":"http://mypage.aikatsu.com/images/cardlist/card/458005/f5-3bfr_00.png"},
...
],
"owner_id":"RX...3x","url":"http://mypage.aikatsu.com/mypages/digital_binders/RX...3x/16","data_get_date":"2018-12-14T00:56:00+09:00"
}
カード
カードについては取得がユーザーのIDと紐付いていたり、一意に推測することが困難なため、URLを指定して取得する形になっています。上記バインダーのコマンドで取得したものを使ってもよいし、いい感じにやっても大丈夫です。
dcdkatsu card <カードURL>
{
"code": "F5-5",
"name": "アートレボリューショントップス",
"rarity": "ベストフレンズレア",
"stars": "★★★",
"type": "キュート",
"category": "トップス",
"brand": "ピュアパレット",
"dress_appeal": "ベストピュアパレットウィッシュ",
"appeal_point": 900,
"owner_id": "RX...3x",
"owned": true,
"series_id": 16,
"url": "http://mypage.aikatsu.com/mypages/detail/NP10_H5_U_PR_Qt_002_T01/_00/16/RX...3x",
"image_url": "http://mypage.aikatsu.com/images/cardlist/card/458005/f5-5bfr_00.png"
}
ユーザー
その1で書いてたように、v0.1.0で実装してたけどおもしろワンライナーの動画だけ書いてたけど出力を載せ忘れてたので。
dcdkatsu user <ユーザーID>
{
"id": "RX...3x",
"url": "http://mypage.aikatsu.com/mypages/index/RX...3x",
"name": "@kakakaya",
"avatar_url": "http://mypage.aikatsu.com/avatar/2_20-136_1-9_0_1_6-26_27_20-136_0_0.png",
"last_play_location": "2018年12月05日・東京都",
"cute_level": 56,
"cool_level": 44,
"sexy_level": 20,
"pop_level": 16,
"idol_rank": 43,
"idol_rank_level": "いちにんまえのアイドル",
"fan_count": 322722,
"played_cards_count": 252,
"data_get_date": "2018-12-14T01:09:00+09:00"
}
おわりに
火曜にも書いたし明日が忙しいしでてんやわんやです。ネタは無限にあるのでもしかしたら土曜か日曜にも差し込むかも。
なお、今後以下のような機能の実装を考えています。
- 取得間隔の制限(サーバへの負荷を防ぐため)
- 取得可能な機能の追加
- ログインが必要な部分の取得
- フレンズ
- バッジ
- ランキング実績
- 大会実績
- アーカイブ
- アイカツスターズ!1弾〜5弾
- アイカツスターズ!星のツバサ編
- ↑色々違っていて面倒そうという気分
- ログインが必要な部分の取得
- 取得結果の保存、差分表示
- テストの作成、CI
- やるだけ
- ランキング周りが面倒そう
- v0.2.0でアホなミスしたので早く入れたい
- リリース方法のいい感じ化
- .debを配布したい
- AURに置きたい
-
活用例
- 持ってないカード一覧出力のサンプルとか
他にも欲しい機能やマサカリがあったら、この記事のコメントにお願いします。これは非公式なものであり、データカードダス アイカツフレンズ!公式や、バンダイナムコ、その他権利者の方に問い合わせないようお願いします。また、怒られたらすぐに消します。
明日はkakakayaさんの「kakakaya/aikatsu-dcd-parser 番外編その2」です。