mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-07 04:40:00 +08:00
refactor code
This commit is contained in:
+32
-33
@@ -10,7 +10,7 @@ from utils.utils import UserExistLimiter
|
||||
from asyncio.exceptions import TimeoutError
|
||||
from aiohttp.client_exceptions import ServerDisconnectedError
|
||||
|
||||
__plugin_name__ = '磁力搜索'
|
||||
__plugin_name__ = "磁力搜索"
|
||||
__plugin_usage__ = r"""
|
||||
* 请各位使用后不要转发 *
|
||||
* 拒绝反冲斗士! *
|
||||
@@ -22,67 +22,66 @@ bt 钢铁侠 3
|
||||
|
||||
_ulmt = UserExistLimiter()
|
||||
|
||||
bt = on_command('bt', permission=PRIVATE, priority=5, block=True)
|
||||
bt = on_command("bt", permission=PRIVATE, priority=5, block=True)
|
||||
|
||||
|
||||
@bt.args_parser
|
||||
async def _(bot: Bot, event: PrivateMessageEvent, state: T_State):
|
||||
if str(event.get_message()) in ['取消', '算了']:
|
||||
if str(event.get_message()) in ["取消", "算了"]:
|
||||
await bt.finish("已取消操作..", at_sender=True)
|
||||
msg = get_message_text(event.json())
|
||||
if not msg:
|
||||
await bt.reject('你想搜索什么呢?', at_sender=True)
|
||||
state['keyword'] = msg
|
||||
state['page'] = '1'
|
||||
await bt.reject("你想搜索什么呢?", at_sender=True)
|
||||
state["keyword"] = msg
|
||||
state["page"] = "1"
|
||||
|
||||
|
||||
@bt.handle()
|
||||
async def _(bot: Bot, event: PrivateMessageEvent, state: T_State):
|
||||
if _ulmt.check(event.user_id):
|
||||
await bt.finish('您有bt任务正在进行,请等待结束.', at_sender=True)
|
||||
await bt.finish("您有bt任务正在进行,请等待结束.", at_sender=True)
|
||||
mp = get_message_text(event.json())
|
||||
if not mp:
|
||||
return
|
||||
mp = mp.split(' ')
|
||||
mp = mp.split()
|
||||
if len(mp) == 2:
|
||||
state['keyword'] = mp[0]
|
||||
state['page'] = mp[1]
|
||||
state["keyword"] = mp[0]
|
||||
state["page"] = mp[1]
|
||||
else:
|
||||
state['keyword'] = mp[0]
|
||||
state['page'] = '1'
|
||||
state["keyword"] = mp[0]
|
||||
state["page"] = "1"
|
||||
|
||||
|
||||
@bt.got('keyword', prompt='虚空磁力?查什么GKD')
|
||||
@bt.got("keyword", prompt="虚空磁力?查什么GKD")
|
||||
async def _(bot: Bot, event: PrivateMessageEvent, state: T_State):
|
||||
_ulmt.set_True(event.user_id)
|
||||
keyword = state['keyword']
|
||||
page = state['page']
|
||||
await bt.send('开始搜索....', at_sender=True)
|
||||
keyword = state["keyword"]
|
||||
page = state["page"]
|
||||
await bt.send("开始搜索....", at_sender=True)
|
||||
send_flag = False
|
||||
try:
|
||||
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}')
|
||||
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:
|
||||
_ulmt.set_False(event.user_id)
|
||||
await bt.finish(f'搜索 {keyword} 超时...')
|
||||
await bt.finish(f"搜索 {keyword} 超时...")
|
||||
except ServerDisconnectedError:
|
||||
_ulmt.set_False(event.user_id)
|
||||
await bt.finish(f'搜索 {keyword} 连接失败')
|
||||
await bt.finish(f"搜索 {keyword} 连接失败")
|
||||
except Exception as e:
|
||||
_ulmt.set_False(event.user_id)
|
||||
await bt.finish(f'bt 其他未知错误..')
|
||||
logger.error(f'bt 错误 e:{e}')
|
||||
await bt.finish(f"bt 其他未知错误..")
|
||||
logger.error(f"bt 错误 e:{e}")
|
||||
if not send_flag:
|
||||
await bt.send(f'{keyword} 未搜索到...')
|
||||
logger.info(f'USER {event.user_id} BT搜索 {keyword} 第 {page} 页')
|
||||
await bt.send(f"{keyword} 未搜索到...")
|
||||
logger.info(f"USER {event.user_id} BT搜索 {keyword} 第 {page} 页")
|
||||
_ulmt.set_False(event.user_id)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+26
-19
@@ -4,38 +4,45 @@ from configs.config import MAXINFO_BT
|
||||
from bs4 import BeautifulSoup
|
||||
from utils.utils import get_local_proxy
|
||||
import platform
|
||||
if platform.system() == 'Windows':
|
||||
|
||||
if platform.system() == "Windows":
|
||||
import asyncio
|
||||
|
||||
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
|
||||
|
||||
|
||||
url = 'http://www.eclzz.world'
|
||||
url = "http://www.eclzz.world"
|
||||
|
||||
|
||||
async def get_bt_info(keyword: str, page: str):
|
||||
async with aiohttp.ClientSession(headers=get_user_agent()) as session:
|
||||
async with session.get(f"{url}/s/{keyword}_rel_{page}.html", proxy=get_local_proxy(), timeout=5) as response:
|
||||
async with session.get(
|
||||
f"{url}/s/{keyword}_rel_{page}.html", proxy=get_local_proxy(), timeout=5
|
||||
) as response:
|
||||
text = await response.text()
|
||||
if text.find('大约0条结果') != -1:
|
||||
if text.find("大约0条结果") != -1:
|
||||
return
|
||||
soup = BeautifulSoup(text, 'lxml')
|
||||
item_lst = soup.find_all('div', {'class': 'search-item'})
|
||||
soup = BeautifulSoup(text, "lxml")
|
||||
item_lst = soup.find_all("div", {"class": "search-item"})
|
||||
for item in item_lst[:MAXINFO_BT]:
|
||||
divs = item.find_all('div')
|
||||
title = str(divs[0].find('a').text).replace('<em>', '').replace('</em>', '').strip()
|
||||
spans = divs[2].find_all('span')
|
||||
divs = item.find_all("div")
|
||||
title = (
|
||||
str(divs[0].find("a").text)
|
||||
.replace("<em>", "")
|
||||
.replace("</em>", "")
|
||||
.strip()
|
||||
)
|
||||
spans = divs[2].find_all("span")
|
||||
itype = spans[0].text
|
||||
create_time = spans[1].find('b').text
|
||||
file_size = spans[2].find('b').text
|
||||
link = await get_download_link(divs[0].find('a')['href'], session)
|
||||
create_time = spans[1].find("b").text
|
||||
file_size = spans[2].find("b").text
|
||||
link = await get_download_link(divs[0].find("a")["href"], session)
|
||||
yield title, itype, create_time, file_size, link
|
||||
|
||||
|
||||
async def get_download_link(_url: str, session) -> str:
|
||||
async with session.get(f"{url}{_url}", proxy=get_local_proxy(), timeout=30) as response:
|
||||
soup = BeautifulSoup(await response.text(), 'lxml')
|
||||
return soup.find('a', {'id': 'down-url'})['href']
|
||||
|
||||
|
||||
|
||||
|
||||
async with session.get(
|
||||
f"{url}{_url}", proxy=get_local_proxy(), timeout=30
|
||||
) as response:
|
||||
soup = BeautifulSoup(await response.text(), "lxml")
|
||||
return soup.find("a", {"id": "down-url"})["href"]
|
||||
|
||||
Reference in New Issue
Block a user