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 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:

View file

@ -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

View file

@ -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

View file

@ -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: