refactor code

This commit is contained in:
hibiki
2021-07-30 21:21:51 +08:00
parent 2ad891aa1e
commit cc24822dca
165 changed files with 7815 additions and 8174 deletions
+32 -33
View File
@@ -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
View File
@@ -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"]