Update without webrender
This commit is contained in:
parent
1c64bb96a5
commit
badae70332
2 changed files with 64 additions and 41 deletions
|
@ -12,56 +12,79 @@ ncmusic = module('ncmusic',
|
|||
async def search(msg: Bot.MessageSession, keyword: str):
|
||||
url = f"https://ncmusic.akari-bot.top/search?keywords={keyword}"
|
||||
result = await get_url(url, 200, fmt='json')
|
||||
legacy = True
|
||||
|
||||
if result['result']['songCount'] == 0:
|
||||
await msg.finish(msg.locale.t('ncmusic.message.search.not_found'))
|
||||
|
||||
songs = result['result']['songs'][:20]
|
||||
songs = result['result']['songs'][:10]
|
||||
send_msg = [Plain(msg.locale.t('ncmusic.message.search.result') + '\n')]
|
||||
|
||||
data = [[
|
||||
str(i),
|
||||
song['name'] + (f" ({' / '.join(song['transNames'])})" if 'transNames' in song else ''),
|
||||
f"{' / '.join(artist['name'] for artist in song['artists'])}",
|
||||
f"{song['album']['name']}" + (f" ({' / '.join(song['album']['transNames'])})" if 'transNames' in song['album'] else ''),
|
||||
f"{song['id']}"
|
||||
] for i, song in enumerate(songs, start=1)
|
||||
]
|
||||
if msg.Feature.image:
|
||||
|
||||
img = await image_table_render(ImageTable(data, [
|
||||
msg.locale.t('ncmusic.message.search.table.header.id'),
|
||||
msg.locale.t('ncmusic.message.search.table.header.name'),
|
||||
msg.locale.t('ncmusic.message.search.table.header.artists'),
|
||||
msg.locale.t('ncmusic.message.search.table.header.album'),
|
||||
'ID'
|
||||
]))
|
||||
|
||||
send_msg.append(Image(img))
|
||||
if len(result['result']['songs']) > 20:
|
||||
send_msg.append(Plain(msg.locale.t('ncmusic.message.search.collapse')))
|
||||
send_msg.append(Plain(msg.locale.t('ncmusic.message.search.prompt')))
|
||||
query = await msg.wait_next_message(send_msg)
|
||||
query = query.as_display(text_only=True)
|
||||
try:
|
||||
query = int(query)
|
||||
if query > 20:
|
||||
await msg.finish(msg.locale.t('ncmusic.message.search.invalid.out_of_range'))
|
||||
sid = result['result']['songs'][query - 1]['id']
|
||||
url = f"https://ncmusic.akari-bot.top/song/detail?ids={sid}"
|
||||
info = await get_url(url, 200, fmt='json')
|
||||
info = info['songs'][0]
|
||||
artist = ' / '.join([ar['name'] for ar in info['ar']])
|
||||
song_page = f"https://music.163.com/#/song?id={info['id']}"
|
||||
data = [[
|
||||
str(i),
|
||||
song['name'] + (f" ({' / '.join(song['transNames'])})" if 'transNames' in song else ''),
|
||||
f"{' / '.join(artist['name'] for artist in song['artists'])}",
|
||||
f"{song['album']['name']}" + (f" ({' / '.join(song['album']['transNames'])})" if 'transNames' in song['album'] else ''),
|
||||
f"{song['id']}"
|
||||
] for i, song in enumerate(songs, start=1)
|
||||
]
|
||||
|
||||
send_msg = msg.locale.t('ncmusic.message.info',
|
||||
name=info['name'], id=info['id'],
|
||||
album=info['al']['name'], album_id=info['al']['id'],
|
||||
artists=artist, detail=song_page)
|
||||
await msg.finish([Image(info['al']['picUrl']), Plain(send_msg)])
|
||||
except Exception:
|
||||
await msg.finish(msg.locale.t('ncmusic.message.search.invalid.non_digital'))
|
||||
tables = ImageTable(data, [
|
||||
msg.locale.t('ncmusic.message.search.table.header.id'),
|
||||
msg.locale.t('ncmusic.message.search.table.header.name'),
|
||||
msg.locale.t('ncmusic.message.search.table.header.artists'),
|
||||
msg.locale.t('ncmusic.message.search.table.header.album'),
|
||||
'ID'
|
||||
])
|
||||
|
||||
if tables:
|
||||
img = await image_table_render(tables)
|
||||
if img:
|
||||
legacy = False
|
||||
|
||||
send_msg.append(Image(img))
|
||||
if len(result['result']['songs']) > 10:
|
||||
send_msg.append(Plain(msg.locale.t('ncmusic.message.search.collapse')))
|
||||
send_msg.append(Plain(msg.locale.t('ncmusic.message.search.prompt')))
|
||||
query = await msg.wait_next_message(send_msg)
|
||||
query = query.as_display(text_only=True)
|
||||
try:
|
||||
query = int(query)
|
||||
if query > 10:
|
||||
await msg.finish(msg.locale.t('ncmusic.message.search.invalid.out_of_range'))
|
||||
sid = result['result']['songs'][query - 1]['id']
|
||||
url = f"https://ncmusic.akari-bot.top/song/detail?ids={sid}"
|
||||
info = await get_url(url, 200, fmt='json')
|
||||
info = info['songs'][0]
|
||||
artist = ' / '.join([ar['name'] for ar in info['ar']])
|
||||
song_page = f"https://music.163.com/#/song?id={info['id']}"
|
||||
|
||||
send_msg = msg.locale.t('ncmusic.message.info',
|
||||
name=info['name'], id=info['id'],
|
||||
album=info['al']['name'], album_id=info['al']['id'],
|
||||
artists=artist, detail=song_page)
|
||||
await msg.finish([Image(info['al']['picUrl']), Plain(send_msg)])
|
||||
except Exception:
|
||||
await msg.finish(msg.locale.t('ncmusic.message.search.invalid.non_digital'))
|
||||
|
||||
if legacy:
|
||||
for i, song in enumerate(songs, start=1):
|
||||
send_msg += f"{i}. {song['name']}"
|
||||
if 'transNames' in song:
|
||||
send_msg += f"({' / '.join(song['transNames'])})"
|
||||
send_msg += f"——{' / '.join(artist['name'] for artist in song['artists'])}"
|
||||
send_msg += f"《{song['album']['name']}》"
|
||||
if 'transNames' in song['album']:
|
||||
send_msg += f"({' / '.join(song['album']['transNames'])})"
|
||||
send_msg += f"({song['id']})\n"
|
||||
|
||||
if len(result['result']['songs']) > 10:
|
||||
send_msg += msg.locale.t('ncmusic.message.search.collapse')
|
||||
|
||||
await msg.finish(send_msg)
|
||||
|
||||
|
||||
@ncmusic.handle('info <sid> {{ncmusic.help.info}}')
|
||||
async def info(msg: Bot.MessageSession, sid: str):
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"ncmusic.help.search": "搜索网易云音乐。",
|
||||
"ncmusic.help.info": "获取音乐详细信息。",
|
||||
"ncmusic.message.info": "歌名:${name}(${id})\n专辑名:${album}(${album_id})\n歌手:${artists}\n歌曲详情页:${detail}",
|
||||
"ncmusic.message.search.collapse": "…仅显示前 20 条内容。",
|
||||
"ncmusic.message.search.collapse": "…仅显示前 10 条内容。",
|
||||
"ncmusic.message.search.invalid.non_digital": "无效的编号,必须为数字。",
|
||||
"ncmusic.message.search.invalid.out_of_range": "编号超出范围。",
|
||||
"ncmusic.message.search.prompt": "输入对应的序号以查看歌曲信息。",
|
||||
|
|
Reference in a new issue