feat: 使用 opencc 将歌曲名转化为简体 (#192)

This commit is contained in:
Gao, Ruiyuan 2024-09-22 23:18:36 +08:00 committed by GitHub
parent a428f377d4
commit 3110c2221b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 3 deletions

View File

@ -16,6 +16,7 @@ dependencies = [
"aiofiles>=24.1.0",
"ga4mp>=2.0.4",
"apscheduler>=3.10.4",
"opencc-python-reimplemented==0.1.7",
]
requires-python = ">=3.10,<3.12"
readme = "README.md"

View File

@ -31,6 +31,10 @@ from mutagen.wave import WAVE
from requests.utils import cookiejar_from_dict
from xiaomusic.const import SUPPORT_MUSIC_TYPE
from opencc import OpenCC
cc = OpenCC('t2s') # convert from Traditional Chinese to Simplified Chinese
### HELP FUNCTION ###
@ -90,6 +94,10 @@ def fuzzyfinder(user_input, collection, extra_search_index=None):
extra_search_index=extra_search_index)
def traditional_to_simple(to_convert: str):
return cc.convert(to_convert)
# 关键词检测
def keyword_detection(user_input, str_list, n):
# 过滤包含关键字的字符串
@ -119,15 +127,17 @@ def real_search(prompt, candidates, cutoff, n):
def find_best_match(user_input, collection, cutoff=0.6, n=1, extra_search_index=None):
lower_collection = {item.lower(): item for item in collection}
user_input = user_input.lower()
lower_collection = {traditional_to_simple(item.lower()): item for item in collection}
user_input = traditional_to_simple(user_input.lower())
matches = real_search(user_input, lower_collection.keys(), cutoff, n)
cur_matched_collection = [lower_collection[match] for match in matches]
if len(matches) >= n or extra_search_index is None:
return cur_matched_collection[:n]
# 如果数量不满足,继续搜索
lower_extra_search_index = {k.lower():v for k, v in extra_search_index.items()}
lower_extra_search_index = {
traditional_to_simple(k.lower()): v for k, v in extra_search_index.items()
}
matches = real_search(user_input, lower_extra_search_index.keys(), cutoff, n)
cur_matched_collection += [lower_extra_search_index[match] for match in matches]
return cur_matched_collection[:n]