zhenxun_bot/plugins/update_gocqhttp/data_source.py

84 lines
3.5 KiB
Python
Raw Normal View History

2021-05-20 19:25:51 +08:00
import aiohttp
2021-06-30 19:50:55 +08:00
from utils.utils import get_local_proxy, get_bot
from utils.user_agent import get_user_agent
2021-05-20 19:25:51 +08:00
import asyncio
import platform
import aiofiles
from bs4 import BeautifulSoup
import os
2021-07-30 21:21:51 +08:00
if platform.system() == "Windows":
2021-05-20 19:25:51 +08:00
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
2021-07-30 21:21:51 +08:00
url = "https://github.com/Mrs4s/go-cqhttp/releases"
2021-05-20 19:25:51 +08:00
2021-06-04 18:01:33 +08:00
async def download_gocq_lasted(path: str):
2021-05-20 19:25:51 +08:00
async with aiohttp.ClientSession(headers=get_user_agent()) as session:
async with session.get(url, proxy=get_local_proxy()) as response:
2021-07-30 21:21:51 +08:00
soup = BeautifulSoup(await response.text(), "lxml")
a = soup.find("div", {"class": "release-header"}).find("a")
2021-05-20 19:25:51 +08:00
title = a.text
2021-07-30 21:21:51 +08:00
_url = a.get("href")
2021-05-20 19:25:51 +08:00
for file in os.listdir(path):
2021-07-30 21:21:51 +08:00
if file.endswith(".zip"):
if (
file == title + "-windows-amd64.zip"
or file == title + "_windows_amd64.zip"
):
return "gocqhttp没有更新"
2021-05-20 19:25:51 +08:00
for file in os.listdir(path):
os.remove(path + file)
2021-07-30 21:21:51 +08:00
async with session.get(
"https://github.com" + _url, proxy=get_local_proxy()
) as res:
update_info = ""
soup = BeautifulSoup(await res.text(), "lxml")
info_div = soup.find("div", {"class": "markdown-body"})
for p in info_div.find_all("p"):
update_info += p.text.replace("<br>", "\n") + "\n"
div_all = soup.select(
"div.d-flex.flex-justify-between.flex-items-center.py-1.py-md-2.Box-body.px-2"
)
2021-05-20 19:25:51 +08:00
for div in div_all:
2021-07-30 21:21:51 +08:00
if (
div.find("a").find("span").text == title + "-windows-amd64.zip"
or div.find("a").find("span").text
== title + "-linux-arm64.tar.gz"
or div.find("a").find("span").text
== "go-cqhttp_windows_amd64.zip"
or div.find("a").find("span").text
== "go-cqhttp_linux_arm64.tar.gz"
):
file_url = div.find("a").get("href")
if div.find("a").find("span").text.find("windows") == -1:
tag = "-linux-arm64.tar.gz"
2021-05-20 19:25:51 +08:00
else:
2021-07-30 21:21:51 +08:00
tag = "-windows-amd64.zip"
async with session.get(
"https://github.com" + file_url, proxy=get_local_proxy()
) as res_file:
async with aiofiles.open(path + title + tag, "wb") as f:
2021-05-20 19:25:51 +08:00
await f.write(await res_file.read())
return update_info
2021-06-04 18:01:33 +08:00
async def upload_gocq_lasted(path, name, group_id):
2021-05-20 19:25:51 +08:00
bot = get_bot()
folder_id = 0
2021-07-30 21:21:51 +08:00
for folder in (await bot.get_group_root_files(group_id=group_id))["folders"]:
if folder["folder_name"] == "gocq":
folder_id = folder["folder_id"]
2021-05-20 19:25:51 +08:00
if not folder_id:
2021-07-30 21:21:51 +08:00
await bot.send_group_msg(group_id=group_id, message=f"请创建gocq文件夹后重试")
2021-05-20 19:25:51 +08:00
for file in os.listdir(path):
2021-07-30 21:21:51 +08:00
os.remove(path + file)
2021-05-20 19:25:51 +08:00
else:
await bot.upload_group_file(
2021-07-30 21:21:51 +08:00
group_id=group_id, folder=folder_id, file=path + name, name=name
2021-05-20 19:25:51 +08:00
)
# asyncio.get_event_loop().run_until_complete(download_gocq_lasted())