This commit is contained in:
hibiki
2021-06-04 18:01:33 +08:00
parent 9e401e7a83
commit 8c5e0bd381
43 changed files with 1605 additions and 426 deletions
+35 -52
View File
@@ -7,21 +7,16 @@ from nonebot.adapters.cqhttp import PrivateMessageEvent
from util.utils import get_message_text
from nonebot.adapters.cqhttp.permission import PRIVATE
from util.utils import UserExistLimiter
from asyncio.exceptions import TimeoutError
__plugin_name__ = '磁力搜索'
__plugin_usage__ = r"""
* 请各位使用后不要转发 *
* 有时可能搜不到,再试一次就行了 *
参数: -U(时间) -H(热度) -S(大小)
-V(仅视频) -P(仅图片) -A(仅压缩包)
-R (R18懂的都懂)
num(页数, 如果不知道页数请不要填,并且是倒叙,比如页数总数是29,你想查看第一页的内容, 就使用 bt 29 xxx)
-按相关度检索(默认)
bt [关键词]
-按更新时间检索(参数不区分大小写,但要注意空格)
bt -U [关键词]
-搜索第10页数
bt 10(倒着) [关键词]
* 拒绝反冲斗士! *
bt [关键词] [页数](默认为1)
示例:
bt 钢铁侠
bt 钢铁侠 3
""".strip()
_ulmt = UserExistLimiter()
@@ -36,16 +31,8 @@ async def _(bot: Bot, event: PrivateMessageEvent, state: T_State):
msg = get_message_text(event.json())
if not msg:
await bt.reject('你想搜索什么呢?', at_sender=True)
mp = msg.split(" ")
if len(mp) > 1:
args = ''
for i in range(len(mp) - 1):
args += mp[i] + ' '
state['args'] = args
state['bt'] = mp[1]
else:
state['bt'] = get_message_text(event.json())
state['args'] = ''
state['keyword'] = msg
state['page'] = '1'
@bt.handle()
@@ -55,41 +42,37 @@ async def _(bot: Bot, event: PrivateMessageEvent, state: T_State):
if _ulmt.check(event.user_id):
await bt.finish('您有bt任务正在进行,请等待结束.', at_sender=True)
mp = get_message_text(event.json()).split(" ")
if len(mp) > 1:
args = ''
for i in range(len(mp) - 1):
args += mp[i] + ' '
state['args'] = args.strip()
state['bt'] = mp[-1]
if len(mp) == 2:
state['keyword'] = mp[0]
state['page'] = mp[1]
else:
state['bt'] = get_message_text(event.json())
state['args'] = ''
state['keyword'] = mp[0]
state['page'] = '1'
@bt.got('bt', prompt='虚空磁力?查什么GKD')
@bt.got('keyword', prompt='虚空磁力?查什么GKD')
async def _(bot: Bot, event: PrivateMessageEvent, state: T_State):
_ulmt.set_True(event.user_id)
keyword = state['bt']
args = state['args']
keyword = state['keyword']
page = state['page']
await bt.send('开始搜索....', at_sender=True)
send_flag = False
try:
if args.find('-R') == -1 and args.find('-r') == -1:
bt_report = await get_bt_info(keyword, args)
else:
bt_report = await get_bt_info(keyword, args, '0')
if bt_report:
if len(bt_report.split("\n")) < 2:
await bt.finish(bt_report + '搜索失败了,再试一次也许能成', at_sender=True)
else:
await bt.send("如果有页数没资源请再试一次\n" + bt_report)
logger.info(
f"(USER {event.user_id}, GROUP {event.group_id if event.message_type != 'private' else 'private'})"
f" 搜索bt {args} {keyword}")
else:
logger.error("没查询到资源")
await bt.send("没有查询到资源(也有可能是超时,再试一次?)", at_sender=True)
_ulmt.set_False(event.user_id)
except Exception as e:
_ulmt.set_False(event.user_id)
await bt.send("bt出错啦,再试一次?", at_sender=True)
logger.info(f'bt {keyword} 出错 e:{e}')
async for title, itype, create_time, file_size, link in get_bt_info(keyword, page):
await bt.send(f'标题:{title}\n'
f'类型:{itype}\n'
f'创建时间:{create_time}\n'
f'文件大小:{file_size}\n'
f'种子:{link}')
send_flag = True
except TimeoutError:
pass
if not send_flag:
await bt.send(f'{keyword} 超时或未搜索到...')
logger.info(f'USER {event.user_id} BT搜索 {keyword} 第 {page} 页')
_ulmt.set_False(event.user_id)