mirror of
https://github.com/ChenXu233/nonebot_plugin_dialectlist.git
synced 2024-11-23 23:55:29 +08:00
⚡ 理论上优化了头像获取的速度
This commit is contained in:
parent
dc5293dbce
commit
d4d3600f23
@ -52,6 +52,7 @@ from .utils import (
|
||||
msg_counter,
|
||||
get_rank_image,
|
||||
persist_id2user_id,
|
||||
get_user_infos,
|
||||
# get_user_info2,
|
||||
)
|
||||
|
||||
@ -216,7 +217,7 @@ async def handle_rank(
|
||||
start: datetime = Arg(),
|
||||
stop: datetime = Arg(),
|
||||
):
|
||||
t1 = t.time()
|
||||
|
||||
if id := state["group_id"]:
|
||||
id = str(id)
|
||||
logger.debug(f"group_id: {id}")
|
||||
@ -227,9 +228,9 @@ async def handle_rank(
|
||||
if not id:
|
||||
await saa.Text("没有指定群哦").finish()
|
||||
|
||||
logger.debug(f"所属群聊解析花费时间:{t.time() - t1}")
|
||||
t1 = t.time()
|
||||
|
||||
if plugin_config.counting_cache:
|
||||
raise Exception("我草缓存功能还没端上来呢,你怎么就先用上了")
|
||||
else:
|
||||
messages = await get_message_records(
|
||||
id2s=[id],
|
||||
id_type=SessionIdType.GROUP,
|
||||
@ -241,15 +242,12 @@ async def handle_rank(
|
||||
exclude_id1s=plugin_config.excluded_people,
|
||||
)
|
||||
|
||||
logger.debug(f"获取群聊消息花费时间:{t.time() - t1}")
|
||||
t1 = t.time()
|
||||
|
||||
if not messages:
|
||||
await saa.Text("明明这个时间段都没有人说话怎么会有话痨榜呢?").finish()
|
||||
|
||||
rank = got_rank(msg_counter(messages))
|
||||
logger.debug(f"群聊消息计数花费时间:{t.time() - t1}")
|
||||
t1 = t.time()
|
||||
raw_rank = msg_counter(messages)
|
||||
|
||||
rank = got_rank(raw_rank)
|
||||
logger.debug(rank)
|
||||
rank2: List[UserRankInfo] = []
|
||||
ids = await persist_id2user_id([int(i[0]) for i in rank])
|
||||
@ -259,8 +257,9 @@ async def handle_rank(
|
||||
|
||||
total = sum([i[1] for i in rank])
|
||||
index = 1
|
||||
for i in rank:
|
||||
if user_info := await get_user_info(bot, event, user_id=str(i[0])):
|
||||
user_infos = await get_user_infos(bot, event, user_ids=[str(i[0]) for i in rank])
|
||||
for user_info,i in zip(user_infos,rank):
|
||||
if user_info:
|
||||
logger.debug(user_info)
|
||||
user_nickname = (
|
||||
user_info.user_displayname
|
||||
@ -304,7 +303,6 @@ async def handle_rank(
|
||||
string += str_example
|
||||
|
||||
msg = saa.Text(string)
|
||||
logger.debug(f"群聊消息渲染文字花费时间:{t.time() - t1}")
|
||||
t1 = t.time()
|
||||
|
||||
if plugin_config.visualization:
|
||||
|
@ -1,5 +1,5 @@
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional, List
|
||||
from typing import Optional, List, Literal
|
||||
from nonebot import get_driver, get_plugin_config
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ class ScopedConfig(BaseModel):
|
||||
suffix: bool = False # 是否显示后缀
|
||||
excluded_self: bool = True
|
||||
visualization: bool = True # 是否可视化
|
||||
counting_cache: bool = True
|
||||
counting_cache: bool = False # 计数缓存(没有完工)
|
||||
excluded_people: List[str] = [] # 排除的人的QQ号
|
||||
timezone: Optional[str] = "Asia/Shanghai"
|
||||
string_suffix: str = "统计花费时间:{timecost}秒" # 消息格式后缀
|
||||
|
@ -1,7 +1,10 @@
|
||||
from datetime import datetime
|
||||
from typing import Union
|
||||
from pydantic import BaseModel
|
||||
from sqlalchemy import JSON, TEXT, String,Integer
|
||||
from nonebot_plugin_orm import Model
|
||||
from nonebot_plugin_userinfo import UserInfo
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
|
||||
class UserRankInfo(UserInfo):
|
||||
@ -11,7 +14,13 @@ class UserRankInfo(UserInfo):
|
||||
user_index: Union[int, str]
|
||||
user_avatar_bytes: bytes
|
||||
|
||||
class MsgCountDayData(BaseModel):
|
||||
user_id:str
|
||||
# class MsgCountData(Model):
|
||||
# __tablename__ = 'dialectlist_msg_data'
|
||||
|
||||
# class MsgCountDayData(BaseModel):
|
||||
# session_id: str
|
||||
# session_bnum: int
|
||||
class MessageCountCache(Model):
|
||||
__table_args__ = {"extend_existing": True}
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
time: Mapped[datetime]
|
||||
session_id: Mapped[int] = mapped_column(Integer)
|
||||
session_bnum: Mapped[int] = mapped_column(Integer)
|
||||
|
@ -1,16 +1,19 @@
|
||||
import os
|
||||
import asyncio
|
||||
import unicodedata
|
||||
|
||||
from typing import Dict, List
|
||||
from typing import Dict, List, Optional
|
||||
from sqlalchemy import or_, select
|
||||
from sqlalchemy.sql import ColumnElement
|
||||
|
||||
from nonebot.log import logger
|
||||
from nonebot.params import Depends
|
||||
from nonebot.matcher import Matcher
|
||||
from nonebot.adapters import Bot, Event
|
||||
|
||||
from nonebot_plugin_orm import get_session
|
||||
from nonebot_plugin_session import Session, SessionLevel, extract_session
|
||||
from nonebot_plugin_userinfo import get_user_info, UserInfo
|
||||
from nonebot_plugin_localstore import get_cache_dir
|
||||
from nonebot_plugin_htmlrender import template_to_pic
|
||||
from nonebot_plugin_session_orm import SessionModel
|
||||
@ -180,3 +183,7 @@ async def get_rank_image(rank: List[UserRankInfo]) -> bytes:
|
||||
},
|
||||
pages={"viewport": {"width": 1000, "height": 10}},
|
||||
)
|
||||
|
||||
async def get_user_infos(bot:Bot,event:Event,user_ids:List[str],use_cache: bool = True)-> List[Optional[UserInfo]]:
|
||||
pool = [get_user_info(bot, event, id, use_cache) for id in user_ids]
|
||||
return (await asyncio.gather(*pool))
|
||||
|
81
pdm.lock
81
pdm.lock
@ -5,7 +5,7 @@
|
||||
groups = ["default", "Test", "dev"]
|
||||
strategy = ["inherit_metadata"]
|
||||
lock_version = "4.5.0"
|
||||
content_hash = "sha256:d8430f5bacf90d467148ef4e93741068a46c2f9885c5c05e2ae5ff7e8c02b39b"
|
||||
content_hash = "sha256:ef4b9763ade16e47d28a5115cb514de2e42a060b1cde40aefd43a75189cb6f62"
|
||||
|
||||
[[metadata.targets]]
|
||||
requires_python = "~=3.9"
|
||||
@ -1430,6 +1430,85 @@ files = [
|
||||
{file = "orjson-3.10.5.tar.gz", hash = "sha256:7a5baef8a4284405d96c90c7c62b755e9ef1ada84c2406c24a9ebec86b89f46d"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pillow"
|
||||
version = "10.4.0"
|
||||
requires_python = ">=3.8"
|
||||
summary = "Python Imaging Library (Fork)"
|
||||
groups = ["default"]
|
||||
files = [
|
||||
{file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"},
|
||||
{file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"},
|
||||
{file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"},
|
||||
{file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"},
|
||||
{file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"},
|
||||
{file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"},
|
||||
{file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"},
|
||||
{file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"},
|
||||
{file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"},
|
||||
{file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"},
|
||||
{file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"},
|
||||
{file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"},
|
||||
{file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"},
|
||||
{file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"},
|
||||
{file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"},
|
||||
{file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"},
|
||||
{file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"},
|
||||
{file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"},
|
||||
{file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"},
|
||||
{file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"},
|
||||
{file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"},
|
||||
{file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"},
|
||||
{file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"},
|
||||
{file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"},
|
||||
{file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"},
|
||||
{file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"},
|
||||
{file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"},
|
||||
{file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"},
|
||||
{file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"},
|
||||
{file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"},
|
||||
{file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"},
|
||||
{file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"},
|
||||
{file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"},
|
||||
{file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"},
|
||||
{file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"},
|
||||
{file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"},
|
||||
{file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"},
|
||||
{file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"},
|
||||
{file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"},
|
||||
{file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"},
|
||||
{file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"},
|
||||
{file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"},
|
||||
{file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"},
|
||||
{file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"},
|
||||
{file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"},
|
||||
{file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"},
|
||||
{file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"},
|
||||
{file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"},
|
||||
{file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"},
|
||||
{file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"},
|
||||
{file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"},
|
||||
{file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"},
|
||||
{file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"},
|
||||
{file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"},
|
||||
{file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"},
|
||||
{file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"},
|
||||
{file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"},
|
||||
{file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"},
|
||||
{file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"},
|
||||
{file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"},
|
||||
{file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"},
|
||||
{file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"},
|
||||
{file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"},
|
||||
{file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"},
|
||||
{file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"},
|
||||
{file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"},
|
||||
{file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"},
|
||||
{file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"},
|
||||
{file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"},
|
||||
{file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pkginfo"
|
||||
version = "1.10.0"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "nonebot-plugin-dialectlist"
|
||||
version = "2.2.4"
|
||||
version = "2.3.0"
|
||||
description = "看看你群群友有多能说"
|
||||
authors = [
|
||||
{name = "Chen_Xu233", email = "woyerpa@outlook.com"},
|
||||
@ -15,7 +15,7 @@ dependencies = [
|
||||
"nonebot-plugin-userinfo>=0.2.4",
|
||||
"nonebot-plugin-htmlrender>=0.3.3",
|
||||
"nonebot2>=2.3.2",
|
||||
"cn2an>=0.5.22"
|
||||
"pillow>=10.4.0",
|
||||
]
|
||||
requires-python = ">=3.9,<4.0"
|
||||
readme = "README.md"
|
||||
|
112
tests/render.py
Normal file
112
tests/render.py
Normal file
@ -0,0 +1,112 @@
|
||||
import PIL
|
||||
import abc
|
||||
from typing import List, Tuple, Union, Iterable
|
||||
from PIL import Image, ImageDraw, ImageFont
|
||||
|
||||
class BaseElement(abc.ABC):
|
||||
def __init__(self, box:Union[Iterable[int],Iterable[float]] = (0, 0, 0, 0)):
|
||||
self.box = [float(i) for i in box]
|
||||
self.ux = None
|
||||
self.ly = None
|
||||
self.dx = None
|
||||
self.ry = None
|
||||
self.hight = None
|
||||
self.width = None
|
||||
self.image = None
|
||||
self.position = (self.ux, self.ly)
|
||||
self.size = (self.width, self.hight)
|
||||
|
||||
@abc.abstractmethod
|
||||
def render(self):
|
||||
raise NotImplementedError
|
||||
|
||||
def get_box(self):
|
||||
return self.box
|
||||
|
||||
def set_box(self, box:Tuple[float, float, float, float]):
|
||||
self.box = box
|
||||
|
||||
def get_size(self):
|
||||
self.size = (self.width, self.hight)
|
||||
return self.size
|
||||
|
||||
def get_position(self):
|
||||
self.position = (self.ux, self.ly)
|
||||
return self.position
|
||||
|
||||
class Board(BaseElement):
|
||||
def __init__(self, width, hight):
|
||||
self.width = width
|
||||
self.hight = hight
|
||||
self.image = Image.new('RGBA', (self.width, self.hight), (255, 255, 255, 0))
|
||||
self.elements = []
|
||||
|
||||
def render(self):
|
||||
for i in self.elements:
|
||||
i.ux = self.width * i.box[0]
|
||||
i.ly = self.hight * i.box[1]
|
||||
i.dx = self.width * i.box[2]
|
||||
i.ry = self.hight * i.box[3]
|
||||
i.hight = i.dx - i.ux
|
||||
i.width = i.ry - i.ly
|
||||
i.position = (i.ux, i.ly)
|
||||
image = i.render()
|
||||
self.image.paste(image, i.get_position())
|
||||
|
||||
def add_element(self, element:BaseElement):
|
||||
self.elements.append(element)
|
||||
|
||||
|
||||
class Container(BaseElement):
|
||||
def __init__(self, box:Union[Iterable[int],Iterable[float]] = (0, 0, 0, 0)):
|
||||
super().__init__(box)
|
||||
self.elements:List[BaseElement] = []
|
||||
|
||||
def render(self,size:Tuple[int, int] = (100, 100)):
|
||||
if not self.width and self.hight:
|
||||
self.width = size[0]
|
||||
self.hight = size[1]
|
||||
if not self.image:
|
||||
self.image = Image.new('RGBA', (self.width, self.hight), (255, 255, 255, 0))
|
||||
for i in self.elements:
|
||||
image = i.render()
|
||||
self.image.paste(image, i.get_position())
|
||||
|
||||
class Element(BaseElement):
|
||||
|
||||
|
||||
|
||||
|
||||
# class BaseContainer(abc.ABC):
|
||||
# def __init__(self, width:int, height:int):
|
||||
# self.width = width
|
||||
# self.height = height
|
||||
# self.image = Image.new('RGBA', (self.width, self.height), (255, 255, 255, 0))
|
||||
|
||||
# @abc.abstractmethod
|
||||
# def render(self):
|
||||
# raise NotImplementedError
|
||||
|
||||
# def set_image(self,image):
|
||||
# self.image = image
|
||||
|
||||
# class Elements():
|
||||
# def __init__(self, width:int, height:int):
|
||||
# self.width = width
|
||||
# self.height = height
|
||||
# self.image = Image.new('RGBA', (self.width, self.height), (255, 255, 255, 0))
|
||||
|
||||
# def render(self):
|
||||
# return self.image
|
||||
|
||||
# class Container(BaseContainer):
|
||||
# def __init__(self, width:int, height:int,elements:List[Union['Container',Elements]] = []):
|
||||
# super().__init__(width, height)
|
||||
# self.elements = elements
|
||||
|
||||
# def render(self):
|
||||
# for i in self.elements:
|
||||
# image = i.render()
|
||||
# self.image.paste(image, i.position)
|
||||
# return self.image
|
||||
|
Loading…
Reference in New Issue
Block a user