From badae703324847c2dbfd183afacc15306d8ca6b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9A=E7=BE=85=E7=8B=BC?= Date: Sun, 1 Oct 2023 00:45:25 +0800 Subject: [PATCH] Update without webrender --- modules/ncmusic/__init__.py | 103 ++++++++++++++++++----------- modules/ncmusic/locales/zh_cn.json | 2 +- 2 files changed, 64 insertions(+), 41 deletions(-) diff --git a/modules/ncmusic/__init__.py b/modules/ncmusic/__init__.py index bb148806..1ec3b459 100644 --- a/modules/ncmusic/__init__.py +++ b/modules/ncmusic/__init__.py @@ -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 {{ncmusic.help.info}}') async def info(msg: Bot.MessageSession, sid: str): diff --git a/modules/ncmusic/locales/zh_cn.json b/modules/ncmusic/locales/zh_cn.json index 48e1b12e..08dc263f 100644 --- a/modules/ncmusic/locales/zh_cn.json +++ b/modules/ncmusic/locales/zh_cn.json @@ -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": "输入对应的序号以查看歌曲信息。",