From e4105f4eee59c2d683670790f52d632bf624b575 Mon Sep 17 00:00:00 2001 From: Awbugl Date: Sat, 22 Oct 2022 23:22:22 +0800 Subject: [PATCH] Update docs --- .gitignore | 1 + README.md | 27 ++++--- assets/{charassets.md => char.md} | 2 + assets/{iconassets.md => icon.md} | 2 + assets/preview.md | 23 ++++++ assets/{songassets.md => song.md} | 2 + data/challenge.md | 41 ++++++++++ data/density.md | 42 +++++++++++ data/playdata.md | 12 ++- data/theory.md | 4 +- data/update.md | 4 +- deploy.md | 11 +-- song/{songalias.md => alias.md} | 14 ++-- song/{songinfo.md => info.md} | 4 +- song/{songlist.md => list.md} | 4 +- song/{songrandom.md => random.md} | 4 +- user/best.md | 121 ++++++++++++++++++++++++++++++ user/{userbest30.md => best30.md} | 2 +- user/info.md | 118 +++++++++++++++++++++++++++++ user/userbest.md | 121 ------------------------------ user/userinfo.md | 118 ----------------------------- 21 files changed, 400 insertions(+), 277 deletions(-) create mode 100644 .gitignore rename assets/{charassets.md => char.md} (86%) rename assets/{iconassets.md => icon.md} (86%) create mode 100644 assets/preview.md rename assets/{songassets.md => song.md} (94%) create mode 100644 data/challenge.md create mode 100644 data/density.md rename song/{songalias.md => alias.md} (81%) rename song/{songinfo.md => info.md} (97%) rename song/{songlist.md => list.md} (96%) rename song/{songrandom.md => random.md} (93%) create mode 100644 user/best.md rename user/{userbest30.md => best30.md} (99%) create mode 100644 user/info.md delete mode 100644 user/userbest.md delete mode 100644 user/userinfo.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..85e7c1d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.idea/ diff --git a/README.md b/README.md index 1ef0b1d..2539e31 100644 --- a/README.md +++ b/README.md @@ -16,25 +16,32 @@ For the deploy tutorial of AUA, please refer to [How to deploy AUA](/deploy.md). ### API Entry -+ [user/info](/user/userinfo.md) -+ [user/best](/user/userbest.md) -+ [user/best30](/user/userbest30.md) ++ [user/info](/user/info.md) ++ [user/best](/user/best.md) ++ [user/best30](/user/best30.md) -+ [song/info](/song/songinfo.md) -+ [song/list](/song/songlist.md) -+ [song/alias](/song/songalias.md) -+ [song/random](/song/songrandom.md) ++ [song/info](/song/info.md) ++ [song/list](/song/list.md) ++ [song/alias](/song/alias.md) ++ [song/random](/song/random.md) -+ [assets/icon](/assets/iconassets.md) -+ [assets/char](/assets/charassets.md) -+ [assets/song](/assets/songassets.md) ++ [assets/icon](/assets/icon.md) ++ [assets/char](/assets/char.md) ++ [assets/song](/assets/song.md) ++ [assets/preview](/assets/preview.md) [^1] + [data/update](/data/update.md) + [data/theory](/data/theory.md) + [data/playdata](/data/playdata.md) ++ [data/density](/data/density.md) ++ [data/challenge](/data/challenge.md) [^2] + +[^1]: The `assets/preview` API is not available for release version of AUA. It is provided by [AffPreview](https://github.com/Arcaea-Infinity/Aff2Preview). + +[^2]: The `data/challenge` API is not available for release version of AUA. ### Error status diff --git a/assets/charassets.md b/assets/char.md similarity index 86% rename from assets/charassets.md rename to assets/char.md index 7d5a40c..110f472 100644 --- a/assets/charassets.md +++ b/assets/char.md @@ -1,5 +1,7 @@ ## assets/char +> Note: It is not recommended to use this API frequently. + | arguments | description | optional | |:----------|:-----------------------------|----------| | partner | partner id | false | diff --git a/assets/iconassets.md b/assets/icon.md similarity index 86% rename from assets/iconassets.md rename to assets/icon.md index 639e9f6..a1e4254 100644 --- a/assets/iconassets.md +++ b/assets/icon.md @@ -1,5 +1,7 @@ ## assets/icon +> Note: It is not recommended to use this API frequently. + | arguments | description | optional | |:----------|:-----------------------------|----------| | partner | partner id | false | diff --git a/assets/preview.md b/assets/preview.md new file mode 100644 index 0000000..c34e548 --- /dev/null +++ b/assets/preview.md @@ -0,0 +1,23 @@ +## assets/preview + +> Note: It is not recommended to use this API frequently. + +| arguments | description | optional | +|:-----------|:-------------------------------------|-------------------------------------------------| +| songname | any song name for fuzzy querying | true when songid is not null, otherwise false | +| songid | sid in Arcaea songlist | true when songname is not null, otherwise false | +| difficulty | accept format are 3 or byn or beyond | true | + +###### Tag + +* Enable Cors + +#### Example + ++ `{apiurl}/botarcapi/assets/preview?songid=ifi` + +###### Content-Type + +``` +image/png +``` \ No newline at end of file diff --git a/assets/songassets.md b/assets/song.md similarity index 94% rename from assets/songassets.md rename to assets/song.md index 1d39e74..b5d5401 100644 --- a/assets/songassets.md +++ b/assets/song.md @@ -1,5 +1,7 @@ ## assets/song +> Note: It is not recommended to use this API frequently. + | arguments | description | optional | |:-----------|:-------------------------------------------------------------------|-----------------------------------------------------------| | songname | any song name for fuzzy querying | true when songid or file is not null, otherwise false | diff --git a/data/challenge.md b/data/challenge.md new file mode 100644 index 0000000..2f5d148 --- /dev/null +++ b/data/challenge.md @@ -0,0 +1,41 @@ +## data/challenge + +> Note: It is designed for the release version of AUA, and not available for the release version. + +| arguments | description | optional | +|:----------|:--------------------|-------------------------| +| path | request arcapi path | false | +| body | request body | true when body is empty | +| time | request timestamp | true | + +#### Allowed pathes + +```json5 +[ + "auth/login", + "user", + "user/me", + "friend/me/delete", + "friend/me/add", + "score/song/friend", + "purchase/me/stamina/fragment", + "world/map/me" +] +``` + +###### Tag + +* Need Token + +#### Example + ++ `{apiurl}/botarcapi/data/challenge?path=auth/login` + +##### Return data (Edited for readability) + +```json5 +{ + "status": 0, + "content": "JfdDAIQBAAAkdLOHw7PyRfWyhkJvH1Xzfevm7quQMwOk5Lc99fD1vgesJ8uf5ZJgPfgtYlYGDu1FLk31AaNAYfGocKoRMMSAlqDc4y/aZxXCn4cGjnJ7ovR9rkCQG8W1sJ9cHuK4CDo=" +} +``` diff --git a/data/density.md b/data/density.md new file mode 100644 index 0000000..abb7cf3 --- /dev/null +++ b/data/density.md @@ -0,0 +1,42 @@ +## data/density + +> Note: It is a large data set, so it is not recommended to use this API frequently. + +| arguments | description | optional | +|:-----------|:-------------------------------------|---------------------------------------------------------| +| songname | any song name for fuzzy querying | true when songid or file is not null, otherwise false | +| songid | sid in Arcaea songlist | true when songname or file is not null, otherwise false | +| difficulty | accept format are 3 or byn or beyond | true | + +###### Tag + +* Enable Cors + +#### Example + ++ `{apiurl}/botarcapi/data/density?songid=ifi&difficulty=2` + +##### Return data (Edited for readability) + +```json5 +{ + "status": 0, + "content": [ + [ + 1000, // fscore, (score/10000) + 115, // fpotential (potential/10) + 1 // count + ], + [ + 1000, + 116, + 1 + ], + [ + 1000, + 117, + 1 + ] + ] +} +``` diff --git a/data/playdata.md b/data/playdata.md index 5f2c57a..59b5022 100644 --- a/data/playdata.md +++ b/data/playdata.md @@ -1,4 +1,8 @@ -## playdata +## data/playdata + +> Note: It is a large data set, so it is not recommended to use this API frequently. + +> Note: It is recommended to use `data/density` API. | arguments | description | optional | |:-----------|:-------------------------------------|---------------------------------------------------------| @@ -16,14 +20,14 @@ + `{apiurl}/botarcapi/data/playdata?songid=ifi&difficulty=2&start=1280&end=1288` -##### Return data +##### Return data (Edited for readability) -```json +```json5 { "status": 0, "content": [ { - "fscore": 1000, + "fscore": 1000, // (score/10000) "count": 125 }, { diff --git a/data/theory.md b/data/theory.md index 76fff21..aca10aa 100644 --- a/data/theory.md +++ b/data/theory.md @@ -1,4 +1,4 @@ -## theory +## data/theory | arguments | description | optional | |:-------------|:--------------------------------------------------------------------------------|-------------------------------------------------| @@ -17,7 +17,7 @@ ##### Return data (Edited for readability) -```json +```json5 { "status": 0, "content": { diff --git a/data/update.md b/data/update.md index 83845c2..b3b21e0 100644 --- a/data/update.md +++ b/data/update.md @@ -1,4 +1,4 @@ -## update +## data/update ###### Tag @@ -10,7 +10,7 @@ ##### Return data -```json +```json5 { "status": 0, "content": { diff --git a/deploy.md b/deploy.md index 166dd0e..011b583 100644 --- a/deploy.md +++ b/deploy.md @@ -10,15 +10,6 @@ * (optional) add some nodes * start service -### Nuget Packages Dependencies - -| PackageName | Version | -|:----------------------------------------|:--------| -| Microsoft.AspNetCore.Mvc.NewtonsoftJson | 6.0.1 | -| sqlite-net-pcl | 1.7.335 | -| Newtonsoft.Json | 13.0.1 | -| Downloader | 2.3.5 | - ### Configuration fields * config.json @@ -63,7 +54,7 @@ * ```bash socat -d TCP4-LISTEN:6161,reuseaddr,fork TCP4:arcapi-v2.lowiro.com:443 ``` - * It is highly recommended that set it as a background task using nohup, screen or whatever you like + * It is highly recommended that set it as a background task * Windows server diff --git a/song/songalias.md b/song/alias.md similarity index 81% rename from song/songalias.md rename to song/alias.md index ac51492..e1abbbc 100644 --- a/song/songalias.md +++ b/song/alias.md @@ -1,5 +1,7 @@ ## song/alias +> Note: It is recommended to use `song/list` API as the local cache data source. + | arguments | description | optional | |:-----------|:---------------------------------------------------------------------------|-------------------------------------------------| | songname | any song name for fuzzy querying | true when songid is not null, otherwise false | @@ -15,12 +17,12 @@ ##### Return data -```json +```json5 { - "status": 0, - "content": [ - "色号", - "对立色" - ] + "status": 0, + "content": [ + "色号", + "对立色" + ] } ``` diff --git a/song/songinfo.md b/song/info.md similarity index 97% rename from song/songinfo.md rename to song/info.md index f1b9e67..ce2c254 100644 --- a/song/songinfo.md +++ b/song/info.md @@ -1,5 +1,7 @@ ## song/info +> Note: It is recommended to use `song/list` API as the local cache data source. + | arguments | description | optional | |:-----------|:---------------------------------------------------------------------------|-------------------------------------------------| | songname | any song name for fuzzy querying | true when songid is not null, otherwise false | @@ -15,7 +17,7 @@ ###### Return data -```json +```json5 { "status": 0, "content": { diff --git a/song/songlist.md b/song/list.md similarity index 96% rename from song/songlist.md rename to song/list.md index 363341c..0654eb0 100644 --- a/song/songlist.md +++ b/song/list.md @@ -1,5 +1,7 @@ ## song/list +> Note: It is a large data set, so it is not recommended to use this API frequently. + ###### Tag * Enable Cors @@ -10,7 +12,7 @@ ###### Return data (Edited for readability) -```json +```json5 { "status": 0, "content": { diff --git a/song/songrandom.md b/song/random.md similarity index 93% rename from song/songrandom.md rename to song/random.md index ac8c417..8efbc79 100644 --- a/song/songrandom.md +++ b/song/random.md @@ -1,5 +1,7 @@ ## song/random +> Note: It is recommended to use `song/list` API as the local cache data source. + | arguments | description | optional | |:-------------|:-------------------------------------------|----------| | start | range of start (9+ => 9p , 10+ => 10p) | true | @@ -22,7 +24,7 @@ var val = rating * 2 + (ratingPlus ? 1 : 0); ###### Return data -```json +```json5 { "status": 0, "content": { diff --git a/user/best.md b/user/best.md new file mode 100644 index 0000000..42309b2 --- /dev/null +++ b/user/best.md @@ -0,0 +1,121 @@ +## user/best + +| arguments | description | optional | +|:-------------|:---------------------------------------------------------------------------|-------------------------------------------------| +| user | user name or 9-digit user code | true when usercode is not null, otherwise false | +| usercode | 9-digit user code | true when user is not null, otherwise false | +| songname | any song name for fuzzy querying | true when songid is not null, otherwise false | +| songid | sid in Arcaea songlist | true when songname is not null, otherwise false | +| difficulty | accept format are 0/1/2/3 or pst/prs/ftr/byn or past/present/future/beyond | false | +| withrecent | boolean. if true, will reply with recent_score | true | +| withsonginfo | boolean. if true, will reply with songinfo | true | + +###### Tag + +* Need Token + +#### Example + ++ `{apiurl}/botarcapi/user/best?user=ToasterKoishi&songid=ifi&difficulty=ftr&withrecent=true&withsonginfo=true` + +###### Return data + +```json5 +{ + "status": 0, + "content": { + "account_info": { + "code": "062596721", + "name": "ToasterKoishi", + "user_id": 4, + "is_mutual": false, + "is_char_uncapped_override": false, + "is_char_uncapped": true, + "is_skill_sealed": false, + "rating": 1274, + "join_date": 1487816563340, + "character": 12 + }, + "record": { + "score": 9979257, + "health": 100, + "rating": 12.796285000000001, + "song_id": "ifi", + "modifier": 0, + "difficulty": 2, + "clear_type": 1, + "best_clear_type": 5, + "time_played": 1598919831344, + "near_count": 5, + "miss_count": 1, + "perfect_count": 1570, + "shiny_perfect_count": 1466 + }, + "songinfo": [ + { + "name_en": "#1f1e33", + "name_jp": "", + "artist": "かめりあ(EDP)", + "bpm": "181", + "bpm_base": 181.0, + "set": "vs", + "set_friendly": "BlackFate", + "time": 163, + "side": 1, + "world_unlock": false, + "remote_download": true, + "bg": "vs_conflict", + "date": 1590537604, + "version": "3.0", + "difficulty": 21, + "rating": 109, + "note": 1576, + "chart_designer": "夜浪VS東星\"Convergence\"", + "jacket_designer": "望月けい", + "jacket_override": false, + "audio_override": false + } + ], + "recent_score": { + "user_id": 4, + "score": 9992128, + "health": 100, + "rating": 11.76064, + "song_id": "macromod", + "modifier": 2, + "difficulty": 2, + "clear_type": 2, + "best_clear_type": 2, + "time_played": 1651198101733, + "near_count": 2, + "miss_count": 0, + "perfect_count": 1115, + "shiny_perfect_count": 1081 + }, + "recent_songinfo": { + "name_en": "MacrocosmicModulation", + "name_jp": "", + "artist": "JAKAZiD", + "bpm": "170", + "bpm_base": 170.0, + "set": "single", + "set_friendly": "MemoryArchive", + "time": 147, + "side": 0, + "world_unlock": false, + "remote_download": true, + "bg": "single2_light", + "date": 1645056004, + "version": "3.12", + "difficulty": 19, + "rating": 98, + "note": 1117, + "chart_designer": "Exschwas↕on", + "jacket_designer": "装甲枕", + "jacket_override": false, + "audio_override": false + } + } +} +``` + diff --git a/user/userbest30.md b/user/best30.md similarity index 99% rename from user/userbest30.md rename to user/best30.md index 505b6b6..4fd142b 100644 --- a/user/userbest30.md +++ b/user/best30.md @@ -18,7 +18,7 @@ ###### Return data (Edited for readability) -```json +```json5 { "status": 0, "content": { diff --git a/user/info.md b/user/info.md new file mode 100644 index 0000000..4a2f680 --- /dev/null +++ b/user/info.md @@ -0,0 +1,118 @@ +## user/info + +| arguments | description | optional | +|:-------------|:----------------------------------------------------------------|-------------------------------------------------| +| user | user name or 9-digit user code | true when usercode is not null, otherwise false | +| usercode | 9-digit user code | true when user is not null, otherwise false | +| recent | number, range 0-7. The number of recently played songs expected | true | +| withsonginfo | boolean. if true, will reply with songinfo | true | + +###### Tag + +* Need Token + +#### Example + ++ `{apiurl}/botarcapi/user/info?user=ToasterKoishi&recent=2&withsonginfo=true` + +###### Return data + +```json5 +{ + "status": 0, + "content": { + "account_info": { + "code": "062596721", + "name": "ToasterKoishi", + "user_id": 4, + "is_mutual": false, + "is_char_uncapped_override": false, + "is_char_uncapped": true, + "is_skill_sealed": false, + "rating": 1274, + "join_date": 1487816563340, + "character": 12 + }, + "recent_score": [ + { + "score": 9992128, + "health": 100, + "rating": 11.76064, + "song_id": "macromod", + "modifier": 2, + "difficulty": 2, + "clear_type": 2, + "best_clear_type": 2, + "time_played": 1651198101733, + "near_count": 2, + "miss_count": 0, + "perfect_count": 1115, + "shiny_perfect_count": 1081 + }, + { + "score": 9982099, + "health": 100, + "rating": 11.510494999999999, + "song_id": "espebranch", + "modifier": 0, + "difficulty": 2, + "clear_type": 2, + "best_clear_type": 3, + "time_played": 1651045525836, + "near_count": 4, + "miss_count": 0, + "perfect_count": 1054, + "shiny_perfect_count": 1003 + } + ], + "songinfo": [ + { + "name_en": "MacrocosmicModulation", + "name_jp": "", + "artist": "JAKAZiD", + "bpm": "170", + "bpm_base": 170.0, + "set": "single", + "set_friendly": "MemoryArchive", + "time": 147, + "side": 0, + "world_unlock": false, + "remote_download": true, + "bg": "single2_light", + "date": 1645056004, + "version": "3.12", + "difficulty": 19, + "rating": 98, + "note": 1117, + "chart_designer": "Exschwas↕on", + "jacket_designer": "装甲枕", + "jacket_override": false, + "audio_override": false + }, + { + "name_en": "LunarOrbit-believeintheEspebranchroad-", + "name_jp": "白道、多希望羊と信じありく。", + "artist": "Apo11oprogramft.大瀬良あい", + "bpm": "192", + "bpm_base": 192.0, + "set": "base", + "set_friendly": "Arcaea", + "time": 141, + "side": 1, + "world_unlock": true, + "remote_download": false, + "bg": "mirai_conflict", + "date": 1535673600, + "version": "1.7", + "difficulty": 18, + "rating": 96, + "note": 1058, + "chart_designer": "月刊Toaster", + "jacket_designer": "hideo", + "jacket_override": false, + "audio_override": false + } + ] + } +} +``` diff --git a/user/userbest.md b/user/userbest.md deleted file mode 100644 index 17dbda0..0000000 --- a/user/userbest.md +++ /dev/null @@ -1,121 +0,0 @@ -## user/best - -| arguments | description | optional | -|:-------------|:---------------------------------------------------------------------------|-------------------------------------------------| -| user | user name or 9-digit user code | true when usercode is not null, otherwise false | -| usercode | 9-digit user code | true when user is not null, otherwise false | -| songname | any song name for fuzzy querying | true when songid is not null, otherwise false | -| songid | sid in Arcaea songlist | true when songname is not null, otherwise false | -| difficulty | accept format are 0/1/2/3 or pst/prs/ftr/byn or past/present/future/beyond | false | -| withrecent | boolean. if true, will reply with recent_score | true | -| withsonginfo | boolean. if true, will reply with songinfo | true | - -###### Tag - -* Need Token - -#### Example - -+ `{apiurl}/botarcapi/user/best?user=ToasterKoishi&songid=ifi&difficulty=ftr&withrecent=true&withsonginfo=true` - -###### Return data - -```json -{ - "status": 0, - "content": { - "account_info": { - "code": "062596721", - "name": "ToasterKoishi", - "user_id": 4, - "is_mutual": false, - "is_char_uncapped_override": false, - "is_char_uncapped": true, - "is_skill_sealed": false, - "rating": 1274, - "join_date": 1487816563340, - "character": 12 - }, - "record": { - "score": 9979257, - "health": 100, - "rating": 12.796285000000001, - "song_id": "ifi", - "modifier": 0, - "difficulty": 2, - "clear_type": 1, - "best_clear_type": 5, - "time_played": 1598919831344, - "near_count": 5, - "miss_count": 1, - "perfect_count": 1570, - "shiny_perfect_count": 1466 - }, - "songinfo": [ - { - "name_en": "#1f1e33", - "name_jp": "", - "artist": "かめりあ(EDP)", - "bpm": "181", - "bpm_base": 181.0, - "set": "vs", - "set_friendly": "Black Fate", - "time": 163, - "side": 1, - "world_unlock": false, - "remote_download": true, - "bg": "vs_conflict", - "date": 1590537604, - "version": "3.0", - "difficulty": 21, - "rating": 109, - "note": 1576, - "chart_designer": "夜浪 VS 東星 \"Convergence\"", - "jacket_designer": "望月けい", - "jacket_override": false, - "audio_override": false - } - ], - "recent_score": { - "user_id": 4, - "score": 9992128, - "health": 100, - "rating": 11.76064, - "song_id": "macromod", - "modifier": 2, - "difficulty": 2, - "clear_type": 2, - "best_clear_type": 2, - "time_played": 1651198101733, - "near_count": 2, - "miss_count": 0, - "perfect_count": 1115, - "shiny_perfect_count": 1081 - }, - "recent_songinfo": { - "name_en": "Macrocosmic Modulation", - "name_jp": "", - "artist": "JAKAZiD", - "bpm": "170", - "bpm_base": 170.0, - "set": "single", - "set_friendly": "Memory Archive", - "time": 147, - "side": 0, - "world_unlock": false, - "remote_download": true, - "bg": "single2_light", - "date": 1645056004, - "version": "3.12", - "difficulty": 19, - "rating": 98, - "note": 1117, - "chart_designer": "Exschwas↕on", - "jacket_designer": "装甲枕", - "jacket_override": false, - "audio_override": false - } - } -} -``` - diff --git a/user/userinfo.md b/user/userinfo.md deleted file mode 100644 index fa06d30..0000000 --- a/user/userinfo.md +++ /dev/null @@ -1,118 +0,0 @@ -## user/info - -| arguments | description | optional | -|:-------------|:----------------------------------------------------------------|-------------------------------------------------| -| user | user name or 9-digit user code | true when usercode is not null, otherwise false | -| usercode | 9-digit user code | true when user is not null, otherwise false | -| recent | number, range 0-7. The number of recently played songs expected | true | -| withsonginfo | boolean. if true, will reply with songinfo | true | - -###### Tag - -* Need Token - -#### Example - -+ `{apiurl}/botarcapi/user/info?user=ToasterKoishi&recent=2&withsonginfo=true` - -###### Return data - -```json -{ - "status": 0, - "content": { - "account_info": { - "code": "062596721", - "name": "ToasterKoishi", - "user_id": 4, - "is_mutual": false, - "is_char_uncapped_override": false, - "is_char_uncapped": true, - "is_skill_sealed": false, - "rating": 1274, - "join_date": 1487816563340, - "character": 12 - }, - "recent_score": [ - { - "score": 9992128, - "health": 100, - "rating": 11.76064, - "song_id": "macromod", - "modifier": 2, - "difficulty": 2, - "clear_type": 2, - "best_clear_type": 2, - "time_played": 1651198101733, - "near_count": 2, - "miss_count": 0, - "perfect_count": 1115, - "shiny_perfect_count": 1081 - }, - { - "score": 9982099, - "health": 100, - "rating": 11.510494999999999, - "song_id": "espebranch", - "modifier": 0, - "difficulty": 2, - "clear_type": 2, - "best_clear_type": 3, - "time_played": 1651045525836, - "near_count": 4, - "miss_count": 0, - "perfect_count": 1054, - "shiny_perfect_count": 1003 - } - ], - "songinfo": [ - { - "name_en": "Macrocosmic Modulation", - "name_jp": "", - "artist": "JAKAZiD", - "bpm": "170", - "bpm_base": 170.0, - "set": "single", - "set_friendly": "Memory Archive", - "time": 147, - "side": 0, - "world_unlock": false, - "remote_download": true, - "bg": "single2_light", - "date": 1645056004, - "version": "3.12", - "difficulty": 19, - "rating": 98, - "note": 1117, - "chart_designer": "Exschwas↕on", - "jacket_designer": "装甲枕", - "jacket_override": false, - "audio_override": false - }, - { - "name_en": "LunarOrbit -believe in the Espebranch road-", - "name_jp": "白道、多希望羊と信じありく。", - "artist": "Apo11o program ft. 大瀬良あい", - "bpm": "192", - "bpm_base": 192.0, - "set": "base", - "set_friendly": "Arcaea", - "time": 141, - "side": 1, - "world_unlock": true, - "remote_download": false, - "bg": "mirai_conflict", - "date": 1535673600, - "version": "1.7", - "difficulty": 18, - "rating": 96, - "note": 1058, - "chart_designer": "月刊Toaster", - "jacket_designer": "hideo", - "jacket_override": false, - "audio_override": false - } - ] - } -} -```