Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/modules/arcaea/__init__.py

77 lines
2.9 KiB
Python
Raw Normal View History

2021-12-06 15:32:27 +00:00
import os
2023-09-03 08:39:03 +00:00
import urllib.parse
2021-12-06 15:32:27 +00:00
2023-09-03 08:39:03 +00:00
from config import CFG
2023-09-03 08:50:12 +00:00
from core.builtins import Bot
2023-05-15 10:36:23 +00:00
from core.builtins import Plain, Image
2023-03-04 08:51:56 +00:00
from core.component import module
2023-05-15 10:36:23 +00:00
from core.utils.http import get_url
2021-12-06 15:32:27 +00:00
2023-04-05 02:22:37 +00:00
arc = module('arcaea', developers=['OasisAkari'], desc='{arcaea.help.desc}',
2023-06-18 09:03:26 +00:00
alias=['a', 'arc'])
2023-05-15 10:36:23 +00:00
assets_path = os.path.abspath('./assets/arcaea')
2023-10-27 17:29:03 +00:00
webrender = CFG.get_url('web_render')
2023-05-15 10:36:23 +00:00
class WithErrCode(Exception):
pass
2023-08-14 17:13:09 +00:00
@arc.command('<sb616>')
async def _(msg: Bot.MessageSession):
2023-09-01 14:38:32 +00:00
await msg.send_message([Plain(msg.locale.t("arcaea.message.sb616")),
Image(os.path.abspath('./assets/noc.jpg'))])
2023-05-15 10:36:23 +00:00
2023-04-28 11:47:14 +00:00
2023-05-19 04:46:29 +00:00
@arc.command('download {{arcaea.help.download}}')
2023-05-11 11:15:30 +00:00
async def _(msg: Bot.MessageSession):
if not webrender:
2023-08-14 17:13:09 +00:00
await msg.finish([msg.locale.t("error.webrender.unconfigured")])
2023-10-27 17:36:12 +00:00
resp = await get_url(webrender + 'source?url=' +
2023-09-03 08:39:03 +00:00
urllib.parse.quote('https://webapi.lowiro.com/webapi/serve/static/bin/arcaea/apk/'), 200,
2023-05-11 11:15:30 +00:00
fmt='json')
if resp:
2023-08-14 17:13:09 +00:00
await msg.finish([Plain(msg.locale.t("arcaea.message.download", version=resp["value"]["version"],
2023-05-11 11:15:30 +00:00
url=resp['value']['url']))])
2023-08-14 17:13:09 +00:00
else:
2023-10-18 08:13:08 +00:00
await msg.finish(msg.locale.t("arcaea.message.get_failed"))
2023-05-15 10:36:23 +00:00
2023-05-19 04:46:29 +00:00
@arc.command('random {{arcaea.help.random}}')
2023-04-28 11:47:14 +00:00
async def _(msg: Bot.MessageSession):
if not webrender:
2023-08-14 17:13:09 +00:00
await msg.finish(msg.locale.t("error.webrender.unconfigured"))
2023-10-27 17:36:12 +00:00
resp = await get_url(webrender + 'source?url=' +
2023-09-03 08:39:03 +00:00
urllib.parse.quote('https://webapi.lowiro.com/webapi/song/showcase/'),
200, fmt='json')
2023-04-28 11:47:14 +00:00
if resp:
value = resp["value"][0]
image = f'{assets_path}/jacket/{value["song_id"]}.jpg'
result = [Plain(value["title"]["en"])]
if os.path.exists(image):
result.append(Image(path=image))
await msg.finish(result)
2023-08-14 17:13:09 +00:00
else:
2023-10-18 08:13:08 +00:00
await msg.finish(msg.locale.t("arcaea.message.get_failed"))
2023-04-28 11:47:14 +00:00
2023-05-19 04:46:29 +00:00
@arc.command('rank free {{arcaea.help.rank.free}}', 'rank paid {{arcaea.help.rank.paid}}')
2023-04-28 11:47:14 +00:00
async def _(msg: Bot.MessageSession):
if not webrender:
2023-08-14 17:13:09 +00:00
await msg.finish(msg.locale.t("error.webrender.unconfigured"))
2023-04-28 11:47:14 +00:00
if msg.parsed_msg.get('free', False):
2023-10-27 17:36:12 +00:00
resp = await get_url(webrender + 'source?url=' +
2023-09-03 08:39:03 +00:00
urllib.parse.quote('https://webapi.lowiro.com/webapi/song/rank/free/'),
200, fmt='json')
2023-04-28 11:47:14 +00:00
else:
2023-10-27 17:36:12 +00:00
resp = await get_url(webrender + 'source?url=' +
2023-09-03 08:39:03 +00:00
urllib.parse.quote('https://webapi.lowiro.com/webapi/song/rank/paid/'), 200, fmt='json')
2023-04-28 11:47:14 +00:00
if resp:
r = []
rank = 0
for x in resp['value']:
rank += 1
r.append(f'{rank}. {x["title"]["en"]} ({x["status"]})')
await msg.finish('\n'.join(r))
2023-08-14 17:13:09 +00:00
else:
2023-10-18 08:13:08 +00:00
await msg.finish(msg.locale.t("arcaea.message.get_failed"))