Archived
1
0
Fork 0

Add maimai title search

This commit is contained in:
多羅狼 2023-10-01 02:07:01 +08:00 committed by GitHub
parent 301f32c96d
commit 9e4393a7ef
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 22 deletions

View file

@ -1,6 +1,6 @@
from core.builtins import command_prefix from core.builtins import command_prefix
from modules.maimai.libraries.maimai_best_50 import generate 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_music import Music, TotalList
from modules.maimai.libraries.maimaidx_project import get_level_process, get_plate_process, get_player_score, get_rank, \ from modules.maimai.libraries.maimaidx_project import get_level_process, get_plate_process, get_player_score, get_rank, \
get_score_list 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": if id_or_alias[:2].lower() == "id":
sid = id_or_alias[2:] sid = id_or_alias[2:]
else: else:
sid_list = (await total_list.get()).filter(full_search=id_or_alias) sid_list = search_by_alias(msg, id_or_alias)
sid_list += await get_alias(msg, id_or_alias, get_music=True)
if len(sid_list) == 0: if len(sid_list) == 0:
await msg.finish(msg.locale.t("maimai.message.music_not_found")) await msg.finish(msg.locale.t("maimai.message.music_not_found"))
elif len(sid_list) > 1: 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": if id_or_alias[:2].lower() == "id":
sid = id_or_alias[2:] sid = id_or_alias[2:]
else: else:
sid_list = (await total_list.get()).filter(full_search=id_or_alias) sid_list = search_by_alias(msg, id_or_alias)
sid_list += await get_alias(msg, id_or_alias, get_music=True)
if len(sid_list) == 0: if len(sid_list) == 0:
await msg.finish(msg.locale.t("maimai.message.music_not_found")) await msg.finish(msg.locale.t("maimai.message.music_not_found"))
elif len(sid_list) > 1: elif len(sid_list) > 1:

View file

@ -61,7 +61,7 @@ async def update_assets():
return True 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") file_path = os.path.join(assets_path, "mai_alias.json")
if not os.path.exists(file_path): if not os.path.exists(file_path):
@ -70,11 +70,6 @@ async def get_alias(msg, input, get_music=False):
data = json.load(file) data = json.load(file)
result = [] result = []
if get_music:
for alias, ids in data.items():
if input in ids:
result.append(alias)
else:
input = input.replace("_", " ") input = input.replace("_", " ")
if input in data: if input in data:
result = data[input] result = data[input]
@ -82,6 +77,29 @@ async def get_alias(msg, input, get_music=False):
return result 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
async def get_record(msg, payload): async def get_record(msg, payload):
url = f"https://www.diving-fish.com/api/maimaidxprober/query/player" url = f"https://www.diving-fish.com/api/maimaidxprober/query/player"
try: try:

View file

@ -124,7 +124,6 @@ class MusicList(List[Music]):
level: Optional[Union[str, List[str]]] = ..., level: Optional[Union[str, List[str]]] = ...,
ds: Optional[Union[float, List[float], Tuple[float, float]]] = ..., ds: Optional[Union[float, List[float], Tuple[float, float]]] = ...,
title_search: Optional[str] = ..., title_search: Optional[str] = ...,
full_search: Optional[str] = ...,
genre: Optional[Union[str, List[str]]] = ..., genre: Optional[Union[str, List[str]]] = ...,
bpm: Optional[Union[float, List[float], Tuple[float, float]]] = ..., bpm: Optional[Union[float, List[float], Tuple[float, float]]] = ...,
type: Optional[Union[str, List[str]]] = ..., type: Optional[Union[str, List[str]]] = ...,
@ -146,8 +145,6 @@ class MusicList(List[Music]):
continue continue
if not in_or_equal(music.bpm, bpm): if not in_or_equal(music.bpm, bpm):
continue 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(): if title_search is not Ellipsis and title_search.lower() not in music.title.lower():
continue continue
music.diff = diff2 music.diff = diff2

View file

@ -4,7 +4,7 @@ from core.builtins import Bot, Plain, Image as BImage
from core.component import module from core.component import module
from core.logger import Logger from core.logger import Logger
from core.utils.image import msgchain2image 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_music import Music, TotalList
from modules.maimai.libraries.maimaidx_project import get_level_process, get_plate_process, get_player_score 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: if not music:
await msg.finish(msg.locale.t("maimai.message.music_not_found")) await msg.finish(msg.locale.t("maimai.message.music_not_found"))
else: else:
sid_list = (await total_list.get()).filter(full_search=name) sid_list = search_by_alias(msg, name)
sid_list += await get_alias(msg, name, get_music=True)
if len(sid_list) == 0: if len(sid_list) == 0:
await msg.finish(msg.locale.t("maimai.message.music_not_found")) await msg.finish(msg.locale.t("maimai.message.music_not_found"))
elif len(sid_list) > 1: elif len(sid_list) > 1:
@ -88,8 +87,7 @@ async def _(msg: Bot.MessageSession):
if name[:2].lower() == "id": if name[:2].lower() == "id":
sid = name[2:] sid = name[2:]
else: else:
sid_list = (await total_list.get()).filter(full_search=name) sid_list = search_by_alias(msg, name)
sid_list += await get_alias(msg, name, get_music=True)
if len(sid_list) == 0: if len(sid_list) == 0:
await msg.finish(msg.locale.t("maimai.message.music_not_found")) await msg.finish(msg.locale.t("maimai.message.music_not_found"))
elif len(sid_list) > 1: elif len(sid_list) > 1: