Add maimai title search
This commit is contained in:
parent
301f32c96d
commit
9e4393a7ef
4 changed files with 34 additions and 22 deletions
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
Reference in a new issue