1
0
forked from bot/app

Add New function and layout for liteyuki_weather

This commit is contained in:
Envision
2024-08-11 01:40:26 +08:00
parent c3fc5d429b
commit 81a191f8ba
17 changed files with 278 additions and 74 deletions

View File

@ -169,3 +169,20 @@ async def get_airquality(
async with httpx.AsyncClient() as client:
resp = await client.get(url, params=params)
return resp.json()
async def get_astronomy(
key: str,
location: str,
date: str,
dev: bool = get_memory_data("is_dev", True),
) -> dict:
url_path = f"v7/astronomy/sun?"
url = dev_url + url_path if dev else com_url + url_path
params = {
"key" : key,
"location" : location,
"date" : date,
}
async with httpx.AsyncClient() as client:
resp = await client.get(url, params=params)
return resp.json()

View File

@ -1,3 +1,5 @@
import datetime
from nonebot import require, on_endswith
from nonebot.adapters import satori
from nonebot.adapters.onebot.v11 import MessageSegment
@ -50,6 +52,9 @@ async def get_weather_now_card(matcher: Matcher, event: T_MessageEvent, keyword:
qw_lang = get_qw_lang(ulang.lang_code)
key = get_config("weather_key")
is_dev = get_memory_data("weather.is_dev", True)
extra_info = get_config("weather_extra_info")
attr = get_config("weather_attr")
user: User = user_db.where_one(User(), "user_id = ?", event_utils.get_user_id(event), default=User())
# params
unit = user.profile.get("unit", "m")
@ -80,6 +85,7 @@ async def get_weather_now_card(matcher: Matcher, event: T_MessageEvent, keyword:
weather_daily = await get_weather_daily(key, location_data.id, lang=qw_lang, unit=unit, dev=is_dev)
weather_hourly = await get_weather_hourly(key, location_data.id, lang=qw_lang, unit=unit, dev=is_dev)
aqi = await get_airquality(key, location_data.id, lang=qw_lang, dev=is_dev)
weather_astronomy = await get_astronomy(key, location_data.id, date=datetime.datetime.now().strftime('%Y%m%d'), dev=is_dev)
image = await template2image(
template=get_path("templates/weather_now.html", abs_path=True),
@ -89,13 +95,17 @@ async def get_weather_now_card(matcher: Matcher, event: T_MessageEvent, keyword:
"unit": unit,
"lang": ulang.lang_code,
},
"weatherNow" : weather_now,
"weatherDaily" : weather_daily,
"weatherHourly": weather_hourly,
"aqi" : aqi,
"location" : location_data.dump(),
"localization" : get_local_data(ulang.lang_code),
"is_dev": 1 if is_dev else 0
"weatherNow" : weather_now,
"weatherDaily" : weather_daily,
"weatherHourly" : weather_hourly,
"aqi" : aqi,
"location" : location_data.dump(),
"localization" : get_local_data(ulang.lang_code),
"weatherAstronomy" : weather_astronomy,
"is_dev" : 1 if is_dev else 0,
"extra_info" : extra_info,
"attr" : attr
}
},
)