From 90d8b74c4563ff2178a4a833484992a25c16d734 Mon Sep 17 00:00:00 2001 From: Remik1r3n Date: Sun, 2 Feb 2025 03:17:13 +0800 Subject: [PATCH] Huge Rewrite! --- .gitignore | 1 + API_AimeDB.py | 58 +- API_TitleServer.py | 13 +- ...VersionNumber.py => ActionChangeVersion.py | 16 +- ActionLoginBonus.py | 8 +- ActionScoreRecord.py | 18 +- ActionUnlockVarious.py => ActionUnlockItem.py | 4 +- Best50_To_Diving_Fish.py | 154 ++- ChargeTicket.py | 2 +- Static_Settings.py => Config.py | 2 +- loginBonus.json => Data/loginBonus.json | 0 musicDB.json => Data/musicDB.json | 1014 ++++++++++++----- ForceLogout.py | 2 +- GenericCLI.py | 0 GetPreview.py | 4 +- HelperFullPlay.py | 18 +- HelperGetUserMusicDetail.py | 66 ++ HelperGetUserThing.py | 12 +- HelperLogInOut.py | 2 +- HelperMusicDB.py | 14 + HelperUnlockThing.py | 6 +- HelperUploadUserPlayLog.py | 2 +- HelperUserAll.py | 12 +- MusicDB.py | 6 +- DecryptHDD.py => Standalone/DecryptHDD.py | 3 +- .../Script_GenerateMusicDB.py | 9 +- UI.py => Standalone/UI.py | 12 +- __init__.py | 0 28 files changed, 1038 insertions(+), 420 deletions(-) rename ChangeVersionNumber.py => ActionChangeVersion.py (78%) rename ActionUnlockVarious.py => ActionUnlockItem.py (96%) rename Static_Settings.py => Config.py (79%) rename loginBonus.json => Data/loginBonus.json (100%) rename musicDB.json => Data/musicDB.json (56%) delete mode 100644 GenericCLI.py create mode 100644 HelperGetUserMusicDetail.py create mode 100644 HelperMusicDB.py rename DecryptHDD.py => Standalone/DecryptHDD.py (97%) rename GenerateMusicDB.py => Standalone/Script_GenerateMusicDB.py (87%) rename UI.py => Standalone/UI.py (90%) delete mode 100644 __init__.py diff --git a/.gitignore b/.gitignore index 321b44e..4fba979 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Anti-leak Private_Static_Settings.py +MyConfig.py # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/API_AimeDB.py b/API_AimeDB.py index 01635f8..60227ce 100644 --- a/API_AimeDB.py +++ b/API_AimeDB.py @@ -5,35 +5,39 @@ import json import re # 计算 SHA256 -def compute_sha256(input_str): +def getSHA256(input_str): """SHA256计算""" return hashlib.sha256(input_str.encode('utf-8')).hexdigest().upper() # 生成时间戳 -def get_timestamp(): +def generateSEGATimestamp(): """SEGA格式的 YYMMDDHHMMSS 时间戳(sb玩意)""" return time.strftime("%y%m%d%H%M%S", time.localtime()) # 计算认证 key -def calculate_auth_key(time_stamp: str, chip_id: str, auth_key_param: str) -> str: - """计算 Key""" - return hashlib.sha256((chip_id + time_stamp + auth_key_param).encode("utf-8")).hexdigest().upper() +def calcSEGAAimeDBAuthKey(varString:str, timestamp:str, commonKey:str="XcW5FW4cPArBXEk4vzKz3CIrMuA5EVVW") -> str: + """计算 SEGA AimeDB 的认证 key""" + return hashlib.sha256((varString + timestamp + commonKey).encode("utf-8")).hexdigest().upper() + +def apiAimeDB(qrCode): + """AimeDB 扫码 API 实现""" + CHIP_ID = "A63E-01E68606624" + COMMON_KEY = "XcW5FW4cPArBXEk4vzKz3CIrMuA5EVVW" + API_URL = "http://ai.sys-allnet.cn/wc_aime/api/get_data" -def apiAimeDB(qr_code, chip_id, auth_key_param, game_id, api_url): - """AimeDB API 实现""" # 生成一个时间戳 - time_stamp = get_timestamp() + timestamp = generateSEGATimestamp() # 使用时间戳计算 key - auth_key = calculate_auth_key(time_stamp, chip_id, auth_key_param) + currentKey = calcSEGAAimeDBAuthKey(qrCode, timestamp, COMMON_KEY) # 构造请求数据 payload = { - "chipID": chip_id, - "openGameID": game_id, - "key": auth_key, - "qrCode": qr_code, - "timestamp": time_stamp + "chipID": CHIP_ID, + "openGameID": "MAID", + "key": currentKey, + "qrCode": qrCode, + "timestamp": timestamp } # 输出准备好的请求数据 @@ -42,11 +46,11 @@ def apiAimeDB(qr_code, chip_id, auth_key_param, game_id, api_url): # 发送 POST 请求 headers = { "Connection": "Keep-Alive", - "Host": api_url.split("//")[-1].split("/")[0], + "Host": API_URL.split("//")[-1].split("/")[0], "User-Agent": "WC_AIME_LIB", "Content-Type": "application/json", } - response = requests.post(api_url, data=json.dumps(payload, separators=(',', ':')), headers=headers) + response = requests.post(API_URL, data=json.dumps(payload, separators=(',', ':')), headers=headers) # 返回服务器的响应 return response @@ -64,20 +68,19 @@ def isSGWCFormat(input_string: str) -> bool: return True -def implAimeDB(qrcode_content_full:str) -> str: +def implAimeDB(qrCode:str, isAlreadyFinal:bool=False) -> str: ''' Aime DB 的请求的参考实现。 提供完整 QRCode 内容,返回响应的字符串(Json格式) ''' - CHIP_ID = "A63E-01E68606624" - AUTH_KEY_PARAM = "XcW5FW4cPArBXEk4vzKz3CIrMuA5EVVW" - GAME_ID = "MAID" - API_URL = "http://ai.sys-allnet.cn/wc_aime/api/get_data" - - qr_code_final = qrcode_content_full[20:] + if isAlreadyFinal: + qr_code_final = qrCode + else: + # 提取有效部分(Hash) + qr_code_final = qrCode[20:] # 发送请求 - response = apiAimeDB(qr_code_final, CHIP_ID, AUTH_KEY_PARAM, GAME_ID, API_URL) + response = apiAimeDB(qr_code_final) # 获得结果 print("implAimeDB: StatusCode is ", response.status_code) @@ -97,13 +100,12 @@ def implGetUID(qr_content:str) -> dict: # 发送请求并处理响应 try: - result_string = implAimeDB(qr_content) - result_dict = json.loads(result_string) + result = json.loads(implAimeDB(qr_content)) except: - return {'errorID': 60002} # 无法解码 Response 的内容 + return {'errorID': 60002} # 无法解码 Response 的内容 # 返回结果 - return result_dict + return result if __name__ == "__main__": userInputQR = input("QRCode: ") diff --git a/API_TitleServer.py b/API_TitleServer.py index db17d24..d495992 100644 --- a/API_TitleServer.py +++ b/API_TitleServer.py @@ -13,7 +13,7 @@ from ctypes import c_int32 from Crypto.Cipher import AES from Crypto.Util.Padding import unpad -from Static_Settings import * +from Config import * # 舞萌DX 2024 AesKey = "n7bx6:@Fg_:2;5E89Phy7AyIcpxEQ:R@" @@ -59,14 +59,15 @@ class aes_pkcs7(object): def SDGBApiHash(api): return hashlib.md5((api+"MaimaiChn"+ObfuscateParam).encode()).hexdigest() -def apiSDGB(data:str, useApi, agentExtraData, maxRetries=3): +def apiSDGB(data:str, useApi, agentExtraData, noLog=False): ''' 舞萌DX 2024 API 通讯用函数 :param data: 请求数据 :param useApi: 使用的 API :param agentExtraData: UA 附加信息,机台相关则为狗号(如A63E01E9564),用户相关则为 UID - :param maxRetry: 最大重试次数, + :param noLog: 是否不记录日志 ''' + maxRetries = 3 # 历史遗留代码有时候会传入 int,故先全部转 str agentExtra = str(agentExtraData) @@ -79,7 +80,8 @@ def apiSDGB(data:str, useApi, agentExtraData, maxRetries=3): requests.packages.urllib3.disable_warnings() endpoint = "https://maimai-gm.wahlap.com:42081/Maimai2Servlet/" - logger.debug("TitleServer Request Start: "+ str(useApi)+" , Data: "+str(data)) + if not noLog: + logger.debug("TitleServer Request Start: "+ str(useApi)+" , Data: "+str(data)) retries = 0 while retries < maxRetries: @@ -124,7 +126,8 @@ def apiSDGB(data:str, useApi, agentExtraData, maxRetries=3): # 解压成功,解密请求并返回 resultResponse = unpad(aes.decrypt(responseDecompressed), 16).decode() logger.info("TitleServer:" + useApi + " Response: " + str(responseRaw.status_code)) - logger.debug("TitleServer Response: " + str(resultResponse)) + if not noLog: + logger.debug("TitleServer Response: " + str(resultResponse)) return resultResponse # 除了 404 和 500 之外的错误重试 diff --git a/ChangeVersionNumber.py b/ActionChangeVersion.py similarity index 78% rename from ChangeVersionNumber.py rename to ActionChangeVersion.py index 04c7472..4315165 100644 --- a/ChangeVersionNumber.py +++ b/ActionChangeVersion.py @@ -1,13 +1,13 @@ -# 改变版本号,实现伪封号和解封号 +# 改变版本号,实现伪封号和解封号之类 from loguru import logger -from Static_Settings import * +from Config import * from HelperLogInOut import apiLogin, apiLogout, generateTimestamp from HelperFullPlay import implFullPlayAction def implChangeVersionNumber(userId: int, currentLoginTimestamp:int, currentLoginResult, dataVersion="1.40.09", romVersion="1.41.00") -> str: musicData= ({ - "musicId": 834, + "musicId": 834, # PANDORA PARADOXXX "level": 4, "playCount": 1, "achievement": 0, @@ -16,7 +16,7 @@ def implChangeVersionNumber(userId: int, currentLoginTimestamp:int, currentLogin "deluxscoreMax": 0, "scoreRank": 0, "extNum1": 0 -}) + }) userAllPatches = { "upsertUserAll": { "userData": [{ @@ -27,7 +27,7 @@ def implChangeVersionNumber(userId: int, currentLoginTimestamp:int, currentLogin "isNewMusicDetailList": "1" #1避免覆盖 }} logger.info("Changing version number to " + dataVersion + " and " + romVersion) - result = implFullPlayAction(userId, currentLoginTimestamp, currentLoginResult, musicData, userAllPatches, True) + result = implFullPlayAction(userId, currentLoginTimestamp, currentLoginResult, musicData, userAllPatches) return result if __name__ == "__main__": @@ -35,15 +35,11 @@ if __name__ == "__main__": currentLoginTimestamp = generateTimestamp() loginResult = apiLogin(currentLoginTimestamp, userId) - musicId = 852 #229 is guruguru wash - levelId = 3 #3 is MASTER - if loginResult['returnCode'] != 1: logger.info("登录失败") exit() try: - #logger.info(implDeleteMusicRecord(userId, currentLoginTimestamp, loginResult, musicId, levelId)) - logger.info(implChangeVersionNumber(userId, currentLoginTimestamp, loginResult, "1.30.00", "1.30.00")) + logger.info(implChangeVersionNumber(userId, currentLoginTimestamp, loginResult, "1.00.00", "1.00.00")) logger.info(apiLogout(currentLoginTimestamp, userId)) finally: logger.info(apiLogout(currentLoginTimestamp, userId)) diff --git a/ActionLoginBonus.py b/ActionLoginBonus.py index 6513af9..0610aa1 100644 --- a/ActionLoginBonus.py +++ b/ActionLoginBonus.py @@ -4,13 +4,13 @@ import json from loguru import logger -from Static_Settings import * +from Config import * from API_TitleServer import apiSDGB from HelperLogInOut import apiLogin, apiLogout, generateTimestamp from HelperFullPlay import implFullPlayAction def apiQueryLoginBonus(userId:int) -> str: - '''ログインボーナスを取得する API Requestor''' + '''ログインボーナスを取得する API''' data = json.dumps({ "userId": int(userId), "nextIndex": 0, @@ -35,7 +35,7 @@ def implLoginBonus(userId: int, currentLoginTimestamp:int, currentLoginResult, b "deluxscoreMax": 0, "scoreRank": 0, "extNum1": 0 -} + } # サーバーからログインボーナスデータを取得 data = json.dumps({ "userId": int(userId), @@ -70,7 +70,7 @@ def generateLoginBonusList(UserLoginBonusList, generateMode=1): # HDDから、ログインボーナスデータを読み込む # アップデートがある場合、このファイルを更新する必要があります # 必ず最新のデータを使用してください - with open('loginBonus.json', encoding='utf-8') as file: + with open('./Data/loginBonus.json', encoding='utf-8') as file: cache = json.load(file) loginBonusIdList = [item['id'] for item in cache] logger.debug(f"ログインボーナスIDリスト: {loginBonusIdList}") diff --git a/ActionScoreRecord.py b/ActionScoreRecord.py index a696749..b313762 100644 --- a/ActionScoreRecord.py +++ b/ActionScoreRecord.py @@ -1,7 +1,7 @@ # 删除和上传成绩 from loguru import logger -from Static_Settings import * +from Config import * from HelperLogInOut import apiLogin, apiLogout, generateTimestamp from HelperFullPlay import implFullPlayAction @@ -26,8 +26,12 @@ def implDeleteMusicRecord(userId: int, currentLoginTimestamp:int, currentLoginRe return result def implUploadMusicRecord(userId: int, currentLoginTimestamp:int, currentLoginResult, musicId:int, levelId:int, achievement:int, dxScore:int) -> str: - '''VERY EARLY STAGE OF UPLOADING SCORES. DO NOT USE THIS FUNCTION.''' - + ''' + VERY EARLY STAGE OF UPLOADING SCORES!!!! DO NOT USE THIS!!!! + 上传成绩的参考实现。 + ''' + + # 要上传的数据 musicData= ({ "musicId": musicId, "level": levelId, @@ -42,7 +46,7 @@ def implUploadMusicRecord(userId: int, currentLoginTimestamp:int, currentLoginRe userAllPatches = { "upsertUserAll": { "userMusicDetailList": [musicData], - "isNewMusicDetailList": "0" # 0为编辑,即可删除掉成绩 + "isNewMusicDetailList": "1" # 0编辑 1插入 }} result = implFullPlayAction(userId, currentLoginTimestamp, currentLoginResult, musicData, userAllPatches) return result @@ -52,15 +56,15 @@ if __name__ == "__main__": currentLoginTimestamp = generateTimestamp() loginResult = apiLogin(currentLoginTimestamp, userId) - musicId = 852 #229 is guruguru wash + musicId = 852 #852 is tiamat levelId = 3 #3 is MASTER if loginResult['returnCode'] != 1: logger.info("登录失败") exit() try: - #logger.info(implDeleteMusicRecord(userId, currentLoginTimestamp, loginResult, musicId, levelId)) - logger.info(implUploadMusicRecord(userId, currentLoginTimestamp, loginResult, musicId, levelId, 1000000, 100)) + logger.info(implDeleteMusicRecord(userId, currentLoginTimestamp, loginResult, musicId, levelId)) + #logger.info(implUploadMusicRecord(userId, currentLoginTimestamp, loginResult, musicId, levelId, 1000000, 100)) logger.info(apiLogout(currentLoginTimestamp, userId)) finally: logger.info(apiLogout(currentLoginTimestamp, userId)) diff --git a/ActionUnlockVarious.py b/ActionUnlockItem.py similarity index 96% rename from ActionUnlockVarious.py rename to ActionUnlockItem.py index b47fcca..4eb0f80 100644 --- a/ActionUnlockVarious.py +++ b/ActionUnlockItem.py @@ -2,7 +2,7 @@ from loguru import logger -from Static_Settings import * +from Config import * from HelperLogInOut import apiLogin, apiLogout, generateTimestamp from HelperUnlockThing import implUnlockThing @@ -48,7 +48,7 @@ if __name__ == "__main__": loginResult = apiLogin(currentLoginTimestamp, userId) # Change you want item ID - wantToUnlockItemId = 11624 + wantToUnlockItemId = 11538 if loginResult['returnCode'] != 1: logger.info("登录失败") diff --git a/Best50_To_Diving_Fish.py b/Best50_To_Diving_Fish.py index 7c36b0e..97e2725 100644 --- a/Best50_To_Diving_Fish.py +++ b/Best50_To_Diving_Fish.py @@ -1,82 +1,112 @@ -# 非常 All-in Boom 的 B50 更新实现。 - from API_TitleServer import * from HelperLogInOut import apiLogin, apiLogout, generateTimestamp -from Static_Settings import * -import json -from MusicDB import musicDB +from Config import * from loguru import logger +from HelperGetUserMusicDetail import getUserFullMusicDetail +from HelperMusicDB import getMusicTitle +import requests -def getMusicTitle(musicId: int) -> str: - '''从数据库获取音乐的标题''' - logger.debug(f"查询歌名: {musicId}") - musicInfo = musicDB.get(musicId) - if not musicInfo: - logger.warning(f"数据库里未找到此歌曲: {musicId}") - return "ERR_R_MUSIC_ID_NOT_IN_DATABASE" - musicName = musicInfo.get("name") - logger.debug(f"成功查询到歌名: {musicName}") - return musicName -def getUserMusicDetail(userId:int, nextIndex:int=0, maxCount:int=50) -> dict: - '''获取用户的成绩的API''' - data = json.dumps({ - "userId": int(userId), - "nextIndex": nextIndex, - "maxCount": maxCount - }) - return json.loads(apiSDGB(data, "GetUserMusicApi", userId)) +# 日志设置 +if False: + import sys + log_level = "DEBUG" + log_format = "{time:YYYY-MM-DD HH:mm:ss.SSS zz} | {level: <8} | Line {line: >4} ({file}): {message}" + logger.add(sys.stderr, level=log_level, format=log_format, colorize=True, backtrace=True, diagnose=True) + logger.add("file.log", level=log_level, format=log_format, colorize=False, backtrace=True, diagnose=True) + +# 水鱼查分器的 API 地址 +BASE_URL = 'https://www.diving-fish.com/api/maimaidxprober' + +# 水鱼查分器的成绩状态转换 +COMBO_ID_TO_NAME = ['', 'fc', 'fcp', 'ap', 'app'] +SYNC_ID_TO_NAME = ['', 'fs', 'fsp', 'fsd', 'fsdp', 'sync'] + +def apiDivingFish(method:str, apiPath:str, importToken:str, data:dict=None) -> dict: + '''水鱼查分器的 API 通讯实现''' + headers = { + "Import-Token": importToken + } + if method == 'POST': + headers['Content-Type'] = 'application/json' + logger.info(f'水鱼查分器 API 请求:{method} {BASE_URL + apiPath}') + if method == 'POST': + response = requests.post( + url=BASE_URL + apiPath, + json=data, + headers=headers, + ) + elif method == 'GET': + response = requests.get( + url=BASE_URL + apiPath, + headers=headers, + ) + else: + raise NotImplementedError + + logger.info(f'水鱼查分器请求结果:{response.status_code} {response.text}') + if response.status_code != 200: + return False + return response.json() + +def getFishRecords(importToken: str) -> dict: + return apiDivingFish('GET', '/player/records', importToken) + +def updateFishRecords(importToken: str, records: list[dict]) -> dict: + return apiDivingFish('POST', '/player/update_records', importToken, records) def maimaiUserMusicDetailToDivingFish(userMusicDetailList: list) -> list: '''舞萌的 UserMusicDetail 成绩格式转换成水鱼的格式''' divingFishList = [] for currentMusicDetail in userMusicDetailList: + # musicId 大于 100000 属于宴谱,不计入 + if currentMusicDetail['musicId'] >= 100000: + continue + # 获得歌名 + currentMusicTitle = getMusicTitle(currentMusicDetail['musicId']) + # 如果数据库里未找到此歌曲 + if currentMusicTitle == "R_ERR_MUSIC_ID_NOT_IN_DATABASE": + logger.warning(f"数据库无此歌曲 跳过: {currentMusicDetail['musicId']}") + continue # 每一个乐曲都判断下是 DX 还是标准 if currentMusicDetail['musicId'] >= 10000: notesType = 'DX' else: notesType = 'SD' - - divingFishList.append({ - 'achievements': (currentMusicDetail['achievement'] / 10000), # 水鱼的成绩是 float 而非舞萌的 int - 'title': (getMusicTitle(currentMusicDetail['musicId'])), # 水鱼用的是歌名而不是 ID(导致不得不用数据库处理转换 - 'type': notesType, # 我不理解这为什么不能在后端判断 - 'level_index': currentMusicDetail['level'], - 'fc': currentMusicDetail['comboStatus'], - 'fs': currentMusicDetail['syncStatus'], - 'dxScore': currentMusicDetail['deluxscoreMax'], - }) + # 追加进列表 + try: + divingFishList.append({ + 'achievements': (currentMusicDetail['achievement'] / 10000), # 水鱼的成绩是 float 而非舞萌的 int + 'title': currentMusicTitle, + 'type': notesType, # 我不理解这为什么不能在后端判断 + 'level_index': currentMusicDetail['level'], + 'fc': COMBO_ID_TO_NAME[currentMusicDetail['comboStatus']], + 'fs': SYNC_ID_TO_NAME[currentMusicDetail['syncStatus']], + 'dxScore': currentMusicDetail['deluxscoreMax'], + }) + except: + print(currentMusicDetail) + logger.error(f"Error: {currentMusicDetail}") return divingFishList if __name__ == '__main__': - userId = testUid - currentLoginTimestamp = generateTimestamp() - loginResult = apiLogin(currentLoginTimestamp, userId) + if True: + userId = testUid + importToken = testImportToken + currentLoginTimestamp = generateTimestamp() + loginResult = apiLogin(currentLoginTimestamp, userId) - if loginResult['returnCode'] != 1: - logger.info("登录失败") - exit() - try: - ## Begin - userMusicDetailList_current = [] + if loginResult['returnCode'] != 1: + logger.info("登录失败") + exit() + try: + userFullMusicDetailList = getUserFullMusicDetail(userId) + logger.warning("Now We Begin To Build DivingFish Data") + divingFishData = maimaiUserMusicDetailToDivingFish(userFullMusicDetailList) + logger.debug(divingFishData) + logger.warning("Now We Begin To Update DivingFish Data") + updateFishRecords(importToken, divingFishData) + finally: + #logger.error(f"Error: {e}") + logger.info(apiLogout(currentLoginTimestamp, userId)) - nextIndex:int|None = None # 初始化 nextIndex - while nextIndex != 0 or nextIndex is None: #只要还有nextIndex就一直获取获取 - userMusicResponse = getUserMusicDetail(userId, nextIndex or 0) - nextIndex = userMusicResponse['nextIndex'] - logger.info(f"NextIndex: {nextIndex}") - for currentMusic in userMusicResponse['userMusicList']: - for currentMusicDetail in currentMusic['userMusicDetailList']: - if not currentMusicDetail['playCount'] > 0: - continue - userMusicDetailList_current.append(currentMusicDetail) - print("---------------") - print(str(userMusicDetailList_current)) - ## End - #logger.info(apiLogout(currentLoginTimestamp, userId)) - logger.warning("Now We Begin To Build DiveFish Data") - divingFishData = maimaiUserMusicDetailToDivingFish(userMusicDetailList_current) - logger.info(divingFishData) - finally: - #logger.error(f"Error: {e}") - logger.info(apiLogout(currentLoginTimestamp, userId)) diff --git a/ChargeTicket.py b/ChargeTicket.py index 9f5e70d..cb9c583 100644 --- a/ChargeTicket.py +++ b/ChargeTicket.py @@ -3,7 +3,7 @@ import json import pytz from datetime import datetime, timedelta -from Static_Settings import * +from Config import * from API_TitleServer import apiSDGB from HelperGetUserThing import apiGetUserData diff --git a/Static_Settings.py b/Config.py similarity index 79% rename from Static_Settings.py rename to Config.py index f2c09e1..0cf9313 100644 --- a/Static_Settings.py +++ b/Config.py @@ -5,4 +5,4 @@ placeName = "赛博时空枣庄市中店" clientId = "A63E01E9564" # 日本精工,安全防漏 -#from Private_Static_Settings import * +#from MyConfig import * diff --git a/loginBonus.json b/Data/loginBonus.json similarity index 100% rename from loginBonus.json rename to Data/loginBonus.json diff --git a/musicDB.json b/Data/musicDB.json similarity index 56% rename from musicDB.json rename to Data/musicDB.json index 4f33542..4b4840f 100644 --- a/musicDB.json +++ b/Data/musicDB.json @@ -1,24 +1,40 @@ { "8": {"name": "True Love Song", "version": 0}, "9": {"name": "Color My World", "version": 0}, + "10": {"name": "LOVE & JOY", "version": 0}, + "11": {"name": "じょいふる", "version": 0}, + "15": {"name": "Everyday、カチューシャ", "version": 0}, "17": {"name": "Future", "version": 0}, "18": {"name": "Love You", "version": 0}, + "20": {"name": "恋愛サーキュレーション", "version": 0}, + "21": {"name": "コネクト", "version": 0}, "22": {"name": "In Chaos", "version": 0}, "23": {"name": "Crush On You", "version": 0}, "24": {"name": "Sun Dance", "version": 0}, "25": {"name": "Sweets×Sweets", "version": 0}, "27": {"name": "Love or Lies", "version": 0}, + "29": {"name": "VICTORY", "version": 3}, "30": {"name": "ネコ日和。", "version": 0}, "31": {"name": "虹と太陽", "version": 0}, + "34": {"name": "Garden", "version": 0}, "35": {"name": "炭★坑★節", "version": 0}, "38": {"name": "NIGHT OF FIRE", "version": 0}, "40": {"name": "come again", "version": 0}, + "41": {"name": "Chu Chu", "version": 0}, "42": {"name": "jelly", "version": 0}, + "43": {"name": "愛を止めないで", "version": 0}, + "44": {"name": "ハッピーシンセサイザ", "version": 0}, + "45": {"name": "Choo Choo TRAIN", "version": 2}, "46": {"name": "ルカルカ★ナイトフィーバー", "version": 0}, "47": {"name": "源平大戦絵巻テーマソング", "version": 0}, + "49": {"name": "アイデンティティ", "version": 0}, "53": {"name": "美しく燃える森", "version": 0}, + "54": {"name": "ヘビーローテーション", "version": 0}, + "55": {"name": "CAN'T GET BACK", "version": 0}, "56": {"name": "ウッーウッーウマウマ(゚∀゚)", "version": 0}, "58": {"name": "Endless World", "version": 1}, + "59": {"name": "PON PON PON", "version": 0}, + "60": {"name": "New World", "version": 0}, "61": {"name": "Beat Of Mind", "version": 0}, "62": {"name": "檄!帝国華撃団(改)", "version": 0}, "63": {"name": "メランコリック", "version": 0}, @@ -62,6 +78,9 @@ "120": {"name": "デコボコ体操第二", "version": 1}, "121": {"name": "スイートマジック", "version": 1}, "122": {"name": "ゴーゴー幽霊船", "version": 1}, + "125": {"name": "千本桜", "version": 1}, + "126": {"name": "つけまつける", "version": 1}, + "127": {"name": "Get Off of My Way", "version": 1}, "128": {"name": "御旗のもとに", "version": 1}, "130": {"name": "FEEL ALIVE", "version": 1}, "131": {"name": "Link", "version": 1}, @@ -81,12 +100,27 @@ "145": {"name": "Starlight Disco", "version": 1}, "146": {"name": "39", "version": 1}, "147": {"name": "地上の戦士", "version": 1}, + "148": {"name": "サブリナ", "version": 1}, + "149": {"name": "SPELL MAGIC", "version": 1}, "152": {"name": "超絶!Superlative", "version": 1}, "153": {"name": "采配の刻 Power of order", "version": 1}, "154": {"name": "DO RORO DERODERO ON DO RORO", "version": 1}, "155": {"name": "泣き虫O'clock", "version": 1}, "157": {"name": "Natural Flow", "version": 1}, "159": {"name": "maimaiちゃんのテーマ", "version": 1}, + "161": {"name": "CANDY CANDY", "version": 1}, + "164": {"name": "READY STEADY GO", "version": 2}, + "165": {"name": "リライト", "version": 2}, + "166": {"name": "カルマ", "version": 2}, + "167": {"name": "GO!!!", "version": 2}, + "168": {"name": "LOVEドッきゅん♥", "version": 2}, + "169": {"name": "galaxias!", "version": 2}, + "172": {"name": "女々しくて", "version": 3}, + "173": {"name": "サラバ、愛しき悲しみたちよ", "version": 2}, + "174": {"name": "創聖のアクエリオン", "version": 2}, + "176": {"name": "Butter-Fly", "version": 2}, + "181": {"name": "君の知らない物語", "version": 2}, + "182": {"name": "残酷な天使のテーゼ", "version": 2}, "184": {"name": "I ♥", "version": 2}, "185": {"name": "*ハロー、プラネット。", "version": 2}, "186": {"name": "イアイア★ナイトオブデザイア", "version": 2}, @@ -95,6 +129,7 @@ "189": {"name": "弱虫モンブラン", "version": 2}, "190": {"name": "モザイクロール", "version": 2}, "191": {"name": "脳漿炸裂ガール", "version": 2}, + "192": {"name": "SPiCa", "version": 3}, "193": {"name": "セツナトリップ", "version": 2}, "194": {"name": "放課後ストライド", "version": 2}, "198": {"name": "カゲロウデイズ", "version": 2}, @@ -161,19 +196,26 @@ "269": {"name": "裏表ラバーズ", "version": 2}, "270": {"name": "Outlaw's Lullaby", "version": 3}, "271": {"name": "Brand-new Japanesque", "version": 3}, + "274": {"name": "RPG", "version": 3}, + "277": {"name": "Tachyon", "version": 3}, "278": {"name": "レッツゴー!陰陽師", "version": 3}, + "280": {"name": "炉心融解", "version": 8}, + "281": {"name": "ダブルラリアット", "version": 4}, "282": {"name": "からくりピエロ", "version": 3}, "283": {"name": "ネトゲ廃人シュプレヒコール", "version": 8}, + "284": {"name": "むかしむかしのきょうのぼく", "version": 3}, "285": {"name": "magician's operation", "version": 3}, "288": {"name": "六兆年と一夜物語", "version": 5}, "289": {"name": "みくみくにしてあげる♪【してやんよ】", "version": 5}, "290": {"name": "リリリリ★バーニングナイト", "version": 3}, "291": {"name": "ハロ/ハワユ", "version": 3}, + "293": {"name": "Our Fighting", "version": 5}, "295": {"name": "緋色のDance", "version": 4}, "296": {"name": "明星ロケット", "version": 4}, "297": {"name": "The Great Journey", "version": 4}, "298": {"name": "お嫁にしなさいっ!", "version": 3}, "299": {"name": "ロストワンの号哭", "version": 5}, + "300": {"name": "Sweet Devil", "version": 5}, "301": {"name": "患部で止まってすぐ溶ける~狂気の優曇華院", "version": 3}, "302": {"name": "ケロ⑨destiny", "version": 5}, "303": {"name": "Endless, Sleepless Night", "version": 3}, @@ -201,8 +243,15 @@ "329": {"name": "かせげ!ジャリンコヒーロー", "version": 3}, "330": {"name": "キズナの物語", "version": 3}, "331": {"name": "Heart Beats", "version": 4}, + "332": {"name": "アゲアゲアゲイン", "version": 3}, + "333": {"name": "GO MY WAY!!", "version": 3}, + "334": {"name": "THE IDOLM@STER 2nd-mix", "version": 3}, + "335": {"name": "The world is all one !!", "version": 3}, + "336": {"name": "紅蓮の弓矢", "version": 3}, "337": {"name": "鼓動", "version": 3}, + "338": {"name": "リクライム", "version": 3}, "339": {"name": "DRAGONLADY", "version": 3}, + "340": {"name": "恋のヒメヒメぺったんこ", "version": 3}, "341": {"name": "二息歩行", "version": 3}, "342": {"name": "ファンタジーゾーン OPA-OPA! -GMT remix-", "version": 3}, "343": {"name": "電車で電車でGO!GO!GO!GC! -GMT remix-", "version": 3}, @@ -215,6 +264,9 @@ "351": {"name": "MIRROR of MAGIC", "version": 4}, "352": {"name": "究極焼肉レストラン!お燐の地獄亭!", "version": 4}, "353": {"name": "shake it!", "version": 4}, + "356": {"name": "1/3の純情な感情", "version": 5}, + "357": {"name": "みかんのうた", "version": 4}, + "358": {"name": "毒占欲", "version": 4}, "359": {"name": "YU-MU", "version": 6}, "360": {"name": "物凄い勢いでけーねが物凄いうた", "version": 6}, "362": {"name": "BETTER CHOICE", "version": 4}, @@ -223,9 +275,15 @@ "365": {"name": "ガラテアの螺旋", "version": 5}, "366": {"name": "oboro", "version": 4}, "367": {"name": "Dragoon", "version": 4}, + "368": {"name": "シリウス", "version": 5}, + "369": {"name": "ほとんど違法行為", "version": 4}, + "370": {"name": "naraku within", "version": 4}, + "371": {"name": "Stand Up!!!!", "version": 4}, + "372": {"name": "ファミリーパーティー", "version": 4}, "374": {"name": "アンハッピーリフレイン", "version": 4}, "375": {"name": "One Step Ahead", "version": 4}, "376": {"name": "L9", "version": 5}, + "377": {"name": "おいでよ!妖精の森", "version": 4}, "378": {"name": "planet dancer", "version": 4}, "379": {"name": "Caliburne ~Story of the Legendary sword~", "version": 4}, "380": {"name": "どうしてこうなった", "version": 5}, @@ -239,21 +297,32 @@ "388": {"name": "きたさいたま2000", "version": 4}, "389": {"name": "FLOWER", "version": 4}, "390": {"name": "Got more raves?", "version": 4}, + "397": {"name": "Can Do", "version": 5}, + "398": {"name": "The Other self", "version": 5}, "399": {"name": "不毛!", "version": 4}, "400": {"name": "デッドレッドガールズ", "version": 5}, "401": {"name": "赤心性:カマトト荒療治", "version": 5}, + "402": {"name": "ニブンノイチ", "version": 5}, "403": {"name": "悪戯", "version": 5}, "404": {"name": "響縁", "version": 5}, + "405": {"name": "カノン", "version": 5}, + "406": {"name": "オルフェ", "version": 5}, + "407": {"name": "LOL -lots of laugh-", "version": 6}, + "408": {"name": "クローバー♣クラブ", "version": 5}, + "409": {"name": "妄想税", "version": 5}, + "410": {"name": "どういうことなの!?", "version": 5}, "411": {"name": "初音ミクの消失", "version": 6}, "412": {"name": "イノコリ先生", "version": 6}, "413": {"name": "キャプテン・ムラサのケツアンカー", "version": 5}, "414": {"name": "若い力 -SEGA HARD GIRLS MIX-", "version": 5}, + "416": {"name": "ココロオドル", "version": 5}, "417": {"name": "ウミユリ海底譚", "version": 5}, "418": {"name": "welcome to maimai!! with マイマイマー", "version": 5}, "419": {"name": "ストリーミングハート", "version": 5}, "420": {"name": "Change Our MIRAI!", "version": 5}, "421": {"name": "Aiolos", "version": 5}, "422": {"name": "LANCE", "version": 5}, + "423": {"name": "SAVIOR OF SONG", "version": 5}, "424": {"name": "橙の幻想郷音頭", "version": 6}, "425": {"name": "東方妖々夢 ~the maximum moving about~", "version": 6}, "426": {"name": "蒼空に舞え、墨染の桜", "version": 6}, @@ -262,12 +331,20 @@ "432": {"name": "幸せになれる隠しコマンドがあるらしい", "version": 9}, "434": {"name": "フラグメンツ -T.V. maimai edit-", "version": 6}, "435": {"name": "願いを呼ぶ季節", "version": 6}, + "436": {"name": "おじゃま虫", "version": 5}, "437": {"name": "Yet Another ”drizzly rain”", "version": 5}, "438": {"name": "四次元跳躍機関", "version": 5}, "439": {"name": "最終鬼畜妹・一部声", "version": 5}, + "440": {"name": "はじめまして地球人さん", "version": 5}, + "441": {"name": "Pursuing My True Self", "version": 5}, + "442": {"name": "Signs Of Love (“Never More” ver.)", "version": 5}, + "443": {"name": "specialist (“Never More” ver.)", "version": 5}, + "444": {"name": "Time To Make History (AKIRA YAMAOKA Remix)", "version": 5}, "446": {"name": "GEMINI -M-", "version": 6}, "447": {"name": "+♂", "version": 6}, "448": {"name": "ありふれたせかいせいふく", "version": 6}, + "449": {"name": "すろぉもぉしょん", "version": 6}, + "450": {"name": "絵の上手かった友達", "version": 6}, "451": {"name": "頓珍漢の宴", "version": 6}, "453": {"name": "Garden Of The Dragon", "version": 6}, "454": {"name": "After Burner", "version": 6}, @@ -285,31 +362,61 @@ "466": {"name": "Jimang Shot", "version": 6}, "467": {"name": "儚きもの人間", "version": 7}, "468": {"name": "ラブリー☆えんじぇる!!", "version": 6}, + "469": {"name": "ひみつをちょーだい", "version": 6}, + "470": {"name": "Touch Tap Baby", "version": 6}, "471": {"name": "オモイヨシノ", "version": 6}, "472": {"name": "アージェントシンメトリー", "version": 6}, + "473": {"name": "ゲラゲラポーのうた", "version": 6}, + "474": {"name": "秘密の扉から会いにきて", "version": 6}, + "475": {"name": "かくしん的☆めたまるふぉ~ぜっ!", "version": 6}, + "476": {"name": "極上スマイル", "version": 6}, + "477": {"name": "厨病激発ボーイ", "version": 6}, + "479": {"name": "Dragon Night", "version": 6}, "480": {"name": "HIMITSUスパーク", "version": 6}, + "481": {"name": "でんでんぱっしょん", "version": 6}, "482": {"name": "Party 4U ”holy nite mix”", "version": 6}, "483": {"name": "囲い無き世は一期の月影", "version": 6}, + "484": {"name": "Luminize", "version": 6}, + "485": {"name": "Falling Roses", "version": 6}, + "486": {"name": "青春はNon-Stop!", "version": 6}, + "487": {"name": "ようかい体操第一", "version": 7}, "488": {"name": "Lividi", "version": 8}, "490": {"name": "Infantoon Fantasy", "version": 7}, + "491": {"name": "ヘタリアン☆ジェット", "version": 7}, "492": {"name": "Jumble Rumble", "version": 7}, "493": {"name": "Imitation:Loud Lounge", "version": 8}, "494": {"name": "CITRUS MONSTER", "version": 7}, "495": {"name": "Hyper Active", "version": 7}, "496": {"name": "AMAZING MIGHTYYYY!!!!", "version": 7}, "497": {"name": "fake!fake!", "version": 7}, + "498": {"name": "夏にキスしていいですか?", "version": 7}, + "499": {"name": "夏祭り", "version": 7}, + "500": {"name": "シュガーソングとビターステップ", "version": 7}, + "501": {"name": "Daydream café", "version": 7}, + "502": {"name": "Scatman (Ski Ba Bop Ba Dop Bop)", "version": 7}, + "503": {"name": "イチズレシピ", "version": 7}, + "504": {"name": "ふ・れ・ん・ど・し・た・い", "version": 7}, + "505": {"name": "ちょちょちょ!ゆるゆり☆かぷりっちょ!!!", "version": 8}, "506": {"name": "セハガガガンバッちゃう!!", "version": 7}, "507": {"name": "キミノヨゾラ哨戒班", "version": 7}, "508": {"name": "恋愛裁判", "version": 7}, + "509": {"name": "Just Be Friends", "version": 8}, + "510": {"name": "ヒビカセ", "version": 11}, "511": {"name": "パーフェクト生命", "version": 7}, "512": {"name": "StargazeR", "version": 8}, "513": {"name": "だんだん早くなる", "version": 8}, "514": {"name": "ヘルシーエンド", "version": 9}, + "515": {"name": "クノイチでも恋がしたい", "version": 7}, + "516": {"name": "ココロ", "version": 8}, "517": {"name": "東京リアルワールド", "version": 7}, "518": {"name": "やめろ!聴くな!", "version": 7}, + "519": {"name": "ゆっくりしていってね!!!", "version": 8}, "520": {"name": "木彫り鯰と右肩ゾンビ", "version": 7}, "521": {"name": "ECHO", "version": 7}, + "522": {"name": "Mr. Wonderland", "version": 7}, + "523": {"name": "しんでしまうとはなさけない!", "version": 7}, "524": {"name": "Hand in Hand", "version": 7}, + "525": {"name": "ブリキノダンス", "version": 11}, "526": {"name": "brilliant better", "version": 7}, "527": {"name": "ハート・ビート", "version": 7}, "528": {"name": "Invitation", "version": 7}, @@ -328,9 +435,12 @@ "541": {"name": "華鳥風月", "version": 9}, "542": {"name": "METATRON", "version": 7}, "543": {"name": "終わりなき物語", "version": 7}, + "544": {"name": "ゆりゆららららゆるゆり大事件", "version": 8}, "546": {"name": "フォルテシモBELL", "version": 8}, "547": {"name": "私の中の幻想的世界観及びその顕現を想起させたある現実での出来事に関する一考察", "version": 8}, "548": {"name": "DETARAME ROCK&ROLL THEORY", "version": 8}, + "550": {"name": "PERFECT HUMAN", "version": 8}, + "551": {"name": "ファッとして桃源郷", "version": 8}, "552": {"name": "ゴーストルール", "version": 8}, "553": {"name": "チュルリラ・チュルリラ・ダッダッダ!", "version": 8}, "555": {"name": "GOODMEN", "version": 8}, @@ -338,7 +448,9 @@ "557": {"name": "Last Brave ~ Go to zero", "version": 8}, "558": {"name": "STAIRWAY TO GENERATION", "version": 8}, "559": {"name": "空威張りビヘイビア", "version": 8}, + "560": {"name": "回レ!雪月花", "version": 8}, "561": {"name": "いっしそう電☆舞舞神拳!", "version": 8}, + "562": {"name": "いぇす!ゆゆゆ☆ゆるゆり♪♪", "version": 8}, "564": {"name": "ENJOY POLIS", "version": 12}, "565": {"name": "生きてるおばけは生きている", "version": 8}, "566": {"name": "天火明命", "version": 8}, @@ -348,6 +460,8 @@ "572": {"name": "Scream out! -maimai SONIC WASHER Edit-", "version": 8}, "573": {"name": "四月の雨", "version": 8}, "574": {"name": "Selector", "version": 8}, + "575": {"name": "Star☆Glitter", "version": 8}, + "576": {"name": "H-A-J-I-M-A-R-I-U-T-A-!!", "version": 8}, "578": {"name": "ドキドキDREAM!!!", "version": 8}, "579": {"name": "ポップミュージックは僕のもの", "version": 8}, "580": {"name": "吉原ラメント", "version": 8}, @@ -363,17 +477,23 @@ "593": {"name": "conflict", "version": 8}, "598": {"name": "すーぱーぬこになりたい", "version": 8}, "599": {"name": "踊れオーケストラ", "version": 8}, + "600": {"name": "SUSHI食べたい feat.ソイソース", "version": 8}, "601": {"name": "きらっせ☆ウッド村ファーム", "version": 8}, "602": {"name": "taboo tears you up", "version": 8}, "603": {"name": "その群青が愛しかったようだった", "version": 8}, + "604": {"name": "Jumping!!", "version": 8}, + "605": {"name": "7 Girls War", "version": 8}, "606": {"name": "The wheel to the right", "version": 8}, + "609": {"name": "SAKURAスキップ", "version": 9}, "610": {"name": "リンカーネイション", "version": 9}, "611": {"name": "宿題が終わらないっ!", "version": 9}, "612": {"name": "GO BACK 2 YOUR RAVE", "version": 9}, "613": {"name": "天国と地獄 -言ノ葉リンネ-", "version": 9}, "614": {"name": "夢花火", "version": 9}, + "615": {"name": "Paradisus-Paradoxum", "version": 9}, "617": {"name": "オトヒメモリー☆ウタゲーション", "version": 9}, "618": {"name": "ラブチーノ", "version": 9}, + "620": {"name": "東京レトロ", "version": 9}, "621": {"name": "ARROW", "version": 9}, "622": {"name": "バッド・ダンス・ホール", "version": 9}, "624": {"name": "KISS CANDY FLAVOR", "version": 9}, @@ -393,21 +513,36 @@ "641": {"name": "Calamity Fortune", "version": 9}, "642": {"name": "Justified", "version": 10}, "643": {"name": "Excalibur ~Revived resolution~", "version": 10}, + "645": {"name": "ホシトハナ", "version": 9}, + "646": {"name": "名探偵連続殺人事件", "version": 9}, "647": {"name": "エイリアンエイリアン", "version": 9}, "648": {"name": "My Dearest Song", "version": 9}, "649": {"name": "猛進ソリストライフ!", "version": 9}, "650": {"name": "Let's Go Away", "version": 11}, + "653": {"name": "Now Loading!!!!", "version": 9}, "654": {"name": "真・ハンサム体操でズンドコホイ", "version": 9}, "655": {"name": "フラジール", "version": 9}, + "656": {"name": "未来(ソラ)の歌", "version": 9}, "657": {"name": "オーディエンスを沸かす程度の能力 feat.タイツォン", "version": 9}, "658": {"name": "人里に下ったアタイがいつの間にか社畜になっていた件", "version": 9}, + "659": {"name": "ギリギリ最強あいまいみー!", "version": 10}, + "661": {"name": "CALL HEAVEN!!", "version": 9}, + "662": {"name": "Sunshine world tour", "version": 9}, + "663": {"name": "ちがう!!!", "version": 9}, "664": {"name": "Moon of Noon", "version": 9}, "665": {"name": "チルノのパーフェクトさんすう教室 ⑨周年バージョン", "version": 9}, "666": {"name": "デスパレイト", "version": 9}, + "668": {"name": "ようこそジャパリパークへ", "version": 10}, + "669": {"name": "あ・え・い・う・え・お・あお!!", "version": 10}, "670": {"name": "ドーナツホール", "version": 10}, "672": {"name": "MilK", "version": 10}, "673": {"name": "咲キ誇レ常世ノ華", "version": 10}, "674": {"name": "Magical Flavor", "version": 10}, + "675": {"name": "白い雪のプリンセスは", "version": 10}, + "676": {"name": "好き!雪!本気マジック", "version": 10}, + "677": {"name": "スターナイトスノウ", "version": 10}, + "678": {"name": "This game", "version": 10}, + "679": {"name": "Los! Los! Los!", "version": 10}, "680": {"name": "Candy Tall Woman", "version": 10}, "681": {"name": "Signature", "version": 10}, "682": {"name": "人生リセットボタン", "version": 10}, @@ -423,6 +558,8 @@ "694": {"name": "猫祭り", "version": 10}, "695": {"name": "TRUST", "version": 10}, "696": {"name": "Still", "version": 10}, + "697": {"name": "ガヴリールドロップキック", "version": 10}, + "698": {"name": "fantastic dreamer", "version": 10}, "699": {"name": "天狗の落とし文 feat. ytr", "version": 10}, "700": {"name": "疾走あんさんぶる", "version": 10}, "701": {"name": "Doll Judgment", "version": 10}, @@ -438,6 +575,7 @@ "712": {"name": "ミラクル・ショッピング", "version": 10}, "713": {"name": "Kinda Way", "version": 10}, "717": {"name": "ラブって♡ジュエリー♪えんじぇる☆ブレイク!!", "version": 12}, + "718": {"name": "ヤバい○○", "version": 10}, "719": {"name": "エンドマークに希望と涙を添えて", "version": 10}, "720": {"name": "ナンセンス文学", "version": 10}, "721": {"name": "Bang Babang Bang!!!", "version": 10}, @@ -445,6 +583,9 @@ "723": {"name": "SPICY SWINGY STYLE", "version": 10}, "725": {"name": "砂の惑星 feat. HATSUNE MIKU", "version": 10}, "726": {"name": "アンノウン・マザーグース", "version": 10}, + "728": {"name": "POP TEAM EPIC", "version": 11}, + "729": {"name": "にめんせい☆ウラオモテライフ!", "version": 11}, + "730": {"name": "うまるん体操", "version": 11}, "731": {"name": "妄想感傷代償連盟", "version": 11}, "732": {"name": "LOVE EAST", "version": 11}, "733": {"name": "Fist Bump", "version": 11}, @@ -457,16 +598,24 @@ "740": {"name": "ULTRA B+K", "version": 11}, "741": {"name": "インビジブル", "version": 11}, "742": {"name": "彗星ハネムーン", "version": 11}, + "743": {"name": "アンチクロックワイズ", "version": 11}, + "744": {"name": "全力☆Summer!", "version": 11}, "745": {"name": "keep hopping", "version": 11}, "746": {"name": "larva", "version": 11}, + "747": {"name": "えれくとりっく・えんじぇぅ", "version": 11}, + "748": {"name": "ミラクルペイント", "version": 11}, + "749": {"name": "Ievan Polkka", "version": 11}, "750": {"name": "初音ミクの激唱", "version": 11}, + "751": {"name": "ガチャガチャきゅ~と・ふぃぎゅ@メイト", "version": 12}, "752": {"name": "true my heart -Lovable mix-", "version": 12}, "753": {"name": "Rodeo Machine", "version": 11}, + "754": {"name": "Arrival of Tears", "version": 11}, "756": {"name": "CYBER Sparks", "version": 11}, "757": {"name": "Xevel", "version": 11}, "758": {"name": "INFINITE WORLD", "version": 11}, "759": {"name": "サドマミホリック", "version": 11}, "760": {"name": "Ragnarok", "version": 11}, + "761": {"name": "このふざけた素晴らしき世界は、僕の為にある", "version": 11}, "762": {"name": "このピアノでお前を8759632145回ぶん殴る", "version": 11}, "763": {"name": "はやくそれになりたい!", "version": 11}, "764": {"name": "フィクサー", "version": 11}, @@ -479,6 +628,7 @@ "771": {"name": "We Gonna Journey", "version": 11}, "772": {"name": "FREEDOM DiVE (tpz Overcute Remix)", "version": 11}, "773": {"name": "SILENT BLUE", "version": 11}, + "774": {"name": "甲賀忍法帖", "version": 11}, "775": {"name": "ジンギスカン", "version": 11}, "776": {"name": "にじよめちゃん体操第一億", "version": 11}, "777": {"name": "花と、雪と、ドラムンベース。", "version": 11}, @@ -487,7 +637,10 @@ "781": {"name": "Seyana. ~何でも言うことを聞いてくれるアカネチャン~", "version": 11}, "782": {"name": "おねがいダーリン", "version": 11}, "786": {"name": "My First Phone", "version": 11}, + "787": {"name": "SHINY DAYS", "version": 12}, + "788": {"name": "NOISY LOVE POWER☆", "version": 12}, "789": {"name": "ネ!コ!", "version": 12}, + "790": {"name": "only my railgun", "version": 12}, "791": {"name": "ロールプレイングゲーム", "version": 12}, "792": {"name": "ヒバナ", "version": 12}, "793": {"name": "ロキ", "version": 12}, @@ -497,10 +650,16 @@ "798": {"name": "セイクリッド ルイン", "version": 12}, "799": {"name": "QZKago Requiem", "version": 12}, "800": {"name": "EVERGREEN", "version": 12}, + "801": {"name": "金の聖夜霜雪に朽ちて", "version": 12}, "802": {"name": "不思議の国のクリスマス", "version": 12}, "803": {"name": "Schwarzschild", "version": 12}, + "804": {"name": "Magical Sound Shower", "version": 12}, + "805": {"name": "片想いサンバ", "version": 12}, "806": {"name": "ナイトメア☆パーティーナイト", "version": 12}, + "807": {"name": "フキゲンワルツ", "version": 12}, "809": {"name": "結ンデ開イテ羅刹ト骸", "version": 12}, + "810": {"name": "サウンド", "version": 12}, + "811": {"name": "右肩の蝶", "version": 12}, "812": {"name": "Alea jacta est!", "version": 12}, "815": {"name": "L4TS:2018 (feat. あひる & KTA)", "version": 12}, "816": {"name": "クレイジークレイジーダンサーズ", "version": 12}, @@ -511,9 +670,14 @@ "821": {"name": "-OutsideR:RequieM-", "version": 12}, "822": {"name": "イロトリドリのメロディ", "version": 12}, "823": {"name": "奏者はただ背中と提琴で語るのみ", "version": 12}, + "824": {"name": "Deep in Abyss", "version": 12}, "825": {"name": "雷切-RAIKIRI-", "version": 12}, + "826": {"name": "キミとボクのミライ", "version": 12}, + "827": {"name": "Lost Princess", "version": 12}, + "828": {"name": "アリサのテーマ", "version": 12}, "829": {"name": "敗北の少年", "version": 12}, "830": {"name": "立ち入り禁止", "version": 12}, + "831": {"name": "お気に召すまま", "version": 12}, "832": {"name": "命ばっかり", "version": 12}, "833": {"name": "the EmpErroR", "version": 12}, "834": {"name": "PANDORA PARADOXXX", "version": 12}, @@ -525,51 +689,80 @@ "840": {"name": "Imperishable Night 2006 (2016 Refine)", "version": 12}, "841": {"name": "終点", "version": 12}, "842": {"name": "WORLD'S END UMBRELLA", "version": 12}, + "843": {"name": "ワンダーラスト", "version": 12}, "844": {"name": "End Time", "version": 12}, + "847": {"name": "カラフル×メロディ", "version": 12}, "848": {"name": "魔法少女になるしかねぇ", "version": 12}, "849": {"name": "Kattobi KEIKYU Rider", "version": 12}, "850": {"name": "B.M.S.", "version": 12}, "852": {"name": "TiamaT:F minor", "version": 12}, "853": {"name": "前前前世", "version": 9}, + "854": {"name": "全世界共通リズム感テスト", "version": 15}, + "902": {"name": "次の方お願いします", "version": 0}, + "903": {"name": "カービン", "version": 0}, + "904": {"name": "とても遠い愛", "version": 0}, + "906": {"name": "So long", "version": 0}, + "907": {"name": "飛行履歴", "version": 0}, "1020": {"name": "Technicians High", "version": 17}, "1051": {"name": "Destr0yer", "version": 17}, - "1081": {"name": "サンバランド", "version": 19}, - "1085": {"name": "Halcyon", "version": 19}, + "1081": {"name": "サンバランド", "version": 18}, + "1085": {"name": "Halcyon", "version": 18}, + "1103": {"name": "渦状銀河のシンフォニエッタ", "version": 21}, "1235": {"name": "VIIIbit Explorer", "version": 19}, - "10070": {"name": "ジングルベル", "version": 19}, - "10145": {"name": "Starlight Disco", "version": 19}, + "1301": {"name": "華の集落、秋のお届け", "version": 22}, + "10021": {"name": "コネクト", "version": 14}, + "10044": {"name": "ハッピーシンセサイザ", "version": 22}, + "10070": {"name": "ジングルベル", "version": 20}, + "10117": {"name": "炎歌 -ほむらうた-", "version": 22}, + "10125": {"name": "千本桜", "version": 13}, + "10128": {"name": "御旗のもとに", "version": 22}, + "10145": {"name": "Starlight Disco", "version": 18}, "10146": {"name": "39", "version": 13}, + "10181": {"name": "君の知らない物語", "version": 14}, + "10185": {"name": "*ハロー、プラネット。", "version": 21}, "10188": {"name": "天ノ弱", "version": 15}, "10190": {"name": "モザイクロール", "version": 19}, "10191": {"name": "脳漿炸裂ガール", "version": 13}, - "10193": {"name": "セツナトリップ", "version": 19}, - "10202": {"name": "Grip & Break down !!", "version": 19}, - "10204": {"name": "ナイト・オブ・ナイツ", "version": 21}, + "10193": {"name": "セツナトリップ", "version": 18}, + "10202": {"name": "Grip & Break down !!", "version": 18}, + "10204": {"name": "ナイト・オブ・ナイツ", "version": 20}, + "10225": {"name": "sweet little sister", "version": 22}, "10235": {"name": "火炎地獄", "version": 19}, - "10251": {"name": "Monochrome Rainbow", "version": 21}, + "10242": {"name": "ナミダと流星", "version": 21}, + "10251": {"name": "Monochrome Rainbow", "version": 20}, "10256": {"name": "いーあるふぁんくらぶ", "version": 13}, "10288": {"name": "六兆年と一夜物語", "version": 13}, "10301": {"name": "患部で止まってすぐ溶ける~狂気の優曇華院", "version": 13}, "10302": {"name": "ケロ⑨destiny", "version": 19}, - "10315": {"name": "深海少女", "version": 21}, + "10315": {"name": "深海少女", "version": 20}, "10316": {"name": "M.S.S.Planet", "version": 19}, "10319": {"name": "幻想のサテライト", "version": 13}, "10363": {"name": "Oshama Scramble!", "version": 13}, + "10366": {"name": "oboro", "version": 21}, + "10375": {"name": "One Step Ahead", "version": 23}, "10404": {"name": "響縁", "version": 19}, "10411": {"name": "初音ミクの消失", "version": 21}, "10420": {"name": "Change Our MIRAI!", "version": 13}, + "10475": {"name": "かくしん的☆めたまるふぉ~ぜっ!", "version": 13}, + "10500": {"name": "シュガーソングとビターステップ", "version": 13}, + "10501": {"name": "Daydream café", "version": 15}, + "10535": {"name": "色は匂へど散りぬるを", "version": 21}, "10536": {"name": "月に叢雲華に風", "version": 13}, "10552": {"name": "ゴーストルール", "version": 17}, + "10560": {"name": "回レ!雪月花", "version": 13}, "10572": {"name": "Scream out! -maimai SONIC WASHER Edit-", "version": 13}, - "10574": {"name": "Selector", "version": 21}, + "10574": {"name": "Selector", "version": 20}, "10593": {"name": "conflict", "version": 13}, "10602": {"name": "taboo tears you up", "version": 17}, + "10615": {"name": "Paradisus-Paradoxum", "version": 14}, "10625": {"name": "Maxi", "version": 19}, "10641": {"name": "Calamity Fortune", "version": 13}, "10665": {"name": "チルノのパーフェクトさんすう教室 ⑨周年バージョン", "version": 13}, + "10668": {"name": "ようこそジャパリパークへ", "version": 13}, "10690": {"name": "ダンスロボットダンス", "version": 15}, "10702": {"name": "WARNING×WARNING×WARNING", "version": 13}, "10706": {"name": "シャルル", "version": 13}, + "10728": {"name": "POP TEAM EPIC", "version": 13}, "10734": {"name": "ENERGY SYNERGY MATRIX", "version": 13}, "11001": {"name": "BLACK ROSE", "version": 13}, "11002": {"name": "Secret Sleuth", "version": 13}, @@ -599,29 +792,45 @@ "11029": {"name": "Titania", "version": 13}, "11030": {"name": "BOKUTO", "version": 13}, "11031": {"name": "立川浄穢捕物帳", "version": 13}, - "11032": {"name": "CHOCOLATE BOMB!!!!", "version": 15}, + "11032": {"name": "CHOCOLATE BOMB!!!!", "version": 14}, "11034": {"name": "METEOR", "version": 13}, + "11035": {"name": "LOSER", "version": 13}, + "11036": {"name": "U.S.A.", "version": 13}, "11037": {"name": "HOT LIMIT", "version": 13}, + "11038": {"name": "新宝島", "version": 13}, + "11039": {"name": "UNION", "version": 13}, + "11041": {"name": "乗ってけ!ジャパリビート", "version": 13}, + "11042": {"name": "フレ!フレ!ベストフレンズ", "version": 13}, "11043": {"name": "メルト", "version": 13}, "11044": {"name": "メルティランドナイトメア", "version": 13}, + "11045": {"name": "アウトサイダー", "version": 13}, "11046": {"name": "アディショナルメモリー", "version": 13}, + "11047": {"name": "ジャガーノート", "version": 13}, "11048": {"name": "ナイト・オブ・ナイツ (Cranky Remix)", "version": 13}, - "11049": {"name": "Bad Apple!! feat.nomico (REDALiCE Remix)", "version": 13}, + "11049": {"name": "Bad Apple!! feat.nomico (REDALiCE Remix)", "version": 14}, "11050": {"name": "Strobe♡Girl", "version": 13}, "11051": {"name": "Destr0yer", "version": 13}, "11052": {"name": "グリーンライツ・セレナーデ", "version": 13}, + "11055": {"name": "POPPY PAPPY DAY", "version": 13}, + "11056": {"name": "Clattanoia", "version": 13}, + "11057": {"name": "The Gong of Knockout", "version": 13}, "11058": {"name": "デンパラダイム", "version": 13}, "11059": {"name": "骸骨楽団とリリア", "version": 13}, "11060": {"name": "星屑ユートピア", "version": 13}, "11061": {"name": "アマツキツネ", "version": 13}, + "11062": {"name": "徒花ネクロマンシー", "version": 13}, + "11063": {"name": "目覚めRETURNER", "version": 13}, "11064": {"name": "Little \"Sister\" Bitch", "version": 13}, "11065": {"name": "Yakumo >>JOINT STRUGGLE (2019 Update)", "version": 13}, "11066": {"name": "げきオコスティックファイナリアリティぷんぷんマスタースパーク", "version": 13}, "11067": {"name": "CocktaiL", "version": 13}, "11069": {"name": "太陽系デスコ", "version": 13}, "11070": {"name": "だからパンを焼いたんだ", "version": 13}, + "11071": {"name": "東奔西走行進曲", "version": 13}, + "11072": {"name": "Soul-ride ON!", "version": 13}, "11073": {"name": "アカリがやってきたぞっ", "version": 13}, "11075": {"name": "プナイプナイせんそう", "version": 13}, + "11076": {"name": "未完成人", "version": 13}, "11077": {"name": "デビル☆アイドル", "version": 13}, "11078": {"name": "quiet room", "version": 13}, "11080": {"name": "Jump!! Jump!! Jump!!", "version": 13}, @@ -632,59 +841,73 @@ "11086": {"name": "だれかの心臓になれたなら", "version": 13}, "11087": {"name": "幾望の月", "version": 13}, "11088": {"name": "39みゅーじっく!", "version": 13}, - "11089": {"name": "STEEL TRANSONIC", "version": 15}, - "11090": {"name": "Flashkick", "version": 15}, - "11091": {"name": "Stardust Memories", "version": 15}, - "11092": {"name": "My My My", "version": 15}, - "11093": {"name": "UniTas", "version": 13}, - "11094": {"name": "ここからはじまるプロローグ。", "version": 13}, - "11095": {"name": "絡めトリック利己ライザー", "version": 13}, - "11096": {"name": "モ°ルモ°ル", "version": 13}, - "11097": {"name": "ブレインジャックシンドローム", "version": 15}, - "11098": {"name": "共鳴", "version": 15}, - "11099": {"name": "Ututu", "version": 15}, - "11100": {"name": "シエルブルーマルシェ", "version": 15}, - "11101": {"name": "GRÄNDIR", "version": 15}, - "11102": {"name": "封焔の135秒", "version": 15}, - "11103": {"name": "渦状銀河のシンフォニエッタ", "version": 15}, - "11104": {"name": "ヤミツキ", "version": 13}, - "11105": {"name": "ワードワードワード", "version": 15}, - "11106": {"name": "Valsqotch", "version": 13}, - "11107": {"name": "最強 the サマータイム!!!!!", "version": 15}, - "11108": {"name": "UTAKATA", "version": 15}, - "11109": {"name": "タテマエと本心の大乱闘", "version": 15}, - "11110": {"name": "はちみつアドベンチャー", "version": 15}, - "11111": {"name": "popcorn", "version": 15}, - "11113": {"name": "ハム太郎とっとこうた", "version": 15}, - "11115": {"name": "だから僕は音楽を辞めた", "version": 15}, - "11121": {"name": "ビターチョコデコレーション", "version": 13}, - "11122": {"name": "アンドロイドガール", "version": 13}, - "11123": {"name": "スターリースカイ☆パレード", "version": 13}, - "11124": {"name": "スロウダウナー", "version": 13}, - "11125": {"name": "クレイジー・ビート", "version": 15}, - "11126": {"name": "バイオレンストリガー", "version": 15}, - "11127": {"name": "グラーヴェ", "version": 15}, - "11128": {"name": "KILLER B", "version": 15}, - "11129": {"name": "すーぱーぬこになれんかった", "version": 15}, - "11130": {"name": "アスヘノBRAVE", "version": 15}, - "11131": {"name": "深海シティアンダーグラウンド", "version": 15}, - "11132": {"name": "表裏一体", "version": 15}, - "11133": {"name": "Catch the Wave", "version": 15}, - "11134": {"name": "ソリッド", "version": 13}, - "11135": {"name": "全力ハッピーライフ", "version": 15}, - "11136": {"name": "Oath Act", "version": 15}, - "11137": {"name": "Witches night", "version": 15}, - "11138": {"name": "Drive Your Fire", "version": 15}, - "11139": {"name": "wheel", "version": 15}, - "11140": {"name": "Black Lair", "version": 13}, - "11141": {"name": "energy trixxx", "version": 15}, - "11142": {"name": "NULCTRL", "version": 15}, - "11143": {"name": "アトロポスと最果の探究者", "version": 15}, - "11150": {"name": "ウマイネームイズうまみちゃん", "version": 15}, + "11089": {"name": "STEEL TRANSONIC", "version": 14}, + "11090": {"name": "Flashkick", "version": 14}, + "11091": {"name": "Stardust Memories", "version": 14}, + "11092": {"name": "My My My", "version": 14}, + "11093": {"name": "UniTas", "version": 14}, + "11094": {"name": "ここからはじまるプロローグ。", "version": 14}, + "11095": {"name": "絡めトリック利己ライザー", "version": 14}, + "11096": {"name": "モ°ルモ°ル", "version": 14}, + "11097": {"name": "ブレインジャックシンドローム", "version": 14}, + "11098": {"name": "共鳴", "version": 14}, + "11099": {"name": "Ututu", "version": 14}, + "11100": {"name": "シエルブルーマルシェ", "version": 14}, + "11101": {"name": "GRÄNDIR", "version": 14}, + "11102": {"name": "封焔の135秒", "version": 14}, + "11103": {"name": "渦状銀河のシンフォニエッタ", "version": 14}, + "11104": {"name": "ヤミツキ", "version": 14}, + "11105": {"name": "ワードワードワード", "version": 14}, + "11106": {"name": "Valsqotch", "version": 14}, + "11107": {"name": "最強 the サマータイム!!!!!", "version": 14}, + "11108": {"name": "UTAKATA", "version": 14}, + "11109": {"name": "タテマエと本心の大乱闘", "version": 14}, + "11110": {"name": "はちみつアドベンチャー", "version": 14}, + "11111": {"name": "popcorn", "version": 14}, + "11113": {"name": "ハム太郎とっとこうた", "version": 14}, + "11114": {"name": "青空のラプソディ", "version": 14}, + "11115": {"name": "だから僕は音楽を辞めた", "version": 14}, + "11116": {"name": "ラブ・ドラマティック feat. 伊原六花", "version": 14}, + "11117": {"name": "異世界かるてっと", "version": 14}, + "11118": {"name": "いつかいい感じにアレしよう", "version": 14}, + "11119": {"name": "I'm with you", "version": 14}, + "11120": {"name": "オトモダチフィルム", "version": 14}, + "11121": {"name": "ビターチョコデコレーション", "version": 14}, + "11122": {"name": "アンドロイドガール", "version": 14}, + "11123": {"name": "スターリースカイ☆パレード", "version": 14}, + "11124": {"name": "スロウダウナー", "version": 14}, + "11125": {"name": "クレイジー・ビート", "version": 14}, + "11126": {"name": "バイオレンストリガー", "version": 14}, + "11127": {"name": "グラーヴェ", "version": 14}, + "11128": {"name": "KILLER B", "version": 14}, + "11129": {"name": "すーぱーぬこになれんかった", "version": 14}, + "11130": {"name": "アスヘノBRAVE", "version": 14}, + "11131": {"name": "深海シティアンダーグラウンド", "version": 14}, + "11132": {"name": "表裏一体", "version": 14}, + "11133": {"name": "Catch the Wave", "version": 14}, + "11134": {"name": "ソリッド", "version": 14}, + "11135": {"name": "全力ハッピーライフ", "version": 14}, + "11136": {"name": "Oath Act", "version": 14}, + "11137": {"name": "Witches night", "version": 14}, + "11138": {"name": "Drive Your Fire", "version": 14}, + "11139": {"name": "wheel", "version": 14}, + "11140": {"name": "Black Lair", "version": 14}, + "11141": {"name": "energy trixxx", "version": 14}, + "11142": {"name": "NULCTRL", "version": 14}, + "11143": {"name": "アトロポスと最果の探究者", "version": 14}, + "11144": {"name": "六厘歌", "version": 14}, + "11145": {"name": "Entrance", "version": 14}, + "11146": {"name": "Lunar Mare", "version": 14}, + "11147": {"name": "Saika", "version": 14}, + "11148": {"name": "CHAOS", "version": 14}, + "11149": {"name": "Maboroshi", "version": 14}, + "11150": {"name": "ウマイネームイズうまみちゃん", "version": 14}, + "11151": {"name": "馬と鹿", "version": 14}, "11152": {"name": "ぼくたちいつでも しゅわっしゅわ!", "version": 15}, "11153": {"name": "Boys O’Clock", "version": 15}, "11154": {"name": "居並ぶ穀物と溜息まじりの運送屋", "version": 15}, "11155": {"name": "ARAIS", "version": 15}, + "11156": {"name": "マイオドレ!舞舞タイム", "version": 15}, "11157": {"name": "Aetheric Energy", "version": 15}, "11158": {"name": "Komplexe", "version": 15}, "11159": {"name": "Beautiful Future", "version": 15}, @@ -697,8 +920,8 @@ "11166": {"name": "ワンダーシャッフェンの法則", "version": 15}, "11167": {"name": "BIRTH", "version": 15}, "11168": {"name": "シアトリカル・ケース", "version": 15}, - "11169": {"name": "ステップアンドライム", "version": 17}, - "11170": {"name": "届かない花束", "version": 17}, + "11169": {"name": "ステップアンドライム", "version": 16}, + "11170": {"name": "届かない花束", "version": 16}, "11171": {"name": "YURUSHITE", "version": 15}, "11172": {"name": "ポケットからぬりつぶせ!", "version": 15}, "11173": {"name": "トリドリ⇒モリモリ!Lovely fruits☆", "version": 15}, @@ -706,6 +929,11 @@ "11175": {"name": "宛城、炎上!!", "version": 15}, "11176": {"name": "Climax", "version": 15}, "11177": {"name": "レーイレーイ", "version": 15}, + "11178": {"name": "ノーポイッ!", "version": 15}, + "11179": {"name": "町かどタンジェント", "version": 15}, + "11180": {"name": "紅蓮華", "version": 15}, + "11182": {"name": "MIRACLE RUSH", "version": 15}, + "11183": {"name": "お願いマッスル", "version": 15}, "11184": {"name": "Virtual to LIVE", "version": 15}, "11185": {"name": "命に嫌われている", "version": 15}, "11186": {"name": "アンクローズ・ヒューマン", "version": 15}, @@ -718,6 +946,7 @@ "11193": {"name": "デリヘル呼んだら君が来た", "version": 15}, "11194": {"name": "ベノム", "version": 15}, "11195": {"name": "マネマネサイコトロピック", "version": 15}, + "11197": {"name": "劣等上等", "version": 19}, "11198": {"name": "アスノヨゾラ哨戒班", "version": 15}, "11199": {"name": "悪戯センセーション", "version": 15}, "11200": {"name": "Paranoia", "version": 15}, @@ -736,71 +965,81 @@ "11214": {"name": "Jörqer", "version": 15}, "11215": {"name": "Sqlupp (Camellia's \"Sqleipd*Hiytex\" Remix)", "version": 15}, "11216": {"name": "felys -final remix-", "version": 15}, + "11217": {"name": "Pretender", "version": 15}, + "11218": {"name": "自傷無色", "version": 19}, "11219": {"name": "Prismatic", "version": 15}, "11221": {"name": "≠彡\"/了→", "version": 15}, "11222": {"name": "BREaK! BREaK! BREaK!", "version": 15}, - "11223": {"name": "Heavenly Blast", "version": 17}, - "11224": {"name": "Paradisoda", "version": 17}, - "11225": {"name": "VANTABLACK RAVER", "version": 17}, - "11226": {"name": "時計の国のジェミニ", "version": 17}, - "11227": {"name": "Xenovcipher", "version": 17}, - "11228": {"name": "星めぐり、果ての君へ。", "version": 17}, - "11229": {"name": "スローアライズ", "version": 17}, - "11230": {"name": "チエルカ/エソテリカ", "version": 17}, - "11231": {"name": "生命不詳", "version": 17}, - "11232": {"name": "Never Give Up!", "version": 17}, - "11233": {"name": "Starry Colors", "version": 17}, - "11234": {"name": "ほしぞらスペクタクル", "version": 17}, - "11235": {"name": "VIIIbit Explorer", "version": 17}, - "11236": {"name": "Last Samurai", "version": 17}, - "11237": {"name": "蒼穹舞楽", "version": 17}, - "11238": {"name": "AMABIE", "version": 17}, - "11239": {"name": "オーケー? オーライ!", "version": 17}, - "11240": {"name": "サヨナラフリーウェイ", "version": 17}, - "11241": {"name": "単一指向性オーバーブルーム", "version": 17}, - "11242": {"name": "みなえをチェック!", "version": 17}, - "11243": {"name": "ハジマリノピアノ", "version": 17}, - "11246": {"name": "BOUNCE & DANCE", "version": 17}, - "11247": {"name": "Kiss Me Kiss", "version": 17}, - "11248": {"name": "MEGATON BLAST", "version": 17}, - "11249": {"name": "Splash Dance!!", "version": 17}, - "11253": {"name": "おジャ魔女カーニバル!!", "version": 17}, - "11255": {"name": "タケモトピアノCMソング", "version": 17}, - "11260": {"name": "ネガティブ進化論", "version": 17}, - "11261": {"name": "雨とペトラ", "version": 17}, - "11262": {"name": "永遠にゲームで対戦したいキリタン", "version": 17}, - "11263": {"name": "KING", "version": 17}, - "11264": {"name": "幽霊東京", "version": 17}, - "11265": {"name": "Alice in 冷凍庫", "version": 17}, - "11266": {"name": "キラメキ居残り大戦争", "version": 17}, - "11267": {"name": "ディカディズム", "version": 17}, - "11268": {"name": "猫猫的宇宙論", "version": 17}, - "11269": {"name": "ラットが死んだnew words", "version": 17}, - "11270": {"name": "阿吽のビーツ", "version": 17}, - "11271": {"name": "再会", "version": 17}, - "11272": {"name": "約束", "version": 17}, - "11273": {"name": "トラフィック・ジャム", "version": 17}, - "11274": {"name": "アルティメットセンパイ", "version": 17}, - "11275": {"name": "ロストワードクロニカル", "version": 17}, - "11276": {"name": "今、誰が為のかがり火へ", "version": 17}, - "11277": {"name": "Melody!", "version": 17}, - "11278": {"name": "下克上々", "version": 17}, - "11279": {"name": "ハウリング", "version": 17}, - "11280": {"name": "トランスダンスアナーキー", "version": 17}, - "11281": {"name": "Re:End of a Dream", "version": 17}, - "11282": {"name": "もぺもぺ", "version": 17}, - "11283": {"name": "Sound Chimera", "version": 17}, - "11284": {"name": "CO5M1C R4ILR0AD", "version": 17}, - "11285": {"name": "MAKE IT FUNKY NOW", "version": 17}, - "11286": {"name": "Rush-More", "version": 17}, - "11287": {"name": "Strange Bar", "version": 17}, - "11288": {"name": "Big Daddy", "version": 17}, - "11289": {"name": "ベースラインやってる?笑", "version": 17}, - "11290": {"name": "ALiVE", "version": 17}, - "11291": {"name": "ヒミツCULT", "version": 17}, - "11292": {"name": "MEGATON KICK", "version": 17}, - "11293": {"name": "LOSE CONTROL", "version": 17}, - "11294": {"name": "宿星審判", "version": 17}, + "11223": {"name": "Heavenly Blast", "version": 16}, + "11224": {"name": "Paradisoda", "version": 16}, + "11225": {"name": "VANTABLACK RAVER", "version": 16}, + "11226": {"name": "時計の国のジェミニ", "version": 16}, + "11227": {"name": "Xenovcipher", "version": 16}, + "11228": {"name": "星めぐり、果ての君へ。", "version": 16}, + "11229": {"name": "スローアライズ", "version": 16}, + "11230": {"name": "チエルカ/エソテリカ", "version": 16}, + "11231": {"name": "生命不詳", "version": 16}, + "11232": {"name": "Never Give Up!", "version": 16}, + "11233": {"name": "Starry Colors", "version": 16}, + "11234": {"name": "ほしぞらスペクタクル", "version": 16}, + "11235": {"name": "VIIIbit Explorer", "version": 16}, + "11236": {"name": "Last Samurai", "version": 16}, + "11237": {"name": "蒼穹舞楽", "version": 16}, + "11238": {"name": "AMABIE", "version": 16}, + "11239": {"name": "オーケー? オーライ!", "version": 16}, + "11240": {"name": "サヨナラフリーウェイ", "version": 16}, + "11241": {"name": "単一指向性オーバーブルーム", "version": 16}, + "11242": {"name": "みなえをチェック!", "version": 16}, + "11243": {"name": "ハジマリノピアノ", "version": 16}, + "11246": {"name": "BOUNCE & DANCE", "version": 16}, + "11247": {"name": "Kiss Me Kiss", "version": 16}, + "11248": {"name": "MEGATON BLAST", "version": 16}, + "11249": {"name": "Splash Dance!!", "version": 16}, + "11250": {"name": "インフェルノ", "version": 16}, + "11251": {"name": "冬のこもりうた", "version": 16}, + "11252": {"name": "God knows...", "version": 16}, + "11253": {"name": "おジャ魔女カーニバル!!", "version": 16}, + "11254": {"name": "秒針を噛む", "version": 16}, + "11255": {"name": "タケモトピアノCMソング", "version": 16}, + "11256": {"name": "乙女のルートはひとつじゃない!", "version": 16}, + "11257": {"name": "ビックカメラのテーマソング", "version": 16}, + "11258": {"name": "電話革命ナイセン", "version": 16}, + "11259": {"name": "Shiny Smily Story", "version": 16}, + "11260": {"name": "ネガティブ進化論", "version": 16}, + "11261": {"name": "雨とペトラ", "version": 16}, + "11262": {"name": "永遠にゲームで対戦したいキリタン", "version": 16}, + "11263": {"name": "KING", "version": 16}, + "11264": {"name": "幽霊東京", "version": 16}, + "11265": {"name": "Alice in 冷凍庫", "version": 16}, + "11266": {"name": "キラメキ居残り大戦争", "version": 16}, + "11267": {"name": "ディカディズム", "version": 16}, + "11268": {"name": "猫猫的宇宙論", "version": 16}, + "11269": {"name": "ラットが死んだnew words", "version": 16}, + "11270": {"name": "阿吽のビーツ", "version": 16}, + "11271": {"name": "再会", "version": 16}, + "11272": {"name": "約束", "version": 16}, + "11273": {"name": "トラフィック・ジャム", "version": 16}, + "11274": {"name": "アルティメットセンパイ", "version": 16}, + "11275": {"name": "ロストワードクロニカル", "version": 16}, + "11276": {"name": "今、誰が為のかがり火へ", "version": 16}, + "11277": {"name": "Melody!", "version": 16}, + "11278": {"name": "下克上々", "version": 16}, + "11279": {"name": "ハウリング", "version": 16}, + "11280": {"name": "トランスダンスアナーキー", "version": 16}, + "11281": {"name": "Re:End of a Dream", "version": 16}, + "11282": {"name": "もぺもぺ", "version": 16}, + "11283": {"name": "Sound Chimera", "version": 16}, + "11284": {"name": "CO5M1C R4ILR0AD", "version": 16}, + "11285": {"name": "MAKE IT FUNKY NOW", "version": 16}, + "11286": {"name": "Rush-More", "version": 16}, + "11287": {"name": "Strange Bar", "version": 16}, + "11288": {"name": "Big Daddy", "version": 16}, + "11289": {"name": "ベースラインやってる?笑", "version": 16}, + "11290": {"name": "ALiVE", "version": 16}, + "11291": {"name": "ヒミツCULT", "version": 16}, + "11292": {"name": "MEGATON KICK", "version": 16}, + "11293": {"name": "LOSE CONTROL", "version": 16}, + "11294": {"name": "宿星審判", "version": 16}, "11295": {"name": "脳天直撃", "version": 17}, "11296": {"name": "とびだせ!TO THE COSMIC!!", "version": 17}, "11297": {"name": "噛み係", "version": 17}, @@ -833,27 +1072,31 @@ "11325": {"name": "テレキャスタービーボーイ", "version": 17}, "11327": {"name": "僕は空気が嫁ない", "version": 17}, "11328": {"name": "デッドマンズバラッド", "version": 17}, + "11329": {"name": "イヤホンロマンス", "version": 17}, "11330": {"name": "竹", "version": 17}, "11331": {"name": "スーパーシンメトリー", "version": 17}, "11333": {"name": "Southern Cross", "version": 17}, "11334": {"name": "Upshift", "version": 17}, "11335": {"name": "MOBILYS", "version": 17}, "11336": {"name": "ドラゴンエネルギー", "version": 17}, + "11337": {"name": "セカイはまだ始まってすらいない", "version": 19}, "11340": {"name": "Sweets Time", "version": 17}, "11341": {"name": "紅星ミゼラブル~廃憶編", "version": 17}, "11342": {"name": "幻想に咲いた花", "version": 17}, "11343": {"name": "マツヨイナイトバグ", "version": 17}, "11344": {"name": "ポッピンキャンディ☆フィーバー!", "version": 17}, "11345": {"name": "どぅーまいべすと!", "version": 17}, - "11346": {"name": "春を告げる", "version": 19}, + "11346": {"name": "春を告げる", "version": 18}, "11347": {"name": "泥の分際で私だけの大切を奪おうだなんて", "version": 17}, - "11348": {"name": "VOLTAGE", "version": 19}, + "11348": {"name": "VOLTAGE", "version": 17}, "11349": {"name": "失敗作少女", "version": 17}, "11350": {"name": "悪魔の踊り方", "version": 17}, "11351": {"name": "ノイローゼ", "version": 17}, + "11352": {"name": "Seize The Day", "version": 17}, "11353": {"name": "グッバイ宣言", "version": 17}, "11354": {"name": "春嵐", "version": 17}, "11355": {"name": "ラグトレイン", "version": 17}, + "11356": {"name": "なだめスかし Negotiation(TVsize)", "version": 17}, "11358": {"name": "インドア系ならトラックメイカー", "version": 17}, "11359": {"name": "アカツキアライヴァル", "version": 17}, "11360": {"name": "リモコン", "version": 17}, @@ -865,76 +1108,80 @@ "11367": {"name": "veil", "version": 17}, "11369": {"name": "廻廻奇譚", "version": 17}, "11370": {"name": "さんさーら!", "version": 17}, + "11371": {"name": "アイドル新鋭隊", "version": 19}, + "11372": {"name": "needLe", "version": 19}, "11373": {"name": "ヒステリックナイトガール", "version": 17}, "11374": {"name": "GIGANTØMAKHIA", "version": 17}, - "11375": {"name": "ミルキースター・シューティングスター", "version": 19}, - "11376": {"name": "isophote", "version": 19}, - "11377": {"name": "パラマウント☆ショータイム!!", "version": 19}, - "11378": {"name": "Strive against fate", "version": 19}, - "11379": {"name": "sølips", "version": 19}, - "11380": {"name": "パーフェクション", "version": 19}, - "11381": {"name": "デーモンベット", "version": 19}, - "11382": {"name": "HECATONCHEIR", "version": 19}, - "11383": {"name": "Irresistible", "version": 19}, - "11384": {"name": "HAGAKIRI", "version": 19}, - "11385": {"name": "N3V3R G3T OV3R", "version": 19}, - "11386": {"name": "Swift Swing", "version": 19}, - "11387": {"name": "星空パーティーチューン", "version": 19}, - "11388": {"name": "チューリングの跡", "version": 19}, - "11389": {"name": "Sage", "version": 19}, - "11390": {"name": "OTOGEMA", "version": 19}, - "11391": {"name": "WiPE OUT MEMORIES", "version": 19}, - "11392": {"name": "Metamorphosism", "version": 19}, - "11393": {"name": "白花の天使", "version": 19}, - "11394": {"name": "World's end loneliness", "version": 19}, - "11395": {"name": "Jouez Avec Moi?", "version": 19}, - "11396": {"name": "テリトリーバトル", "version": 19}, - "11398": {"name": "Good bye, Merry-Go-Round.", "version": 19}, - "11399": {"name": "ツクヨミステップ", "version": 19}, - "11400": {"name": "folern", "version": 19}, - "11401": {"name": "コスモポップファンクラブ", "version": 19}, - "11402": {"name": "撩乱乙女†無双劇", "version": 19}, - "11404": {"name": "See The Light", "version": 19}, - "11405": {"name": "エータ・ベータ・イータ", "version": 19}, - "11407": {"name": "くらべられっ子", "version": 19}, - "11408": {"name": "あの世行きのバスに乗ってさらば。", "version": 19}, - "11410": {"name": "ヴァンパイア", "version": 19}, - "11411": {"name": "エンヴィーベイビー", "version": 19}, - "11412": {"name": "初音天地開闢神話", "version": 19}, - "11413": {"name": "Armageddon", "version": 19}, - "11415": {"name": "Dreadnought", "version": 19}, - "11418": {"name": "enchanted love", "version": 19}, - "11419": {"name": "Caterpillar Song", "version": 19}, - "11420": {"name": "Photon Melodies", "version": 19}, - "11421": {"name": "吾輩よ猫であれ", "version": 19}, - "11422": {"name": " ", "version": 19}, - "11423": {"name": "BLUE ZONE", "version": 19}, - "11424": {"name": "Estahv", "version": 19}, - "11425": {"name": "First Dance", "version": 19}, - "11426": {"name": "Mjölnir", "version": 19}, - "11427": {"name": "Define", "version": 19}, - "11428": {"name": "BANG!", "version": 19}, - "11429": {"name": "Love's Theme of BADASS ~バッド・アス 愛のテーマ~", "version": 19}, - "11430": {"name": "オントロジー", "version": 19}, - "11431": {"name": "剣を抜け!GCCX MAX", "version": 19}, - "11432": {"name": "Princess♂", "version": 19}, - "11433": {"name": "ヒトガタ", "version": 19}, - "11434": {"name": "Spring of Dreams", "version": 19}, - "11435": {"name": "大輪の魂 (feat. AO, 司芭扶)", "version": 19}, - "11436": {"name": "紅に染まる恋の花", "version": 19}, - "11437": {"name": "三妖精SAY YA!!!", "version": 19}, - "11438": {"name": "Reach For The Stars (Re-Colors)", "version": 19}, - "11439": {"name": "ジャンキーナイトタウンオーケストラ", "version": 19}, - "11441": {"name": "終焉逃避行", "version": 19}, - "11443": {"name": "8-EM", "version": 19}, - "11444": {"name": "若い力", "version": 19}, - "11445": {"name": "遺伝子レベル∞スパイラル", "version": 19}, - "11446": {"name": "otorii INNOVATED -[i]3-", "version": 19}, - "11447": {"name": "エゴロック", "version": 19}, - "11448": {"name": "ただ選択があった", "version": 19}, - "11449": {"name": "パズルリボン", "version": 19}, - "11450": {"name": "YONA YONA DANCE", "version": 19}, - "11451": {"name": "Transcend Lights", "version": 19}, + "11375": {"name": "ミルキースター・シューティングスター", "version": 18}, + "11376": {"name": "isophote", "version": 18}, + "11377": {"name": "パラマウント☆ショータイム!!", "version": 18}, + "11378": {"name": "Strive against fate", "version": 18}, + "11379": {"name": "sølips", "version": 18}, + "11380": {"name": "パーフェクション", "version": 18}, + "11381": {"name": "デーモンベット", "version": 18}, + "11382": {"name": "HECATONCHEIR", "version": 18}, + "11383": {"name": "Irresistible", "version": 18}, + "11384": {"name": "HAGAKIRI", "version": 18}, + "11385": {"name": "N3V3R G3T OV3R", "version": 18}, + "11386": {"name": "Swift Swing", "version": 18}, + "11387": {"name": "星空パーティーチューン", "version": 18}, + "11388": {"name": "チューリングの跡", "version": 18}, + "11389": {"name": "Sage", "version": 18}, + "11390": {"name": "OTOGEMA", "version": 17}, + "11391": {"name": "WiPE OUT MEMORIES", "version": 18}, + "11392": {"name": "Metamorphosism", "version": 18}, + "11393": {"name": "白花の天使", "version": 18}, + "11394": {"name": "World's end loneliness", "version": 18}, + "11395": {"name": "Jouez Avec Moi?", "version": 18}, + "11396": {"name": "テリトリーバトル", "version": 18}, + "11398": {"name": "Good bye, Merry-Go-Round.", "version": 18}, + "11399": {"name": "ツクヨミステップ", "version": 18}, + "11400": {"name": "folern", "version": 18}, + "11401": {"name": "コスモポップファンクラブ", "version": 17}, + "11402": {"name": "撩乱乙女†無双劇", "version": 18}, + "11404": {"name": "See The Light", "version": 18}, + "11405": {"name": "エータ・ベータ・イータ", "version": 18}, + "11406": {"name": "愛のシュプリーム!", "version": 18}, + "11407": {"name": "くらべられっ子", "version": 18}, + "11408": {"name": "あの世行きのバスに乗ってさらば。", "version": 18}, + "11409": {"name": "うまぴょい伝説", "version": 18}, + "11410": {"name": "ヴァンパイア", "version": 18}, + "11411": {"name": "エンヴィーベイビー", "version": 18}, + "11412": {"name": "初音天地開闢神話", "version": 18}, + "11413": {"name": "Armageddon", "version": 18}, + "11415": {"name": "Dreadnought", "version": 18}, + "11418": {"name": "enchanted love", "version": 18}, + "11419": {"name": "Caterpillar Song", "version": 18}, + "11420": {"name": "Photon Melodies", "version": 18}, + "11421": {"name": "吾輩よ猫であれ", "version": 18}, + "11422": {"name": " ", "version": 18}, + "11423": {"name": "BLUE ZONE", "version": 18}, + "11424": {"name": "Estahv", "version": 18}, + "11425": {"name": "First Dance", "version": 18}, + "11426": {"name": "Mjölnir", "version": 18}, + "11427": {"name": "Define", "version": 18}, + "11428": {"name": "BANG!", "version": 18}, + "11429": {"name": "Love's Theme of BADASS ~バッド・アス 愛のテーマ~", "version": 18}, + "11430": {"name": "オントロジー", "version": 18}, + "11431": {"name": "剣を抜け!GCCX MAX", "version": 18}, + "11432": {"name": "Princess♂", "version": 18}, + "11433": {"name": "ヒトガタ", "version": 18}, + "11434": {"name": "Spring of Dreams", "version": 18}, + "11435": {"name": "大輪の魂 (feat. AO, 司芭扶)", "version": 18}, + "11436": {"name": "紅に染まる恋の花", "version": 18}, + "11437": {"name": "三妖精SAY YA!!!", "version": 18}, + "11438": {"name": "Reach For The Stars (Re-Colors)", "version": 18}, + "11439": {"name": "ジャンキーナイトタウンオーケストラ", "version": 18}, + "11441": {"name": "終焉逃避行", "version": 18}, + "11443": {"name": "8-EM", "version": 17}, + "11444": {"name": "若い力", "version": 18}, + "11445": {"name": "遺伝子レベル∞スパイラル", "version": 18}, + "11446": {"name": "otorii INNOVATED -[i]3-", "version": 18}, + "11447": {"name": "エゴロック", "version": 18}, + "11448": {"name": "ただ選択があった", "version": 18}, + "11449": {"name": "パズルリボン", "version": 18}, + "11450": {"name": "YONA YONA DANCE", "version": 18}, + "11451": {"name": "Transcend Lights", "version": 18}, "11452": {"name": "ホシシズク", "version": 19}, "11453": {"name": "Rainbow Rush Story", "version": 19}, "11454": {"name": "Tricolor⁂circuS", "version": 19}, @@ -962,6 +1209,7 @@ "11477": {"name": "Ghost Dance", "version": 19}, "11478": {"name": "電光石火", "version": 19}, "11479": {"name": "Hainuwele", "version": 19}, + "11480": {"name": "アノーイング!さんさんウィーク!", "version": 19}, "11481": {"name": "アニマル", "version": 19}, "11482": {"name": "ジレンマ", "version": 19}, "11483": {"name": "踊", "version": 19}, @@ -973,12 +1221,16 @@ "11489": {"name": "田中", "version": 19}, "11490": {"name": "Random", "version": 19}, "11491": {"name": "Luminaria", "version": 19}, + "11492": {"name": "群青讃歌", "version": 20}, + "11493": {"name": "セカイ", "version": 20}, + "11494": {"name": "ワーワーワールド", "version": 20}, "11495": {"name": "銀のめぐり", "version": 19}, "11496": {"name": "Destiny Runner", "version": 19}, "11497": {"name": "アマカミサマ", "version": 19}, "11498": {"name": "モンダイナイトリッパー!", "version": 19}, "11499": {"name": "マーシャル・マキシマイザー", "version": 19}, "11500": {"name": "秋の未確認生物", "version": 19}, + "11501": {"name": "Dive into the ZONe", "version": 19}, "11502": {"name": "エナドリおいしいソング", "version": 19}, "11503": {"name": "Baddest", "version": 19}, "11504": {"name": "ばかみたい【Taxi Driver Edition】", "version": 19}, @@ -1001,113 +1253,345 @@ "11523": {"name": "ViRTUS", "version": 19}, "11524": {"name": "Alice's Suitcase", "version": 19}, "11525": {"name": "ピュグマリオンの咒文", "version": 19}, - "11526": {"name": "トノサマビーム", "version": 21}, - "11527": {"name": "enchanted wanderer", "version": 21}, - "11528": {"name": "Comet Panto Men!", "version": 21}, - "11529": {"name": "ツムギボシ", "version": 21}, - "11530": {"name": "VeRForTe αRtE:VEiN", "version": 21}, - "11532": {"name": "ヱデン", "version": 21}, - "11533": {"name": "にゃーにゃー冒険譚", "version": 21}, - "11538": {"name": "アンバークロニクル", "version": 21}, - "11539": {"name": "リフヴェイン", "version": 21}, - "11540": {"name": "Kairos", "version": 21}, - "11541": {"name": "宵の鳥", "version": 21}, - "11542": {"name": "ここからはじまるプロローグ。 (Kanon Remix)", "version": 21}, - "11543": {"name": "モ°ルモ°ル (MZK Skippin' Remix)", "version": 21}, - "11544": {"name": "VERTeX (rintaro soma deconstructed remix)", "version": 21}, - "11545": {"name": "隠密あんみつDX", "version": 21}, - "11546": {"name": "地球", "version": 21}, - "11547": {"name": "Churros Parlor", "version": 21}, - "11548": {"name": "超熊猫的周遊記(ワンダーパンダートラベラー)", "version": 21}, - "11549": {"name": "Trrricksters!!", "version": 21}, - "11550": {"name": "FLUFFY FLASH", "version": 21}, - "11551": {"name": "STARRED HEART", "version": 21}, - "11552": {"name": "Y.Y.Y.計画!!!!", "version": 21}, - "11553": {"name": "Last Kingdom", "version": 21}, - "11554": {"name": "LAMIA", "version": 21}, - "11555": {"name": "ヒバリ", "version": 21}, - "11556": {"name": "Hello, Hologram", "version": 21}, - "11557": {"name": "不機嫌なスリーカード", "version": 21}, - "11558": {"name": "神っぽいな", "version": 21}, - "11559": {"name": "魔法少女とチョコレゐト", "version": 21}, - "11560": {"name": "阿修羅ちゃん", "version": 21}, - "11561": {"name": "おとせサンダー", "version": 21}, - "11562": {"name": "ロウワー", "version": 21}, - "11563": {"name": "キャットラビング", "version": 21}, - "11564": {"name": "リスペク風神", "version": 21}, + "11526": {"name": "トノサマビーム", "version": 20}, + "11527": {"name": "enchanted wanderer", "version": 20}, + "11528": {"name": "Comet Panto Men!", "version": 20}, + "11529": {"name": "ツムギボシ", "version": 20}, + "11530": {"name": "VeRForTe αRtE:VEiN", "version": 20}, + "11532": {"name": "ヱデン", "version": 20}, + "11533": {"name": "にゃーにゃー冒険譚", "version": 20}, + "11534": {"name": "The Great Banquet", "version": 21}, + "11535": {"name": "Redemption", "version": 21}, + "11536": {"name": "Ether Second", "version": 21}, + "11537": {"name": "Straight into the lights", "version": 21}, + "11538": {"name": "アンバークロニクル", "version": 20}, + "11539": {"name": "リフヴェイン", "version": 20}, + "11540": {"name": "Kairos", "version": 20}, + "11541": {"name": "宵の鳥", "version": 20}, + "11542": {"name": "ここからはじまるプロローグ。 (Kanon Remix)", "version": 20}, + "11543": {"name": "モ°ルモ°ル (MZK Skippin' Remix)", "version": 20}, + "11544": {"name": "VERTeX (rintaro soma deconstructed remix)", "version": 20}, + "11545": {"name": "隠密あんみつDX", "version": 20}, + "11546": {"name": "地球", "version": 20}, + "11547": {"name": "Churros Parlor", "version": 20}, + "11548": {"name": "超熊猫的周遊記(ワンダーパンダートラベラー)", "version": 20}, + "11549": {"name": "Trrricksters!!", "version": 19}, + "11550": {"name": "FLUFFY FLASH", "version": 20}, + "11551": {"name": "STARRED HEART", "version": 20}, + "11552": {"name": "Y.Y.Y.計画!!!!", "version": 20}, + "11553": {"name": "Last Kingdom", "version": 20}, + "11554": {"name": "LAMIA", "version": 20}, + "11555": {"name": "ヒバリ", "version": 20}, + "11556": {"name": "Hello, Hologram", "version": 20}, + "11557": {"name": "不機嫌なスリーカード", "version": 20}, + "11558": {"name": "神っぽいな", "version": 20}, + "11559": {"name": "魔法少女とチョコレゐト", "version": 20}, + "11560": {"name": "阿修羅ちゃん", "version": 20}, + "11561": {"name": "おとせサンダー", "version": 20}, + "11562": {"name": "ロウワー", "version": 20}, + "11563": {"name": "キャットラビング", "version": 20}, + "11564": {"name": "リスペク風神", "version": 20}, "11565": {"name": "Let you DIVE!", "version": 19}, "11566": {"name": "Knight Rider", "version": 19}, + "11567": {"name": "I’m Here (feat. Merry Kirk-Holmes)", "version": 21}, "11568": {"name": "INTERNET OVERDOSE", "version": 19}, - "11569": {"name": "魂のルフラン", "version": 21}, - "11570": {"name": "Shooting Shower~DANCE TIME(シンディ)~", "version": 21}, - "11571": {"name": "Lights of Muse", "version": 19}, - "11572": {"name": "tape/stop/night", "version": 19}, - "11573": {"name": "Final Step!", "version": 19}, - "11574": {"name": "The 90's Decision", "version": 19}, - "11575": {"name": "僕の和風本当上手", "version": 19}, - "11576": {"name": "Cthugha", "version": 19}, - "11577": {"name": "はんぶんこ", "version": 21}, + "11569": {"name": "魂のルフラン", "version": 20}, + "11570": {"name": "Shooting Shower~DANCE TIME(シンディ)~", "version": 20}, + "11571": {"name": "Lights of Muse", "version": 20}, + "11572": {"name": "tape/stop/night", "version": 20}, + "11573": {"name": "Final Step!", "version": 20}, + "11574": {"name": "The 90's Decision", "version": 20}, + "11575": {"name": "僕の和風本当上手", "version": 20}, + "11576": {"name": "Cthugha", "version": 20}, + "11577": {"name": "はんぶんこ", "version": 20}, "11578": {"name": "PUPA", "version": 21}, "11580": {"name": "解けないように", "version": 21}, - "11583": {"name": "インターネットサバイバー", "version": 21}, - "11584": {"name": "コンティニュー! feat. 藍月なくる", "version": 21}, - "11585": {"name": "Sunday Night feat Kanata.N", "version": 21}, - "11586": {"name": "PERSONA feat. PANXI", "version": 21}, - "11587": {"name": "Halfway(>∀<)", "version": 21}, - "11588": {"name": "Complex Mind", "version": 21}, - "11589": {"name": "DROPS feat. Such", "version": 21}, - "11590": {"name": "あつすぎの歌", "version": 21}, - "11591": {"name": "ULTRA SYNERGY MATRIX", "version": 21}, - "11592": {"name": "花となれ", "version": 21}, - "11593": {"name": "私のドッペルゲンガー", "version": 21}, - "11594": {"name": "BULK UP (GAME EXCLUSIVE EDIT)", "version": 21}, - "11596": {"name": "Vallista", "version": 21}, - "11598": {"name": "テオ", "version": 21}, - "11599": {"name": "まにまに", "version": 21}, - "11600": {"name": "感情ディシーブ", "version": 21}, - "11601": {"name": "ド屑", "version": 21}, - "11602": {"name": "絶対敵対メチャキライヤー", "version": 21}, - "11603": {"name": "つるぺったん", "version": 21}, - "11604": {"name": "『ウソテイ』 ~一回戦せりなvsしろなvsなずな~", "version": 21}, - "11605": {"name": "Bad Apple!! feat.nomico ~五十嵐 撫子 Ver.~", "version": 21}, - "11606": {"name": "Snow Colored Score", "version": 21}, - "11607": {"name": "MAGENTA POTION", "version": 21}, + "11583": {"name": "インターネットサバイバー", "version": 20}, + "11584": {"name": "コンティニュー! feat. 藍月なくる", "version": 20}, + "11585": {"name": "Sunday Night feat Kanata.N", "version": 20}, + "11586": {"name": "PERSONA feat. PANXI", "version": 20}, + "11587": {"name": "Halfway(>∀<)", "version": 20}, + "11588": {"name": "Complex Mind", "version": 20}, + "11589": {"name": "DROPS feat. Such", "version": 20}, + "11590": {"name": "あつすぎの歌", "version": 20}, + "11591": {"name": "ULTRA SYNERGY MATRIX", "version": 20}, + "11592": {"name": "花となれ", "version": 20}, + "11593": {"name": "私のドッペルゲンガー", "version": 20}, + "11594": {"name": "BULK UP (GAME EXCLUSIVE EDIT)", "version": 20}, + "11596": {"name": "Vallista", "version": 20}, + "11597": {"name": "ノンブレス・オブリージュ", "version": 21}, + "11598": {"name": "テオ", "version": 20}, + "11599": {"name": "まにまに", "version": 20}, + "11600": {"name": "感情ディシーブ", "version": 20}, + "11601": {"name": "ド屑", "version": 20}, + "11602": {"name": "絶対敵対メチャキライヤー", "version": 20}, + "11603": {"name": "つるぺったん", "version": 20}, + "11604": {"name": "『ウソテイ』 ~一回戦せりなvsしろなvsなずな~", "version": 20}, + "11605": {"name": "Bad Apple!! feat.nomico ~五十嵐 撫子 Ver.~", "version": 20}, + "11606": {"name": "Snow Colored Score", "version": 20}, + "11607": {"name": "MAGENTA POTION", "version": 20}, "11608": {"name": "NOIZY BOUNCE", "version": 21}, "11609": {"name": "サンバディ!", "version": 21}, "11610": {"name": "Horoscope Express", "version": 21}, "11611": {"name": "Party☆People☆Princess", "version": 21}, "11612": {"name": "Latent Kingdom", "version": 21}, + "11613": {"name": "Mystic Parade", "version": 21}, + "11614": {"name": "Cry Cry Cry", "version": 21}, + "11615": {"name": "ぽわわん劇場", "version": 21}, + "11616": {"name": "my flow", "version": 21}, + "11617": {"name": "POWER OF UNITY", "version": 21}, + "11618": {"name": "Energizing Flame", "version": 21}, + "11619": {"name": "KHYMΞXΛ", "version": 20}, + "11620": {"name": "フェイクフェイス・フェイルセイフ", "version": 21}, + "11621": {"name": "ふらふらふら、", "version": 21}, + "11622": {"name": "シックスプラン", "version": 21}, + "11623": {"name": "フタタビ", "version": 21}, + "11624": {"name": "SQUAD-Phvntom-", "version": 21}, "11625": {"name": "GEOMETRIC DANCE", "version": 21}, + "11626": {"name": "Ring", "version": 21}, + "11627": {"name": "インパアフェクシオン・ホワイトガアル", "version": 21}, + "11628": {"name": "WE'RE BACK!!", "version": 21}, "11629": {"name": "熱異常", "version": 21}, "11630": {"name": "1000年生きてる", "version": 21}, "11631": {"name": "IMAWANOKIWA", "version": 21}, "11632": {"name": "Play merrily NEO", "version": 21}, "11633": {"name": "OMAKENO Stroke", "version": 21}, + "11634": {"name": "青春コンプレックス", "version": 21}, + "11635": {"name": "アンダーキッズ", "version": 21}, "11636": {"name": "さくゆいたいそう", "version": 21}, "11637": {"name": "バグ", "version": 21}, + "11638": {"name": "星界ちゃんと可不ちゃんのおつかい合騒曲", "version": 21}, + "11639": {"name": "Burn My Soul", "version": 21}, + "11640": {"name": "with U", "version": 21}, + "11641": {"name": "Love Kills U", "version": 21}, + "11642": {"name": "DANGEROOOOUS JUNGLE", "version": 21}, + "11643": {"name": "天使光輪", "version": 21}, + "11644": {"name": "story", "version": 21}, + "11645": {"name": "トンデモワンダーズ", "version": 21}, + "11646": {"name": "神威", "version": 21}, + "11647": {"name": "ozma", "version": 21}, + "11648": {"name": "月面基地", "version": 21}, "11650": {"name": "ずんだもんの朝食 〜目覚ましずんラップ〜", "version": 21}, "11651": {"name": "あなたは世界の終わりにずんだを食べるのだ", "version": 21}, + "11652": {"name": "HUMANBORG", "version": 21}, + "11653": {"name": "ULTRA POWER", "version": 21}, + "11654": {"name": "ジェヘナ", "version": 21}, + "11655": {"name": "ツギハギスタッカート", "version": 21}, + "11656": {"name": "HANIPAGANDA", "version": 21}, + "11657": {"name": "Rush-Hour", "version": 21}, + "11658": {"name": "QUEEN", "version": 21}, + "11659": {"name": "天使の翼。", "version": 21}, + "11660": {"name": "さよならプリンセス", "version": 21}, + "11661": {"name": "Apollo", "version": 21}, + "11662": {"name": "raputa", "version": 21}, "11663": {"name": "系ぎて", "version": 21}, "11664": {"name": "アルカンシエル", "version": 21}, + "11665": {"name": "RAD DOGS", "version": 22}, + "11666": {"name": "アイディスマイル", "version": 22}, + "11667": {"name": "にっこり^^調査隊のテーマ", "version": 22}, + "11668": {"name": "PinqPiq (xovevox Remix)", "version": 21}, + "11669": {"name": "エスオーエス", "version": 22}, + "11670": {"name": "のじゃロリック", "version": 22}, + "11671": {"name": "Edelweiss", "version": 22}, + "11672": {"name": "QuiQ", "version": 22}, + "11673": {"name": "IF:U", "version": 22}, + "11674": {"name": "Cider P@rty", "version": 22}, + "11675": {"name": "勦滅", "version": 22}, + "11676": {"name": "Lunatic Vibes", "version": 22}, + "11677": {"name": "Bloody Trail", "version": 22}, + "11678": {"name": "RE:INCARNATED DRAGNER", "version": 22}, + "11679": {"name": "Beginning together!", "version": 22}, + "11680": {"name": "Shining Ray ~僕らの絆~", "version": 22}, + "11681": {"name": "DEVOTION", "version": 22}, + "11682": {"name": "Geranium", "version": 22}, + "11683": {"name": "The Cursed Doll", "version": 22}, + "11684": {"name": "RondeauX of RagnaroQ", "version": 22}, + "11685": {"name": "ℝ∈Χ LUNATiCA", "version": 22}, + "11686": {"name": "Λzure Vixen", "version": 21}, + "11687": {"name": "MarbleBlue.", "version": 22}, + "11688": {"name": "まっすぐ→→→ストリーム!", "version": 22}, + "11689": {"name": "最っ高のエンタメだ!!", "version": 22}, + "11690": {"name": "Baqeela", "version": 22}, + "11691": {"name": "Ai C", "version": 22}, + "11692": {"name": "INTERNET YAMERO", "version": 22}, + "11693": {"name": "過去を喰らう", "version": 22}, + "11694": {"name": "強風オールバック", "version": 22}, + "11695": {"name": "寝起きヤシの木", "version": 22}, + "11696": {"name": "アイドル", "version": 22}, + "11697": {"name": "ラビットホール", "version": 22}, + "11698": {"name": "酔いどれ知らず", "version": 22}, + "11699": {"name": "新人類", "version": 22}, + "11700": {"name": "Freak Out Hr.", "version": 22}, + "11701": {"name": "さよならヒストリー", "version": 22}, + "11702": {"name": "New York Back Raise", "version": 22}, + "11704": {"name": "DUAL ROZES", "version": 22}, + "11705": {"name": "VOLT", "version": 22}, + "11706": {"name": "tiny tales continue", "version": 22}, + "11707": {"name": "ouroboros -twin stroke of the end-", "version": 22}, + "11708": {"name": "カーニバルハッピー", "version": 22}, + "11709": {"name": "つづみぐさ", "version": 22}, + "11710": {"name": "サイバーサンダーサイダー", "version": 22}, + "11711": {"name": "おくすり飲んで寝よう", "version": 22}, + "11712": {"name": "バラバラ〜仮初レインボーローズ〜", "version": 22}, + "11713": {"name": "QUATTUORUX", "version": 22}, + "11714": {"name": "匿名M", "version": 22}, + "11715": {"name": "ライアーダンサー", "version": 22}, + "11716": {"name": "バカ通信", "version": 22}, + "11717": {"name": "LOSTPHANTASIA", "version": 22}, + "11718": {"name": "Bad Apple!! feat.nomico (Tetsuya Komuro Remix)", "version": 22}, + "11720": {"name": "Re:Unknown X", "version": 22}, + "11721": {"name": "INFiNiTE ENERZY -Overdoze-", "version": 22}, + "11722": {"name": "Make Up Your World feat. キョンシーのCiちゃん & らっぷびと", "version": 22}, + "11723": {"name": "BOOM! BOOM!! BOOM!!!", "version": 22}, + "11724": {"name": "Everybody Say HARDCORE TANO*C", "version": 22}, + "11725": {"name": "ミラクルポップ☆アドベンチャー!!!!!", "version": 22}, + "11726": {"name": "Trust", "version": 22}, + "11727": {"name": "ラヴィ", "version": 22}, + "11728": {"name": "スティールユー", "version": 22}, + "11729": {"name": "オシオキGIMMICK!!", "version": 22}, + "11730": {"name": "偉大なる悪魔は実は大天使パトラちゃん様なのだ!", "version": 22}, + "11731": {"name": "シュガーホリック", "version": 22}, + "11733": {"name": "MUSIC PЯAYER", "version": 22}, + "11734": {"name": "壱雫空", "version": 22}, + "11735": {"name": "ザムザ", "version": 22}, + "11736": {"name": "プリズム△▽リズム", "version": 23}, + "11737": {"name": "パラドクスイヴ", "version": 23}, + "11738": {"name": "YKWTD", "version": 23}, + "11739": {"name": "184億回のマルチトニック", "version": 23}, + "11740": {"name": "果ての空、僕らが見た光。", "version": 23}, + "11741": {"name": "Cryptarithm", "version": 23}, + "11746": {"name": "Divide et impera!", "version": 22}, + "11754": {"name": "Elemental Ethnic", "version": 23}, + "11755": {"name": "美夜月鏡", "version": 23}, + "11760": {"name": "勇者", "version": 23}, + "11761": {"name": "病み垢ステロイド", "version": 23}, + "11763": {"name": "ダーリンダンス", "version": 23}, + "11764": {"name": "唱", "version": 23}, + "11765": {"name": "愛包ダンスホール", "version": 23}, + "11766": {"name": "マツケンサンバⅡ", "version": 23}, + "11767": {"name": "デビルじゃないもん", "version": 23}, + "11769": {"name": "ずんだパーリナイ", "version": 23}, + "11770": {"name": "Ultimate taste", "version": 23}, + "11771": {"name": "Chronomia", "version": 23}, + "11772": {"name": "人マニア", "version": 23}, + "11774": {"name": "メイトなやつら(FEAT. 天開司, 佐藤ホームズ, あっくん大魔王 & 歌衣メイカ)", "version": 23}, + "11776": {"name": "ゆけむり魂温泉 II", "version": 23}, + "11777": {"name": "人間が大好きなこわれた妖怪の唄", "version": 23}, + "11784": {"name": "イガク", "version": 23}, + "11786": {"name": "Empire of Winter", "version": 23}, + "11787": {"name": "迷える音色は恋の唄", "version": 23}, + "11788": {"name": "Löschen", "version": 23}, + "11789": {"name": "Abstruse Dilemma", "version": 23}, + "11805": {"name": "リアライズ", "version": 23}, + "100017": {"name": "[星]Future", "version": 21}, "100018": {"name": "[協]Love You", "version": 21}, "100022": {"name": "[蔵]In Chaos", "version": 21}, + "100042": {"name": "[宴]jelly", "version": 21}, + "100056": {"name": "[耐]ウッーウッーウマウマ(゚∀゚)", "version": 21}, + "100070": {"name": "[即]ジングルベル", "version": 21}, + "100082": {"name": "[光]Reach For The Stars", "version": 21}, + "100101": {"name": "[逆]おちゃめ機能", "version": 21}, + "100118": {"name": "[逆]犬日和。", "version": 21}, + "100121": {"name": "[撫]スイートマジック", "version": 21}, + "100132": {"name": "[蛸]Turn around", "version": 21}, + "100138": {"name": "[蔵]Lionheart", "version": 21}, + "100145": {"name": "[宴]Starlight Disco", "version": 21}, + "100191": {"name": "[蔵]脳漿炸裂ガール", "version": 21}, "100199": {"name": "[蛸]チルノのパーフェクトさんすう教室", "version": 21}, + "100201": {"name": "[宴]魔理沙は大変なものを盗んでいきました", "version": 21}, "100206": {"name": "[星]しゅわスパ大作戦☆", "version": 21}, + "100207": {"name": "[蛸]時空を超えて久しぶり!", "version": 21}, "100220": {"name": "[宴]セガサターン起動音[H.][Remix]", "version": 21}, - "100227": {"name": "[宴]Garakuta Doll Play", "version": 21}, + "100224": {"name": "[傾]ウサテイ", "version": 21}, + "100227": {"name": "[は]Garakuta Doll Play", "version": 21}, "100230": {"name": "[宴]CYCLES", "version": 21}, "100259": {"name": "[協]ぽっぴっぽー", "version": 21}, + "100282": {"name": "[撫]からくりピエロ", "version": 21}, + "100305": {"name": "[星]POP STAR", "version": 21}, + "100308": {"name": "[傾]Back 2 Back", "version": 21}, + "100319": {"name": "[藏]幻想のサテライト", "version": 21}, + "100320": {"name": "[即]最速最高シャッターガール", "version": 21}, + "100322": {"name": "[蔵]林檎華憐歌", "version": 21}, + "100326": {"name": "[宴]コトバ・カラフル", "version": 21}, "100327": {"name": "[狂]タカハせ!名人マン", "version": 21}, + "100339": {"name": "[宴]DRAGONLADY", "version": 21}, "100363": {"name": "[宴]Oshama Scramble!", "version": 21}, + "100364": {"name": "[覚]D✪N’T ST✪P R✪CKIN’", "version": 21}, + "100380": {"name": "[蔵]どうしてこうなった", "version": 21}, + "100385": {"name": "[蔵]Ignis Danse", "version": 21}, + "100413": {"name": "[覚]キャプテン・ムラサのケツアンカー", "version": 21}, + "100422": {"name": "[覚]LANCE", "version": 21}, + "100429": {"name": "[宴]Wonderland Wars オープニング", "version": 21}, + "100446": {"name": "[宴]GEMINI -M-", "version": 21}, "100456": {"name": "[蔵]Glorious Crown", "version": 21}, + "100496": {"name": "[藏]AMAZING MIGHTYYYY!!!!", "version": 21}, "100508": {"name": "[協]恋愛裁判", "version": 21}, + "100513": {"name": "[耐]だんだん早くなる", "version": 21}, + "100516": {"name": "[狂]ココロ", "version": 21}, "100517": {"name": "[覚]東京リアルワールド", "version": 21}, "100524": {"name": "[協]Hand in Hand", "version": 21}, - "100548": {"name": "[宴]DETARAME ROCK&ROLL THEORY", "version": 21}, + "100548": {"name": "[疑]DETARAME ROCK&ROLL THEORY", "version": 21}, + "100571": {"name": "[即]Our Wrenally", "version": 21}, + "100573": {"name": "[宴]四月の雨", "version": 21}, + "100598": {"name": "[蛸]すーぱーぬこになりたい", "version": 21}, + "100603": {"name": "[星]その群青が愛しかったようだった", "version": 21}, + "100614": {"name": "[宴]夢花火", "version": 21}, + "100617": {"name": "[協]オトヒメモリー☆ウタゲーション", "version": 21}, + "100689": {"name": "[蔵]Credits", "version": 21}, "100700": {"name": "[協]疾走あんさんぶる", "version": 21}, + "100712": {"name": "[蛸]ミラクル・ショッピング", "version": 21}, + "100749": {"name": "[蔵]Ievan Polkka", "version": 21}, + "100772": {"name": "[狂]FREEDOM DiVE (tpz Overcute Remix", "version": 90}, + "100775": {"name": "[宴]ジンギスカン", "version": 21}, + "100845": {"name": "[宴]怒槌~光吉猛修一部謎~", "version": 21}, + "100846": {"name": "[宴]Oshama Scramble! (Cranky Remix)", "version": 21}, + "100851": {"name": "[宴]犬日和。(はっぴー歌唱Ver)", "version": 21}, + "100854": {"name": "[宴]全世界共通リズム感テスト", "version": 21}, + "100998": {"name": "[宴]Oshama Scramble! (Cranky Remix)", "version": 22}, + "100999": {"name": "[宴]全世界共通リズム感テスト", "version": 21}, + "101222": {"name": "[光]BREaK! BREaK! BREaK!", "version": 21}, + "101516": {"name": "[藏]Aegleseeker", "version": 21}, + "110082": {"name": "[藏]Reach For The Stars", "version": 21}, + "110114": {"name": "[耐]Space Harrier Main Theme [Reborn]", "version": 21}, + "110227": {"name": "[J]Garakuta Doll Play", "version": 22}, + "110281": {"name": "[回]ダブルラリアット", "version": 23}, + "110417": {"name": "[習]ウミユリ海底譚", "version": 23}, + "110532": {"name": "[奏]洗脳", "version": 23}, + "110553": {"name": "[奏]チュルリラ・チュルリラ・ダッダッダ!", "version": 22}, "110579": {"name": "[協]ポップミュージックは僕のもの", "version": 21}, + "110606": {"name": "[右]The wheel to the right", "version": 21}, + "110631": {"name": "[逆]KING is BACK!!", "version": 21}, + "110647": {"name": "[協]エイリアンエイリアン", "version": 22}, + "110793": {"name": "[疑]ロキ", "version": 22}, + "111069": {"name": "[協]太陽系デスコ", "version": 23}, "111222": {"name": "[光]BREaK! BREaK! BREaK!", "version": 21}, + "111325": {"name": "[奏]テレキャスタービーボーイ", "version": 22}, "111355": {"name": "[協]ラグトレイン", "version": 21}, - "111359": {"name": "[協]アカツキアライヴァル", "version": 21}, - "111516": {"name": "[蔵]Aegleseeker", "version": 21} + "111359": {"name": "[奏]アカツキアライヴァル", "version": 21}, + "111365": {"name": "[奏]アンビバレンス", "version": 23}, + "111433": {"name": "[奏]ヒトガタ", "version": 22}, + "111437": {"name": "[協]三妖精SAY YA!!!", "version": 22}, + "111488": {"name": "[覚]スカーレット警察のゲットーパトロール24時", "version": 22}, + "111513": {"name": "[回]回る空うさぎ", "version": 21}, + "111516": {"name": "[蔵]Aegleseeker", "version": 21}, + "111577": {"name": "[両]はんぶんこ", "version": 22}, + "111597": {"name": "[息]ノンブレス・オブリージュ", "version": 22}, + "111634": {"name": "[協]青春コンプレックス", "version": 21}, + "111636": {"name": "[奏]さくゆいたいそう", "version": 22}, + "120227": {"name": "[r]Garakuta Doll Play", "version": 22}, + "121634": {"name": "[協]青春コンプレックス", "version": 21}, + "130227": {"name": "[玉]Garakuta Doll Play", "version": 22}, + "140227": {"name": "[某]Garakuta Doll Play", "version": 22}, + "200082": {"name": "[蔵]Reach For The Stars", "version": 21}, + "200227": {"name": "[宴]Garakuta Doll Play No.2", "version": 21}, + "200429": {"name": "[宴]Wonderland Wars オープニング", "version": 21}, + "200854": {"name": "[宴]全世界共通リズム感テスト", "version": 21}, + "200999": {"name": "[宴]全世界共通リズム感テスト", "version": 21}, + "300227": {"name": "[宴]Garakuta Doll Play No.3", "version": 21}, + "300429": {"name": "[宴]Wonderland Wars オープニング", "version": 21}, + "400227": {"name": "[宴]Garakuta Doll Play No.4", "version": 21}, + "400429": {"name": "[宴]Wonderland Wars オープニング", "version": 21}, + "500227": {"name": "[宴]Garakuta Doll Play No.5", "version": 21}, + "500429": {"name": "[宴]Wonderland Wars オープニング", "version": 21}, + "600429": {"name": "[宴]Wonderland Wars オープニング", "version": 21} } \ No newline at end of file diff --git a/ForceLogout.py b/ForceLogout.py index 24c670b..4718409 100644 --- a/ForceLogout.py +++ b/ForceLogout.py @@ -1,4 +1,4 @@ -from Static_Settings import * +from Config import * from API_TitleServer import * from GetPreview import apiGetUserPreview from HelperLogInOut import apiLogout diff --git a/GenericCLI.py b/GenericCLI.py deleted file mode 100644 index e69de29..0000000 diff --git a/GetPreview.py b/GetPreview.py index f8cff1e..a8e93d1 100644 --- a/GetPreview.py +++ b/GetPreview.py @@ -2,6 +2,7 @@ import json from API_TitleServer import apiSDGB +from Config import * def apiGetUserPreview(userId) -> str: data = json.dumps({ @@ -12,5 +13,6 @@ def apiGetUserPreview(userId) -> str: # CLI 示例 if __name__ == "__main__": - userId = input("请输入用户 ID:") + #userId = input("请输入用户 ID:") + userId = testUid print(apiGetUserPreview(userId)) diff --git a/HelperFullPlay.py b/HelperFullPlay.py index d1252e5..85f1f0b 100644 --- a/HelperFullPlay.py +++ b/HelperFullPlay.py @@ -1,7 +1,7 @@ import json from loguru import logger -from Static_Settings import * +from Config import * from API_TitleServer import apiSDGB, calcSpecialNumber, WahlapServerBoomedError, Request500Error from HelperGetUserThing import implGetUser_ from HelperUploadUserPlayLog import apiUploadUserPlaylog @@ -39,10 +39,19 @@ def applyUserAllPatches(userAll, patches): if isinstance(value, dict) and key in userAll and isinstance(userAll[key], dict): # 如果patch的值是字典,并且userAll中对应的key也是字典,递归处理 applyUserAllPatches(userAll[key], value) + elif isinstance(value, list) and key in userAll and isinstance(userAll[key], list): + # 如果值是列表,进行详细的更新处理 + for i, patch_item in enumerate(value): + if i < len(userAll[key]) and isinstance(patch_item, dict) and isinstance(userAll[key][i], dict): + # 如果列表项是字典,更新字典中的字段 + applyUserAllPatches(userAll[key][i], patch_item) + elif i >= len(userAll[key]): + # 如果patch的列表比userAll的列表长,追加新的元素 + userAll[key].append(patch_item) else: # 否则直接更新或添加key userAll[key] = value - + def implFullPlayAction(userId: int, currentLoginTimestamp:int, currentLoginResult, musicData, userAllPatches, debugMode=False) -> str: ''' 一份完整的上机实现,可以打 patch 来实现各种功能 @@ -81,7 +90,8 @@ def implFullPlayAction(userId: int, currentLoginTimestamp:int, currentLoginResul # 调试模式下直接输出数据 if debugMode: - logger.debug("调试模式:当前 UserAll 数据:" + json.dumps(currentUserAll, indent=4)) + logger.debug("调试模式:构建出的 UserAll 数据:" + json.dumps(currentUserAll, indent=4)) + logger.info("Bye!") return # 建构 Json 数据 @@ -90,7 +100,7 @@ def implFullPlayAction(userId: int, currentLoginTimestamp:int, currentLoginResul try: currentUserAllResult = json.loads(apiSDGB(data, "UpsertUserAllApi", userId)) except Request500Error: - logger.warning("500 Error Triggered. Rebuilding data.") + logger.warning("上传 UserAll 出现 500. 重建数据.") retries += 1 continue except Exception: diff --git a/HelperGetUserMusicDetail.py b/HelperGetUserMusicDetail.py new file mode 100644 index 0000000..349d190 --- /dev/null +++ b/HelperGetUserMusicDetail.py @@ -0,0 +1,66 @@ +# 获取用户成绩的各种实现 +from API_TitleServer import * +from HelperLogInOut import apiLogin, apiLogout, generateTimestamp +from Config import * +import json +from HelperMusicDB import getMusicTitle +from loguru import logger +import sys + +# 日志设置 +#log_level = "DEBUG" +#log_format = "{time:YYYY-MM-DD HH:mm:ss.SSS zz} | {level: <8} | Line {line: >4} ({file}): {message}" +#logger.add(sys.stderr, level=log_level, format=log_format, colorize=True, backtrace=True, diagnose=True) +#logger.add("file.log", level=log_level, format=log_format, colorize=False, backtrace=True, diagnose=True) + +def getUserMusicDetail(userId:int, nextIndex:int=0, maxCount:int=50) -> dict: + '''获取用户的成绩的API''' + data = json.dumps({ + "userId": int(userId), + "nextIndex": nextIndex, + "maxCount": maxCount + }) + return json.loads(apiSDGB(data, "GetUserMusicApi", userId)) + +def getUserFullMusicDetail(userId: int) -> dict: + '''获取用户的全部成绩''' + userMusicDetailList_current = [] + nextIndex:int|None = None # 初始化 nextIndex + while nextIndex != 0 or nextIndex is None: #只要还有nextIndex就一直获取获取 + userMusicResponse = getUserMusicDetail(userId, nextIndex or 0) + nextIndex = userMusicResponse['nextIndex'] + logger.info(f"NextIndex: {nextIndex}") + for currentMusic in userMusicResponse['userMusicList']: + for currentMusicDetail in currentMusic['userMusicDetailList']: + if not currentMusicDetail['playCount'] > 0: + continue + userMusicDetailList_current.append(currentMusicDetail) + return userMusicDetailList_current + +def parseUserFullMusicDetail(userFullMusicDetailList: list) -> dict: + '''解析用户的全部成绩''' + musicDetailList = [] + for currentMusicDetail in userFullMusicDetailList: + musicDetailList.append({ + '歌名': getMusicTitle(currentMusicDetail['musicId']), + '难度': currentMusicDetail['level'], + '分数': currentMusicDetail['achievement'] / 10000, + 'DX分数': currentMusicDetail['deluxscoreMax'] + }) + return musicDetailList + +if __name__ == '__main__': + userId = testUid5 + currentLoginTimestamp = generateTimestamp() + loginResult = apiLogin(currentLoginTimestamp, userId) + + if loginResult['returnCode'] != 1: + logger.info("登录失败") + exit() + try: + userFullMusicDetailList = getUserFullMusicDetail(userId) + parsedUserFullMusicDetail = parseUserFullMusicDetail(userFullMusicDetailList) + logger.info(parsedUserFullMusicDetail) + finally: + #logger.error(f"Error: {e}") + logger.info(apiLogout(currentLoginTimestamp, userId)) diff --git a/HelperGetUserThing.py b/HelperGetUserThing.py index 9b6d793..e63e8dd 100644 --- a/HelperGetUserThing.py +++ b/HelperGetUserThing.py @@ -5,7 +5,7 @@ from API_TitleServer import apiSDGB def apiGetUserData(userId:int) -> str: '''已弃用,将逐步淘汰''' - logger.warning("apiGetUserData 已弃用,将逐步淘汰。") + logger.info("apiGetUserData 已弃用,将逐步淘汰。") # 构建 Payload data = json.dumps({ "userId": userId @@ -15,21 +15,21 @@ def apiGetUserData(userId:int) -> str: # 返回响应 return userdata_result -def apiGetUserThing(userId:int, thing:str) -> str: +def apiGetUserThing(userId:int, thing:str, noLog=False) -> str: '''获取用户数据的 API 请求器,返回 Json String''' # 构建 Payload data = json.dumps({ "userId": userId }) # 发送请求 - userthing_result = apiSDGB(data, "GetUser" + thing + "Api", userId) + userthing_result = apiSDGB(data, "GetUser" + thing + "Api", userId, noLog) # 返回响应 return userthing_result -def implGetUser_(thing:str, userId:int) -> dict: - '''获取用户数据的 API 实现,返回 Dict''' +def implGetUser_(thing:str, userId:int, noLog=False) -> dict: + '''获取用户某些数据的 API 实现,返回 Dict''' # 获取 Json String - userthing_result = apiGetUserThing(userId, thing) + userthing_result = apiGetUserThing(userId, thing, noLog) # 转换为 Dict userthing_dict = json.loads(userthing_result) # 返回 Dict diff --git a/HelperLogInOut.py b/HelperLogInOut.py index 885d354..386b534 100644 --- a/HelperLogInOut.py +++ b/HelperLogInOut.py @@ -5,7 +5,7 @@ import json import time from loguru import logger -from Static_Settings import * +from Config import * from API_TitleServer import apiSDGB def apiLogin(timestamp:int, userId:int) -> dict: diff --git a/HelperMusicDB.py b/HelperMusicDB.py new file mode 100644 index 0000000..b157e5b --- /dev/null +++ b/HelperMusicDB.py @@ -0,0 +1,14 @@ +from MusicDB import musicDB +from loguru import logger + + +def getMusicTitle(musicId: int) -> str: + '''从数据库获取音乐的标题''' + #logger.debug(f"查询歌名: {musicId}") + musicInfo = musicDB.get(musicId) + if not musicInfo: + logger.warning(f"数据库里未找到此歌曲: {musicId}") + return "R_ERR_MUSIC_ID_NOT_IN_DATABASE" + musicName = musicInfo.get("name") + #logger.debug(f"成功查询到歌名: {musicName}") + return musicName \ No newline at end of file diff --git a/HelperUnlockThing.py b/HelperUnlockThing.py index 08e13e0..ca21cd7 100644 --- a/HelperUnlockThing.py +++ b/HelperUnlockThing.py @@ -1,11 +1,11 @@ # 解锁东西的一个通用的助手,不可独立使用 from loguru import logger -from Static_Settings import * +from Config import * from HelperFullPlay import implFullPlayAction def implUnlockThing(newUserItemList, userId: int, currentLoginTimestamp:int, currentLoginResult) -> str: musicData= ({ - "musicId": 566, #天火明命 + "musicId": 11538, # Amber Chronicle "level": 0, "playCount": 1, "achievement": 0, @@ -14,7 +14,7 @@ def implUnlockThing(newUserItemList, userId: int, currentLoginTimestamp:int, cur "deluxscoreMax": 0, "scoreRank": 0, "extNum1": 0 -}) + }) userAllPatches = { "upsertUserAll": { "userMusicDetailList": [musicData], diff --git a/HelperUploadUserPlayLog.py b/HelperUploadUserPlayLog.py index ae1f229..ea4cc6b 100644 --- a/HelperUploadUserPlayLog.py +++ b/HelperUploadUserPlayLog.py @@ -8,7 +8,7 @@ from datetime import datetime from loguru import logger from API_TitleServer import apiSDGB -from Static_Settings import * +from Config import * def apiUploadUserPlaylog(userId:int, musicDataToBeUploaded, currentUserData2, loginId:int) -> str: '''返回 Json String。''' diff --git a/HelperUserAll.py b/HelperUserAll.py index 77d18c7..6fd55ac 100644 --- a/HelperUserAll.py +++ b/HelperUserAll.py @@ -2,7 +2,7 @@ import pytz from datetime import datetime -from Static_Settings import * +from Config import * from HelperGetUserThing import implGetUser_ def generateFullUserAll(userId, currentLoginResult, currentLoginTimestamp, currentUserData2, currentSpecialNumber): @@ -12,11 +12,11 @@ def generateFullUserAll(userId, currentLoginResult, currentLoginTimestamp, curre currentUserAll = generateUserAllData(userId, currentLoginResult, currentLoginTimestamp, currentUserData2, currentSpecialNumber) # 然后从服务器取得必要的数据 - currentUserExtend = implGetUser_("Extend", userId) - currentUserOption = implGetUser_("Option", userId) - currentUserRating = implGetUser_("Rating", userId) - currentUserActivity = implGetUser_("Activity", userId) - currentUserCharge = implGetUser_("Charge", userId) + currentUserExtend = implGetUser_("Extend", userId, True) + currentUserOption = implGetUser_("Option", userId, True) + currentUserRating = implGetUser_("Rating", userId, True) + currentUserActivity = implGetUser_("Activity", userId, True) + currentUserCharge = implGetUser_("Charge", userId, True) # 把这些数据都追加进去 currentUserAll['upsertUserAll']['userExtend'] = [currentUserExtend['userExtend']] diff --git a/MusicDB.py b/MusicDB.py index 7cdb3f9..cc3f11d 100644 --- a/MusicDB.py +++ b/MusicDB.py @@ -1,7 +1,3 @@ -# 感谢伟大的 Diving-Fish 让我被迫直面恐惧写这个逼玩意 - -import xml.dom.minidom as minidom -from pathlib import Path import rapidjson as json from typing import Dict, Union @@ -12,7 +8,7 @@ MusicDBType = Dict[int, Dict[str, Union[int, str]]] __all__ = ['musicDB'] # 读取并解析 JSON 文件 -with open('musicDB.json', 'r', encoding='utf-8') as f: +with open('./Data/musicDB.json', 'r', encoding='utf-8') as f: # 使用 json.load 直接从文件对象读取 JSON 数据 data = json.load(f) diff --git a/DecryptHDD.py b/Standalone/DecryptHDD.py similarity index 97% rename from DecryptHDD.py rename to Standalone/DecryptHDD.py index 32cf083..0482aa1 100644 --- a/DecryptHDD.py +++ b/Standalone/DecryptHDD.py @@ -1,6 +1,7 @@ # 解密从 HDD 抓包得到的数据 # 兼容 PRiSM 和 CN 2024 -# 仅用于分析 + +# 完全 Standalone,不依赖于其他文件 import base64 import zlib diff --git a/GenerateMusicDB.py b/Standalone/Script_GenerateMusicDB.py similarity index 87% rename from GenerateMusicDB.py rename to Standalone/Script_GenerateMusicDB.py index bdc9dd2..64be241 100644 --- a/GenerateMusicDB.py +++ b/Standalone/Script_GenerateMusicDB.py @@ -12,11 +12,11 @@ def makeMusicDBJson(): 免得国服每次更新还要重新生成太麻烦 ''' # 记得改 - A000_DIR = Path('/run/media/remik1r3n/软件/maimaiDX_SDGB/Sinmai_Data/StreamingAssets/A000') - OPTION_DIR = Path('/run/media/remik1r3n/软件/maimaiDX_SDGB/Sinmai_Data/StreamingAssets') + A000_DIR = Path('H:\PRiSM\Package\Sinmai_Data\StreamingAssets\A000') + OPTION_DIR = Path('H:\PRiSM\Package\Sinmai_Data\StreamingAssets') music_db: dict[str, dict[str, str | int]] = {} - DEST_PATH = Path('./musicDB.json') + DEST_PATH = Path('../Data/musicDB.json') music_folders = [f for f in (A000_DIR / 'music').iterdir() if f.is_dir()] for option_dir in OPTION_DIR.iterdir(): @@ -43,9 +43,10 @@ def makeMusicDBJson(): serialized += f' "{key}": {json.dumps(value, ensure_ascii=False)},\n' serialized = serialized[:-2] + '\n}' - with open(DEST_PATH, 'w') as f: + with open(DEST_PATH, 'w', encoding='utf-8') as f: f.write(serialized) + if __name__ == '__main__': makeMusicDBJson() print('Done.') \ No newline at end of file diff --git a/UI.py b/Standalone/UI.py similarity index 90% rename from UI.py rename to Standalone/UI.py index 708a54f..75e7e96 100644 --- a/UI.py +++ b/Standalone/UI.py @@ -6,6 +6,12 @@ from PyQt6.QtWidgets import ( ) from PyQt6.QtCore import Qt +# 将当前目录的父目录加入到 sys.path 中 +from pathlib import Path +current_dir = Path(__file__).resolve().parent +parent_dir = current_dir.parent +sys.path.append(str(parent_dir)) + from API_TitleServer import * def sendRequest(requestText:str, apiNameText:str, uid:int) -> str: @@ -14,8 +20,10 @@ def sendRequest(requestText:str, apiNameText:str, uid:int) -> str: data = json.dumps(data) except: return "给出的输入不是有效的 JSON" - - result = apiSDGB(data, apiNameText, uid) + try: + result = apiSDGB(data, apiNameText, uid) + except Exception as e: + return "请求失败:" + str(e) return result diff --git a/__init__.py b/__init__.py deleted file mode 100644 index e69de29..0000000