diff options
Diffstat (limited to 'ATRI/plugins/plugin_rich')
-rw-r--r-- | ATRI/plugins/plugin_rich/__init__.py | 182 |
1 files changed, 93 insertions, 89 deletions
diff --git a/ATRI/plugins/plugin_rich/__init__.py b/ATRI/plugins/plugin_rich/__init__.py index 99026a8..51b86e8 100644 --- a/ATRI/plugins/plugin_rich/__init__.py +++ b/ATRI/plugins/plugin_rich/__init__.py @@ -18,11 +18,10 @@ from nonebot.log import logger from nonebot.plugin import on_message from nonebot.adapters.cqhttp import Bot, Event -from utils.utils_banList import banList +from utils.utils_times import countX +from utils.utils_rule import check_banlist from utils.utils_request import request_get - -from .body import dec, enc - +from .body import dec BILI_REPORT_FORMAT = """[{aid}] Info: Title: {title} @@ -33,64 +32,64 @@ Link: {aid_link} {bid_link}""" -bilibiliRich = on_message() +bilibiliRich = on_message(rule=check_banlist()) +b_list = [] + [email protected]() # type: ignore [email protected]() # type: ignore async def _(bot: Bot, event: Event, state: dict) -> None: - user = str(event.user_id) - group = str(event.group_id) + global b_list + user = event.user_id + msg = str(event.message) + + # 防刷屏机制:回复次数达到五次自动忽略下一次 + if countX(b_list, user) == 5: + return + + if "qqdocurl" not in msg: + try: + bv = re.findall(r"(BV\w+)", msg) + except: + return + else: + bvURL = re.findall(r"(........b23...\S+\=)", msg) - if banList(user, group): - msg = str(event.message) + try: + r = requests.get(bvURL[0], stream=True, allow_redirects=True) + except: + logger.waring("Get BV ERROR. (Request ERROR)") + return - if "qqdocurl" not in msg: - try: - bv = re.findall(r"(BV\w+)", msg) - except: - return - else: - bvURL = re.findall(r"(........b23...\S+\=)", msg) + bv = re.findall(r"(BV\w+)", r.url) - try: - r = requests.get(bvURL[0], stream=True, allow_redirects = True) - except: - logger.waring("Get BV ERROR. (Request ERROR)") - return + if bv: + aid = str(dec(bv[0])) + ad = 'av' + aid + URL = f'https://api.imjad.cn/bilibili/v2/?aid={aid}' - bv = re.findall(r"(BV\w+)", r.url) - - if bv: - aid = str(dec(bv[0])) - ad = 'av' + aid - URL = f'https://api.imjad.cn/bilibili/v2/?aid={aid}' - - try: - res = request_get(URL) - except: - logger.waring("Request ERROR") - return - - data = json.loads(res) - msg = BILI_REPORT_FORMAT.format( - title = data["data"]["title"], - - view = data["data"]["stat"]["view"], - coin = data["data"]["stat"]["coin"], - share = data["data"]["stat"]["share"], - like = data["data"]["stat"]["like"], - - bid = data["data"]["bvid"], - bid_link = data["data"]["short_link"], - - aid = ad, - aid_link = f'https://b23.tv/{ad}' - ) - - await bilibiliRich.finish(msg) - - else: + try: + res = request_get(URL) + except: + logger.waring("Request ERROR") return + data = json.loads(res) + msg = BILI_REPORT_FORMAT.format(title=data["data"]["title"], + view=data["data"]["stat"]["view"], + coin=data["data"]["stat"]["coin"], + share=data["data"]["stat"]["share"], + like=data["data"]["stat"]["like"], + bid=data["data"]["bvid"], + bid_link=data["data"]["short_link"], + aid=ad, + aid_link=f'https://b23.tv/{ad}') + + b_list.append(user) + await bilibiliRich.finish(msg) + + else: + return + CLOUDMUSIC_REPORT_FORMAT = """Status: {status} Song id: {id} @@ -98,40 +97,45 @@ Br: {br} Download: {url} MD5: {md5}""" -cloudmusicRich = on_message() +cloudmusicRich = on_message(rule=check_banlist()) +c_list = [] + [email protected]() # type: ignore [email protected]() # type: ignore async def _(bot: Bot, event: Event, state: dict) -> None: - user = str(event.user_id) - group = str(event.group_id) - - if banList(user, group): - msg = str(event.message) - - if "music.163.com" in msg: - music_id = re.findall(r"song\S+\/|id=\S+\&", msg) - - if music_id: - music_id = str(music_id[0]) - music_id = re.findall(r"-?[1-9]\d*", music_id) - URL = f'https://api.imjad.cn/cloudmusic/?type=song&id={music_id[0]}&br=320000' - - try: - res = request_get(URL) - except: - logger.waring("Request ERROR") - return - - data = json.loads(res) - msg = CLOUDMUSIC_REPORT_FORMAT.format( - status = data["code"], - id = data["data"][0]["id"], - br = data["data"][0]["br"], - url = data["data"][0]["url"], - md5 = data["data"][0]["md5"], - ) - - await cloudmusicRich.finish(msg) - - else: - return + global c_list + user = event.user_id + msg = str(event.message) + + # 防刷屏机制:回复次数达到五次自动忽略下一次 + if countX(b_list, user) == 5: + return + + if "music.163.com" in msg: + music_id = re.findall(r"song\S+\/|id=\S+\&", msg) + + if music_id: + music_id = str(music_id[0]) + music_id = re.findall(r"-?[1-9]\d*", music_id) + URL = f'https://api.imjad.cn/cloudmusic/?type=song&id={music_id[0]}&br=320000' + + try: + res = request_get(URL) + except: + logger.waring("Request ERROR") + return + + data = json.loads(res) + msg = CLOUDMUSIC_REPORT_FORMAT.format( + status=data["code"], + id=data["data"][0]["id"], + br=data["data"][0]["br"], + url=data["data"][0]["url"], + md5=data["data"][0]["md5"], + ) + + c_list.append(user) + await cloudmusicRich.finish(msg) + + else: + return |