mirror of
https://github.com/LiteyukiStudio/nonebot-plugin-marshoai.git
synced 2025-02-02 02:10:24 +08:00
49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
import time
|
||
|
||
from httpx import AsyncClient
|
||
from newspaper import Article
|
||
from nonebot import logger
|
||
|
||
from nonebot_plugin_marshoai.plugin.func_call.caller import on_function_call
|
||
from nonebot_plugin_marshoai.plugin.func_call.params import String
|
||
|
||
headers = {
|
||
"User-Agent": "Firefox/90.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0"
|
||
}
|
||
|
||
|
||
@on_function_call(
|
||
description="使用网页链接(url)获取网页内容摘要,可以让AI上网查询资料"
|
||
).params(
|
||
url=String(description="网页链接"),
|
||
typ=String(description="获取类型,摘要还是内容", enum=["摘要", "内容"]),
|
||
)
|
||
async def get_web_content(url: str, typ: str) -> str:
|
||
"""使用网页链接获取网页内容摘要
|
||
为什么要获取摘要,不然token超限了
|
||
|
||
Args:
|
||
url (str): _description_
|
||
|
||
Returns:
|
||
str: _description_
|
||
"""
|
||
async with AsyncClient(headers=headers) as client:
|
||
try:
|
||
response = await client.get(url)
|
||
t1 = time.time()
|
||
article = Article(url)
|
||
article.set_html(response.text)
|
||
article.parse()
|
||
t2 = time.time()
|
||
logger.debug(f"获取网页内容耗时: {t2 - t1}")
|
||
if typ == "摘要":
|
||
return f"标题: {article.title}\n作者: {article.authors}\n发布日期: {article.publish_date}"
|
||
elif typ == "内容":
|
||
return f"标题: {article.title}\n作者: {article.authors}\n发布日期: {article.publish_date}\n摘要: {article.summary}\n正文: {article.text}"
|
||
except Exception as e:
|
||
logger.error(f"marsho builtin: 获取网页内容失败: {e}")
|
||
return "获取网页内容失败:" + str(e)
|
||
|
||
return "未能获取到有效的网页内容"
|