diff --git a/modules/maimai/__init__.py b/modules/maimai/__init__.py index 94806229..55533745 100644 --- a/modules/maimai/__init__.py +++ b/modules/maimai/__init__.py @@ -1,6 +1,6 @@ from core.builtins import command_prefix from modules.maimai.libraries.maimai_best_50 import generate -from modules.maimai.libraries.maimaidx_api_data import update_assets, get_alias, get_cover +from modules.maimai.libraries.maimaidx_api_data import get_alias, get_cover, search_by_alias, update_assets from modules.maimai.libraries.maimaidx_music import Music, TotalList from modules.maimai.libraries.maimaidx_project import get_level_process, get_plate_process, get_player_score, get_rank, \ get_score_list @@ -171,8 +171,8 @@ async def _(msg: Bot.MessageSession, id_or_alias: str, username: str = None): if id_or_alias[:2].lower() == "id": sid = id_or_alias[2:] else: - sid_list = (await total_list.get()).filter(full_search=id_or_alias) - sid_list += await get_alias(msg, id_or_alias, get_music=True) + sid_list = search_by_alias(msg, id_or_alias) + if len(sid_list) == 0: await msg.finish(msg.locale.t("maimai.message.music_not_found")) elif len(sid_list) > 1: @@ -353,8 +353,7 @@ async def _(msg: Bot.MessageSession, id_or_alias: str, diff: str = None): if id_or_alias[:2].lower() == "id": sid = id_or_alias[2:] else: - sid_list = (await total_list.get()).filter(full_search=id_or_alias) - sid_list += await get_alias(msg, id_or_alias, get_music=True) + sid_list = search_by_alias(msg, id_or_alias) if len(sid_list) == 0: await msg.finish(msg.locale.t("maimai.message.music_not_found")) elif len(sid_list) > 1: diff --git a/modules/maimai/libraries/maimaidx_api_data.py b/modules/maimai/libraries/maimaidx_api_data.py index f7dee438..ff979ba0 100644 --- a/modules/maimai/libraries/maimaidx_api_data.py +++ b/modules/maimai/libraries/maimaidx_api_data.py @@ -61,7 +61,7 @@ async def update_assets(): return True -async def get_alias(msg, input, get_music=False): +async def get_alias(msg, input): file_path = os.path.join(assets_path, "mai_alias.json") if not os.path.exists(file_path): @@ -70,14 +70,32 @@ async def get_alias(msg, input, get_music=False): data = json.load(file) result = [] - if get_music: - for alias, ids in data.items(): - if input in ids: - result.append(alias) - else: - input = input.replace("_", " ") - if input in data: - result = data[input] + input = input.replace("_", " ") + if input in data: + result = data[input] + + return result + + + async def search_by_alias(msg, input): + result = [] + s = (await total_list.get()).by_title(input) + if s: + result.append(s['title']) + + file_path = os.path.join(assets_path, "mai_alias.json") + + if not os.path.exists(file_path): + return result + + with open(file_path, 'r') as file: + data = json.load(file) + + for alias, ids in data.items(): + if input in ids: + if alias in result: + result.remove(alias) + result.append(alias) return result diff --git a/modules/maimai/libraries/maimaidx_music.py b/modules/maimai/libraries/maimaidx_music.py index 6374953e..26b37148 100644 --- a/modules/maimai/libraries/maimaidx_music.py +++ b/modules/maimai/libraries/maimaidx_music.py @@ -124,7 +124,6 @@ class MusicList(List[Music]): level: Optional[Union[str, List[str]]] = ..., ds: Optional[Union[float, List[float], Tuple[float, float]]] = ..., title_search: Optional[str] = ..., - full_search: Optional[str] = ..., genre: Optional[Union[str, List[str]]] = ..., bpm: Optional[Union[float, List[float], Tuple[float, float]]] = ..., type: Optional[Union[str, List[str]]] = ..., @@ -146,8 +145,6 @@ class MusicList(List[Music]): continue if not in_or_equal(music.bpm, bpm): continue - if not in_or_equal(music.title, full_search): - continue if title_search is not Ellipsis and title_search.lower() not in music.title.lower(): continue music.diff = diff2 diff --git a/modules/maimai/regex.py b/modules/maimai/regex.py index 90269bcf..f6813c9f 100644 --- a/modules/maimai/regex.py +++ b/modules/maimai/regex.py @@ -4,7 +4,7 @@ from core.builtins import Bot, Plain, Image as BImage from core.component import module from core.logger import Logger from core.utils.image import msgchain2image -from modules.maimai.libraries.maimaidx_api_data import get_alias, get_cover +from modules.maimai.libraries.maimaidx_api_data import get_alias, get_cover, search_by_alias from modules.maimai.libraries.maimaidx_music import Music, TotalList from modules.maimai.libraries.maimaidx_project import get_level_process, get_plate_process, get_player_score @@ -56,8 +56,7 @@ async def _(msg: Bot.MessageSession): if not music: await msg.finish(msg.locale.t("maimai.message.music_not_found")) else: - sid_list = (await total_list.get()).filter(full_search=name) - sid_list += await get_alias(msg, name, get_music=True) + sid_list = search_by_alias(msg, name) if len(sid_list) == 0: await msg.finish(msg.locale.t("maimai.message.music_not_found")) elif len(sid_list) > 1: @@ -88,8 +87,7 @@ async def _(msg: Bot.MessageSession): if name[:2].lower() == "id": sid = name[2:] else: - sid_list = (await total_list.get()).filter(full_search=name) - sid_list += await get_alias(msg, name, get_music=True) + sid_list = search_by_alias(msg, name) if len(sid_list) == 0: await msg.finish(msg.locale.t("maimai.message.music_not_found")) elif len(sid_list) > 1: