nonebot-plugin-osubot 6.17.1__py3-none-any.whl → 6.18.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of nonebot-plugin-osubot might be problematic. Click here for more details.
- nonebot_plugin_osubot/api.py +2 -2
- nonebot_plugin_osubot/draw/bp.py +2 -2
- nonebot_plugin_osubot/draw/info.py +17 -5
- nonebot_plugin_osubot/draw/rating.py +1 -2
- nonebot_plugin_osubot/draw/score.py +19 -7
- nonebot_plugin_osubot/draw/utils.py +13 -1
- nonebot_plugin_osubot/file.py +3 -0
- nonebot_plugin_osubot/matcher/bp.py +2 -3
- nonebot_plugin_osubot/matcher/bp_analyze.py +2 -2
- nonebot_plugin_osubot/matcher/history.py +1 -1
- nonebot_plugin_osubot/matcher/medal.py +3 -3
- nonebot_plugin_osubot/matcher/recommend.py +1 -1
- nonebot_plugin_osubot/matcher/score.py +1 -1
- nonebot_plugin_osubot/schema/user.py +8 -0
- {nonebot_plugin_osubot-6.17.1.dist-info → nonebot_plugin_osubot-6.18.1.dist-info}/METADATA +1 -1
- {nonebot_plugin_osubot-6.17.1.dist-info → nonebot_plugin_osubot-6.18.1.dist-info}/RECORD +17 -17
- {nonebot_plugin_osubot-6.17.1.dist-info → nonebot_plugin_osubot-6.18.1.dist-info}/WHEEL +0 -0
nonebot_plugin_osubot/api.py
CHANGED
|
@@ -370,8 +370,8 @@ async def get_sayo_map_info(sid, t=0) -> SayoBeatmap:
|
|
|
370
370
|
async def get_map_bg(mapid, sid, bg_name) -> BytesIO:
|
|
371
371
|
res = await get_first_response(
|
|
372
372
|
[
|
|
373
|
-
f"https://
|
|
374
|
-
f"https://
|
|
373
|
+
f"https://catboy.best/preview/background/{mapid}",
|
|
374
|
+
f"https://api.nerinyan.moe/bg/{mapid}",
|
|
375
375
|
f"https://dl.sayobot.cn/beatmaps/files/{sid}/{bg_name}",
|
|
376
376
|
]
|
|
377
377
|
)
|
nonebot_plugin_osubot/draw/bp.py
CHANGED
|
@@ -7,10 +7,10 @@ from PIL import ImageDraw, UnidentifiedImageError
|
|
|
7
7
|
|
|
8
8
|
from ..pp import cal_pp
|
|
9
9
|
from ..mods import get_mods_list
|
|
10
|
-
from ..api import get_user_scores, get_user_info_data
|
|
11
10
|
from ..exceptions import NetworkError
|
|
12
11
|
from ..schema.score import Mod, UnifiedScore
|
|
13
12
|
from .score import cal_legacy_acc, cal_legacy_rank
|
|
13
|
+
from ..api import get_user_scores, get_user_info_data
|
|
14
14
|
from ..file import map_path, get_pfm_img, download_osu
|
|
15
15
|
from .utils import draw_fillet, draw_fillet2, open_user_icon, filter_scores_with_regex
|
|
16
16
|
from .static import BgImg, Image, BgImg1, ModsDict, RankDict, Torus_Regular_20, Torus_Regular_25, Torus_SemiBold_25
|
|
@@ -34,7 +34,7 @@ async def draw_bp(
|
|
|
34
34
|
if mods:
|
|
35
35
|
mods_ls = get_mods_list(scores, mods)
|
|
36
36
|
if low_bound > len(mods_ls):
|
|
37
|
-
raise NetworkError(f
|
|
37
|
+
raise NetworkError(f"未找到开启 {'|'.join(mods)} Mods的成绩")
|
|
38
38
|
if high_bound > len(mods_ls):
|
|
39
39
|
mods_ls = mods_ls[low_bound - 1 :]
|
|
40
40
|
else:
|
|
@@ -10,14 +10,13 @@ from ..exceptions import NetworkError
|
|
|
10
10
|
from ..database.models import InfoData
|
|
11
11
|
from ..api import get_random_bg, get_user_info_data
|
|
12
12
|
from .utils import info_calc, draw_fillet, update_icon, open_user_icon
|
|
13
|
-
from ..file import user_cache_path, badge_cache_path, make_badge_cache_file
|
|
13
|
+
from ..file import get_projectimg, team_cache_path, user_cache_path, badge_cache_path, make_badge_cache_file
|
|
14
14
|
from .static import (
|
|
15
15
|
Image,
|
|
16
16
|
InfoImg,
|
|
17
17
|
ExpLeftBg,
|
|
18
18
|
ExpRightBg,
|
|
19
19
|
ExpCenterBg,
|
|
20
|
-
SupporterBg,
|
|
21
20
|
Torus_Regular_20,
|
|
22
21
|
Torus_Regular_25,
|
|
23
22
|
Torus_Regular_30,
|
|
@@ -142,14 +141,27 @@ async def draw_info(uid: Union[int, str], mode: str, day: int, source: str) -> B
|
|
|
142
141
|
badges_img = Image.open(badges_path).convert("RGBA").resize((86, 40))
|
|
143
142
|
except UnidentifiedImageError:
|
|
144
143
|
badges_path.unlink()
|
|
145
|
-
raise NetworkError("badges图片下载错误,请重试!")
|
|
144
|
+
raise NetworkError("badges 图片下载错误,请重试!")
|
|
146
145
|
im.alpha_composite(badges_img, (length, height))
|
|
147
146
|
# 地区
|
|
148
147
|
country_bg = Image.open(country).convert("RGBA").resize((80, 54))
|
|
149
148
|
im.alpha_composite(country_bg, (400, 394))
|
|
149
|
+
if info.team and info.team.flag_url:
|
|
150
|
+
team_path = team_cache_path / f"{info.team.id}.png"
|
|
151
|
+
if not team_path.exists():
|
|
152
|
+
team_img = await get_projectimg(info.team.flag_url)
|
|
153
|
+
team_img = Image.open(team_img).convert("RGBA")
|
|
154
|
+
team_img.save(team_path)
|
|
155
|
+
try:
|
|
156
|
+
team_img = Image.open(team_path).convert("RGBA").resize((108, 54))
|
|
157
|
+
im.alpha_composite(team_img, (400, 280))
|
|
158
|
+
except UnidentifiedImageError:
|
|
159
|
+
team_path.unlink()
|
|
160
|
+
raise NetworkError("team 图片下载错误,请重试!")
|
|
161
|
+
draw.text((515, 300), info.team.name, font=Torus_Regular_30, anchor="lt")
|
|
150
162
|
# supporter
|
|
151
|
-
if info.is_supporter:
|
|
152
|
-
|
|
163
|
+
# if info.is_supporter:
|
|
164
|
+
# im.alpha_composite(SupporterBg.resize((54, 54)), (400, 280))
|
|
153
165
|
# 经验
|
|
154
166
|
if statistics.level.progress != 0:
|
|
155
167
|
im.alpha_composite(ExpLeftBg, (50, 646))
|
|
@@ -152,8 +152,7 @@ async def draw_rating(match_id: str, algorithm: str = "osuplus") -> bytes:
|
|
|
152
152
|
|
|
153
153
|
draw.text(
|
|
154
154
|
(350 + x_offset, 341 + base_y),
|
|
155
|
-
f"Total Score: {score_to_3digit(player_stats.total_score)}"
|
|
156
|
-
f" ({score_to_3digit(player_stats.average_score)})",
|
|
155
|
+
f"Total Score: {score_to_3digit(player_stats.total_score)} ({score_to_3digit(player_stats.average_score)})",
|
|
157
156
|
font=Torus_SemiBold_20,
|
|
158
157
|
fill="#bbbbbb",
|
|
159
158
|
anchor="lm",
|
|
@@ -3,7 +3,7 @@ from io import BytesIO
|
|
|
3
3
|
from typing import Optional
|
|
4
4
|
from datetime import datetime, timedelta
|
|
5
5
|
|
|
6
|
-
from PIL import ImageDraw, ImageFilter, ImageEnhance, ImageSequence
|
|
6
|
+
from PIL import ImageDraw, ImageFilter, ImageEnhance, ImageSequence, UnidentifiedImageError
|
|
7
7
|
|
|
8
8
|
from ..info import get_bg
|
|
9
9
|
from ..mods import get_mods_list
|
|
@@ -12,9 +12,9 @@ from ..schema.user import UnifiedUser
|
|
|
12
12
|
from ..schema import Beatmap, NewScore
|
|
13
13
|
from ..beatmap_stats_moder import with_mods
|
|
14
14
|
from ..pp import cal_pp, get_ss_pp, get_if_pp_ss_pp
|
|
15
|
-
from ..file import map_path, download_osu, user_cache_path
|
|
16
15
|
from ..schema.score import Mod, UnifiedScore, NewStatistics
|
|
17
16
|
from ..api import osu_api, get_user_scores, get_user_info_data, get_ppysb_map_scores
|
|
17
|
+
from ..file import map_path, download_osu, get_projectimg, team_cache_path, user_cache_path
|
|
18
18
|
from .utils import (
|
|
19
19
|
crop_bg,
|
|
20
20
|
draw_acc,
|
|
@@ -32,7 +32,6 @@ from .static import (
|
|
|
32
32
|
Image,
|
|
33
33
|
IconLs,
|
|
34
34
|
Venera_75,
|
|
35
|
-
SupporterBg,
|
|
36
35
|
Torus_Regular_20,
|
|
37
36
|
Torus_Regular_30,
|
|
38
37
|
Torus_Regular_75,
|
|
@@ -164,7 +163,7 @@ async def get_score_data(
|
|
|
164
163
|
score = i
|
|
165
164
|
break
|
|
166
165
|
else:
|
|
167
|
-
raise NetworkError(f
|
|
166
|
+
raise NetworkError(f"未找到开启 {'|'.join(mods)} Mods的成绩")
|
|
168
167
|
else:
|
|
169
168
|
score_ls.sort(key=lambda x: x.total_score, reverse=True)
|
|
170
169
|
score = score_ls[0]
|
|
@@ -265,9 +264,22 @@ async def draw_score_pic(score_info: UnifiedScore, info: UnifiedUser, map_json,
|
|
|
265
264
|
country = osufile / "flags" / f"{info.country_code}.png"
|
|
266
265
|
country_bg = Image.open(country).convert("RGBA").resize((66, 45))
|
|
267
266
|
im.alpha_composite(country_bg, (250, 577))
|
|
267
|
+
if info.team and info.team.flag_url:
|
|
268
|
+
team_path = team_cache_path / f"{info.team.id}.png"
|
|
269
|
+
if not team_path.exists():
|
|
270
|
+
team_img = await get_projectimg(info.team.flag_url)
|
|
271
|
+
team_img = Image.open(team_img).convert("RGBA")
|
|
272
|
+
team_img.save(team_path)
|
|
273
|
+
try:
|
|
274
|
+
team_img = Image.open(team_path).convert("RGBA").resize((80, 40))
|
|
275
|
+
im.alpha_composite(team_img, (250, 640))
|
|
276
|
+
except UnidentifiedImageError:
|
|
277
|
+
team_path.unlink()
|
|
278
|
+
raise NetworkError("team 图片下载错误,请重试!")
|
|
279
|
+
draw.text((340, 660), info.team.name, font=Torus_Regular_20, anchor="lt")
|
|
268
280
|
# supporter
|
|
269
|
-
if info.is_supporter:
|
|
270
|
-
|
|
281
|
+
# if info.is_supporter:
|
|
282
|
+
# im.alpha_composite(SupporterBg.resize((40, 40)), (250, 640))
|
|
271
283
|
# 处理mania转谱cs
|
|
272
284
|
if score_info.ruleset_id == 3 and mapinfo.mode == 0:
|
|
273
285
|
temp_accuracy = mapinfo.accuracy
|
|
@@ -527,7 +539,7 @@ async def draw_score_pic(score_info: UnifiedScore, info: UnifiedUser, map_json,
|
|
|
527
539
|
draw.text(
|
|
528
540
|
(1002, 580),
|
|
529
541
|
(
|
|
530
|
-
f"{score_info.statistics.perfect / score_info.statistics.great
|
|
542
|
+
f"{score_info.statistics.perfect / score_info.statistics.great:.1f}:1"
|
|
531
543
|
if (score_info.statistics.great or 0) != 0
|
|
532
544
|
else "∞:1"
|
|
533
545
|
),
|
|
@@ -13,7 +13,7 @@ from ..schema.user import UnifiedUser
|
|
|
13
13
|
from ..schema import SeasonalBackgrounds
|
|
14
14
|
from ..api import safe_async_get, get_seasonal_bg
|
|
15
15
|
from .static import Path, Image, Stars, ColorArr, np, osufile
|
|
16
|
-
from ..file import map_path, download_osu, get_projectimg, user_cache_path
|
|
16
|
+
from ..file import map_path, download_osu, get_projectimg, user_cache_path, team_cache_path
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
def draw_fillet(img, radii):
|
|
@@ -268,6 +268,18 @@ async def update_icon(info: UnifiedUser):
|
|
|
268
268
|
with open(path / f"icon.{info.avatar_url.split('.')[-1]}", "wb") as f:
|
|
269
269
|
f.write(user_icon.getvalue())
|
|
270
270
|
|
|
271
|
+
team_path = team_cache_path / f"{info.team.id}.png"
|
|
272
|
+
if team_path.exists():
|
|
273
|
+
modified_time = team_path.stat().st_mtime
|
|
274
|
+
modified_datetime = datetime.datetime.fromtimestamp(modified_time)
|
|
275
|
+
time_diff = datetime.datetime.now() - modified_datetime
|
|
276
|
+
# 判断文件是否创建超过一天
|
|
277
|
+
if time_diff > datetime.timedelta(days=1):
|
|
278
|
+
team_path.unlink()
|
|
279
|
+
team_icon = await get_projectimg(info.team.flag_url)
|
|
280
|
+
with open(team_path, "wb") as f:
|
|
281
|
+
f.write(team_icon.getvalue())
|
|
282
|
+
|
|
271
283
|
|
|
272
284
|
async def update_map(set_id, map_id):
|
|
273
285
|
path = map_path / str(set_id)
|
nonebot_plugin_osubot/file.py
CHANGED
|
@@ -16,6 +16,7 @@ osufile = Path(__file__).parent / "osufile"
|
|
|
16
16
|
map_path = Path() / "data" / "osu" / "map"
|
|
17
17
|
user_cache_path = Path() / "data" / "osu" / "user"
|
|
18
18
|
badge_cache_path = Path() / "data" / "osu" / "badge"
|
|
19
|
+
team_cache_path = Path() / "data" / "osu" / "team"
|
|
19
20
|
api_ls = [
|
|
20
21
|
"https://api.chimu.moe/v1/download/",
|
|
21
22
|
"https://osu.direct/api/d/",
|
|
@@ -30,6 +31,8 @@ if not user_cache_path.exists():
|
|
|
30
31
|
user_cache_path.mkdir(parents=True, exist_ok=True)
|
|
31
32
|
if not badge_cache_path.exists():
|
|
32
33
|
badge_cache_path.mkdir(parents=True, exist_ok=True)
|
|
34
|
+
if not team_cache_path.exists():
|
|
35
|
+
team_cache_path.mkdir(parents=True, exist_ok=True)
|
|
33
36
|
|
|
34
37
|
|
|
35
38
|
async def download_map(setid: int) -> Optional[Path]:
|
|
@@ -42,7 +42,7 @@ async def _bp(state: T_State):
|
|
|
42
42
|
lazer_mode = "lazer模式下" if state["is_lazer"] else "stable模式下"
|
|
43
43
|
mods = f" mod:{state['mods']}" if state["mods"] else ""
|
|
44
44
|
await UniMessage.text(
|
|
45
|
-
f"在查找用户:{state['username']} {NGM[state['mode']]}模式
|
|
45
|
+
f"在查找用户:{state['username']} {NGM[state['mode']]}模式 bp{best} {lazer_mode}{mods}时 {str(e)}"
|
|
46
46
|
).finish(reply_to=True)
|
|
47
47
|
await UniMessage.image(raw=data).finish(reply_to=True)
|
|
48
48
|
|
|
@@ -74,8 +74,7 @@ async def _pfm(state: T_State):
|
|
|
74
74
|
lazer_mode = "lazer模式下" if state["is_lazer"] else "stable模式下"
|
|
75
75
|
mods = f" mod:{state['mods']}" if state["mods"] else ""
|
|
76
76
|
await UniMessage.text(
|
|
77
|
-
f"在查找用户:{state['username']} {NGM[state['mode']]}模式"
|
|
78
|
-
f" bp{state['range']} {lazer_mode}{mods}时 {str(e)}"
|
|
77
|
+
f"在查找用户:{state['username']} {NGM[state['mode']]}模式 bp{state['range']} {lazer_mode}{mods}时 {str(e)}"
|
|
79
78
|
).finish(reply_to=True)
|
|
80
79
|
await UniMessage.image(raw=data).finish(reply_to=True)
|
|
81
80
|
|
|
@@ -43,7 +43,7 @@ async def _(event: Event, state: T_State):
|
|
|
43
43
|
)
|
|
44
44
|
except NetworkError as e:
|
|
45
45
|
await UniMessage.text(
|
|
46
|
-
f"在查找用户:{state['username']} {NGM[state['mode']]}模式
|
|
46
|
+
f"在查找用户:{state['username']} {NGM[state['mode']]}模式 {lazer_mode}时 {str(e)}"
|
|
47
47
|
).finish(reply_to=True)
|
|
48
48
|
score_ls = [NewScore(**i) for i in bp_info]
|
|
49
49
|
for score in score_ls:
|
|
@@ -106,6 +106,6 @@ async def _(event: Event, state: T_State):
|
|
|
106
106
|
mapper_pp_data.append({"name": user_dic.get(mapper, ""), "value": round(pp, 2)})
|
|
107
107
|
if len(mapper_pp_data) > 20:
|
|
108
108
|
mapper_pp_data = mapper_pp_data[:20]
|
|
109
|
-
name = f
|
|
109
|
+
name = f"{score_ls[0].user.username} {NGM[state['mode']]} 模式 "
|
|
110
110
|
byt = await draw_bpa_plot(name, pp_ls, length_ls, pp_data, mapper_pp_data)
|
|
111
111
|
await UniMessage.image(raw=byt).finish(reply_to=True)
|
|
@@ -33,5 +33,5 @@ async def _info(state: T_State):
|
|
|
33
33
|
pp_ls = [pp_ls[i] for i in filtered_indices]
|
|
34
34
|
date_ls = [date_ls[i] for i in filtered_indices]
|
|
35
35
|
rank_ls = [rank_ls[i] for i in filtered_indices]
|
|
36
|
-
byt = await draw_history_plot(pp_ls, date_ls, rank_ls, f
|
|
36
|
+
byt = await draw_history_plot(pp_ls, date_ls, rank_ls, f"{user.osu_name} {NGM[state['mode']]} pp/rank history")
|
|
37
37
|
await UniMessage.image(raw=byt).finish(reply_to=True)
|
|
@@ -60,7 +60,7 @@ async def _(msg: Message = CommandArg()):
|
|
|
60
60
|
words = re.sub(style_regex, "", words)
|
|
61
61
|
words = re.sub(r"<[^>]+>", "", words)
|
|
62
62
|
if medal_data["PackID"]:
|
|
63
|
-
words += f
|
|
63
|
+
words += f"\nhttps://osu.ppy.sh/beatmaps/packs/{medal_data['PackID'].rstrip(',,,')}"
|
|
64
64
|
await (UniMessage.image(url=medal_data["Link"]) + words).send(reply_to=True)
|
|
65
65
|
if medal_data["beatmaps"]:
|
|
66
66
|
msg = UniMessage()
|
|
@@ -68,7 +68,7 @@ async def _(msg: Message = CommandArg()):
|
|
|
68
68
|
medal_data["beatmaps"] = medal_data["beatmaps"][:5]
|
|
69
69
|
for beatmap in medal_data["beatmaps"]:
|
|
70
70
|
msg += (
|
|
71
|
-
f
|
|
72
|
-
+ f
|
|
71
|
+
f"{beatmap['SongTitle']} [{beatmap['DifficultyName']}]\n{beatmap['Difficulty']}⭐\n"
|
|
72
|
+
+ f"https://osu.ppy.sh/b/{beatmap['BeatmapID']}"
|
|
73
73
|
)
|
|
74
74
|
await msg.send()
|
|
@@ -52,7 +52,7 @@ async def handle_recommend(state: T_State, matcher: type[Matcher]):
|
|
|
52
52
|
bg = ""
|
|
53
53
|
logger.error(f"出现问题: 有问题的是{bid}, {sid}")
|
|
54
54
|
s = (
|
|
55
|
-
f
|
|
55
|
+
f"推荐的铺面是{recommend_map.mapName} ⭐{round(recommend_map.difficulty, 2)}\n{''.join(recommend_map.mod)}\n"
|
|
56
56
|
f"预计pp为{round(recommend_map.predictPP, 2)}\n提升概率为{round(recommend_map.passPercent * 100, 2)}%\n"
|
|
57
57
|
f"{recommend_map.mapLink}\nhttps://kitsu.moe/api/d/{sid}\n"
|
|
58
58
|
f"https://txy1.sayobot.cn/beatmaps/download/novideo/{sid}"
|
|
@@ -29,6 +29,6 @@ async def _score(state: T_State):
|
|
|
29
29
|
lazer_mode = "lazer模式下" if state["is_lazer"] else "stable模式下"
|
|
30
30
|
mods = f" mod:{state['mods']}" if state["mods"] else ""
|
|
31
31
|
await UniMessage.text(
|
|
32
|
-
f"在查找用户:{state['username']} {NGM[state['mode']]}模式
|
|
32
|
+
f"在查找用户:{state['username']} {NGM[state['mode']]}模式 {lazer_mode}{mods} 成绩时 {str(e)}"
|
|
33
33
|
).finish(reply_to=True)
|
|
34
34
|
await UniMessage.image(raw=data).finish(reply_to=True)
|
|
@@ -85,6 +85,13 @@ class User(UserCompact):
|
|
|
85
85
|
statistics_rulesets: Optional[StatisticsRulesets] = None
|
|
86
86
|
|
|
87
87
|
|
|
88
|
+
class Team(Base):
|
|
89
|
+
flag_url: Optional[str] = None
|
|
90
|
+
id: int
|
|
91
|
+
name: str
|
|
92
|
+
short_name: str
|
|
93
|
+
|
|
94
|
+
|
|
88
95
|
class UnifiedUser(Base):
|
|
89
96
|
avatar_url: str
|
|
90
97
|
country_code: str
|
|
@@ -93,3 +100,4 @@ class UnifiedUser(Base):
|
|
|
93
100
|
is_supporter: bool
|
|
94
101
|
badges: Optional[list[Badge]] = None
|
|
95
102
|
statistics: Optional[UserStatistics] = None
|
|
103
|
+
team: Optional[Team] = None
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
nonebot_plugin_osubot/__init__.py,sha256=Q-mTTnOIdKiKG6JrVm-kqpPrAhOP9lWyiKHNRqA7gpc,1478
|
|
2
|
-
nonebot_plugin_osubot/api.py,sha256=
|
|
2
|
+
nonebot_plugin_osubot/api.py,sha256=lzp86uRbnt_Vd9qg2kIHy26EB7ODFGKkbNA6H2iJNh0,14933
|
|
3
3
|
nonebot_plugin_osubot/beatmap_stats_moder.py,sha256=mNNTufc-gvO4NdYa3TnealSZI4-LBoiTlb599SeLBck,2915
|
|
4
4
|
nonebot_plugin_osubot/config.py,sha256=Ub2s5Ny09-d1ZwT6x8cirB6zWy0brtO-oZV3W0qEM5Q,311
|
|
5
5
|
nonebot_plugin_osubot/database/__init__.py,sha256=7CDo9xU_DGLQ6uTj_mU_Px92phg_DMU5mP6WvgOxFLY,101
|
|
6
6
|
nonebot_plugin_osubot/database/models.py,sha256=VF_MxR70eRbiIHtqWjpE_Vea4xR38X0RJiQIO96mjsY,1595
|
|
7
7
|
nonebot_plugin_osubot/draw/__init__.py,sha256=dRELA2Vi4gTe8v48q0iHXLDOEj7Unk-_ChDXJp3qkhg,265
|
|
8
8
|
nonebot_plugin_osubot/draw/bmap.py,sha256=GzEiUEkcwdX6ixZ-qmM8TQQf0imD8taur3eX4lJ5wVg,5128
|
|
9
|
-
nonebot_plugin_osubot/draw/bp.py,sha256=
|
|
9
|
+
nonebot_plugin_osubot/draw/bp.py,sha256=_l7UdicosUwD6HdaI5U0AWgJBwWNAfJqvzC9DzXz_Pg,9172
|
|
10
10
|
nonebot_plugin_osubot/draw/catch_preview.py,sha256=uSYoTqfdxRy4anpH9Uhj8NntPo008pzw1t6xRMTBBkI,1397
|
|
11
11
|
nonebot_plugin_osubot/draw/catch_preview_templates/css/style.css,sha256=2I1VwycLhKJMxwjHj19zAV6MBkFMLu_qLunpoiRlGlM,3919
|
|
12
12
|
nonebot_plugin_osubot/draw/catch_preview_templates/js/beatmap/beatmap.js,sha256=xh6RUz3D40-HJHu0KGqac_eAIHGoAR12bF58V9ft7iQ,5784
|
|
@@ -38,36 +38,36 @@ nonebot_plugin_osubot/draw/catch_preview_templates/js/viewbox.js,sha256=RPsUyoKN
|
|
|
38
38
|
nonebot_plugin_osubot/draw/catch_preview_templates/js/zip.min.js,sha256=pQmrVxuGCMeLS-XS3QsVhzjwap28fr9Ya083uPlg1sM,86405
|
|
39
39
|
nonebot_plugin_osubot/draw/catch_preview_templates/pic.html,sha256=kmwzKgqWzWRPAlg0eqVibSZpC9NVo-U9gGrxRl3D6m0,3086
|
|
40
40
|
nonebot_plugin_osubot/draw/echarts.py,sha256=OzL_397yWrDAIXsEWf72hAiqdIUBz1D182cli6ORD6s,1037
|
|
41
|
-
nonebot_plugin_osubot/draw/info.py,sha256=
|
|
41
|
+
nonebot_plugin_osubot/draw/info.py,sha256=i2YcJmSdTpwhZl_nDe7GJv4jQTB8_9oBfpq2Zw2hwo0,11162
|
|
42
42
|
nonebot_plugin_osubot/draw/map.py,sha256=4M8xRd0dIbC5g1s8I4eTZ3vRglM6r_TSznFOZ62K2wk,8654
|
|
43
43
|
nonebot_plugin_osubot/draw/match_history.py,sha256=GBJl6lAA27U7NSMC2isEzD_YsoIPAeG6ijDu7Oflcl0,997
|
|
44
|
-
nonebot_plugin_osubot/draw/rating.py,sha256=
|
|
45
|
-
nonebot_plugin_osubot/draw/score.py,sha256=
|
|
44
|
+
nonebot_plugin_osubot/draw/rating.py,sha256=pA7mGLI4IujmYB6kQf_tSkR7mZGpUAVLRLyaAsZhqTM,20397
|
|
45
|
+
nonebot_plugin_osubot/draw/score.py,sha256=bEQq01UCdOeIE_m35nKuNYGk84bzfVjAsQZfleQ1yTU,27223
|
|
46
46
|
nonebot_plugin_osubot/draw/static.py,sha256=2rznsXZTcKggQ5JSpsJg4y6uWP4e-Y40U7v_QAwLT4Q,3969
|
|
47
47
|
nonebot_plugin_osubot/draw/taiko_preview.py,sha256=tqhuHSdxUJEuXqKHMJDeSLdusuJhSnMMiaG5FbUnaJw,11441
|
|
48
48
|
nonebot_plugin_osubot/draw/templates/bpa_chart.html,sha256=cnpM0qRvvyCMTRP-mIOABQlaaqxQwG5kLUxlo4h7F7w,7012
|
|
49
49
|
nonebot_plugin_osubot/draw/templates/echarts.min.js,sha256=IF32ooP8NPIzQg_fs7lVHpwG92JcCPE1TZAEyFSgGZU,1022939
|
|
50
50
|
nonebot_plugin_osubot/draw/templates/mod_chart.html,sha256=Iz71KM5v9z_Rt2vqJ5WIZumRIHgDfcGIUmWGvVGZ-nQ,1508
|
|
51
51
|
nonebot_plugin_osubot/draw/templates/pp_rank_line_chart.html,sha256=Gyf-GR8ZBlWQTks0TlB3M8EWUBMVwiUaesFAmDISxLo,1417
|
|
52
|
-
nonebot_plugin_osubot/draw/utils.py,sha256=
|
|
52
|
+
nonebot_plugin_osubot/draw/utils.py,sha256=mwP_wTnuRnp9FrlCqUFvCX2p0_Lm5jQ73PgjjhtF6EA,14205
|
|
53
53
|
nonebot_plugin_osubot/exceptions.py,sha256=N_FsEk-9Eu2QnuznhdfWn6OoyA1HH73Q7bUaY89gVi0,40
|
|
54
|
-
nonebot_plugin_osubot/file.py,sha256=
|
|
54
|
+
nonebot_plugin_osubot/file.py,sha256=GhG54EdVsxFf8_8GZOPh4YGvw9iw5bAX9JFz4Mg4kMg,4379
|
|
55
55
|
nonebot_plugin_osubot/info/__init__.py,sha256=I7YlMQiuHExEeJWqyzZb2I-Vl2uql3Py2LdhSH2Z9N0,136
|
|
56
56
|
nonebot_plugin_osubot/info/bg.py,sha256=Icua4bS38k0c-WbLUjhfS4IXOF83bgyu_oa2HwX4ZEQ,1541
|
|
57
57
|
nonebot_plugin_osubot/info/bind.py,sha256=b2ua625hbYym7rpb-kLBB-VDP5YWFdmT5RweM58ggWw,4934
|
|
58
58
|
nonebot_plugin_osubot/mania/__init__.py,sha256=XRPn563jDJiPohFekcoFFCqCJYznb-6uORneioZv4xI,5534
|
|
59
59
|
nonebot_plugin_osubot/matcher/__init__.py,sha256=yID7QcdQF6_Mouwbej3JwYUBbKSU3VQdrjq6B1Fz9P8,1331
|
|
60
60
|
nonebot_plugin_osubot/matcher/bind.py,sha256=QQJc2S7XFo5tu4CPloIET6fKaeiQixgb8M7QvULV6E0,2834
|
|
61
|
-
nonebot_plugin_osubot/matcher/bp.py,sha256=
|
|
62
|
-
nonebot_plugin_osubot/matcher/bp_analyze.py,sha256=
|
|
61
|
+
nonebot_plugin_osubot/matcher/bp.py,sha256=ULNVgrlRCe9w6N7yC7Yw3Y-OSJQKR8AZfBkB5jToOPQ,3983
|
|
62
|
+
nonebot_plugin_osubot/matcher/bp_analyze.py,sha256=S1dhYiGqtPQapJt4PB5mNKfpPbOpVNAqDIToNEJVpSY,3949
|
|
63
63
|
nonebot_plugin_osubot/matcher/getbg.py,sha256=Ar2yIST556MYRxzuXCLSDAMAmESRENN1fCty-kdH7PI,699
|
|
64
64
|
nonebot_plugin_osubot/matcher/guess.py,sha256=iE5oRZ3mDTC_wcjLJTyyAWlmnDzkAgzGN5rvoTIn0uM,24093
|
|
65
|
-
nonebot_plugin_osubot/matcher/history.py,sha256=
|
|
65
|
+
nonebot_plugin_osubot/matcher/history.py,sha256=ZYkVJHdXuVJmhovRhwxFdqNp0o2uJJOACAZhhutyS3w,1577
|
|
66
66
|
nonebot_plugin_osubot/matcher/info.py,sha256=8CJHTOMTx_nzJ4ZwXo6ZfBwCuO3DtLprRX7jnMtPilk,858
|
|
67
67
|
nonebot_plugin_osubot/matcher/map.py,sha256=sFpOoFv63y-NOkCJhE6aW0DRYDl_8SoQOPsdq50QxT0,1404
|
|
68
68
|
nonebot_plugin_osubot/matcher/map_convert.py,sha256=YfR-_u5F_GCdn2mv9ZvMEpfxTc63f9nmihIUdu54eN8,5716
|
|
69
69
|
nonebot_plugin_osubot/matcher/match.py,sha256=uyrm8I_WgHK2ya1q46AUxNk_cQiKKh7GKlUzrrG1o7w,472
|
|
70
|
-
nonebot_plugin_osubot/matcher/medal.py,sha256=
|
|
70
|
+
nonebot_plugin_osubot/matcher/medal.py,sha256=OlJTwBvh0kGx_KWhjksozI910c8QdaVFBgtnwqLVyLU,2965
|
|
71
71
|
nonebot_plugin_osubot/matcher/mu.py,sha256=l3Ebz47o46EvN2nvo9-zzQI4CTaLMcd5XW0qljqSGIM,445
|
|
72
72
|
nonebot_plugin_osubot/matcher/osu_help.py,sha256=64rOkYEOETvU8AF__0xLZjVRs3cTac0D1XEultPK_kM,728
|
|
73
73
|
nonebot_plugin_osubot/matcher/osudl.py,sha256=yLEblYnLprTf2T00FiRWJ8CuCd0IHyUY9Ka68yAKOXo,872
|
|
@@ -75,8 +75,8 @@ nonebot_plugin_osubot/matcher/pr.py,sha256=WAVXsercYxsB7L576QjaBmUz4zoMcpC73Bnlr
|
|
|
75
75
|
nonebot_plugin_osubot/matcher/preview.py,sha256=n9wgdNG9SF_JQ78nShTsTElJkBDJQr67DRc8Q9sVcCo,1896
|
|
76
76
|
nonebot_plugin_osubot/matcher/rank.py,sha256=sFEim3cR_vswzLmbagjqy-ypolcprAxQpawiSEcFqEI,3619
|
|
77
77
|
nonebot_plugin_osubot/matcher/rating.py,sha256=JY1Q1ELU3Y1FhQ7kVWVkgVsYEVxkAcxjsoMcwC_u234,450
|
|
78
|
-
nonebot_plugin_osubot/matcher/recommend.py,sha256=
|
|
79
|
-
nonebot_plugin_osubot/matcher/score.py,sha256=
|
|
78
|
+
nonebot_plugin_osubot/matcher/recommend.py,sha256=1LcjACkiPdZV0VqXbZx-oTytKr8lYxg1q0zZuXowWTc,2678
|
|
79
|
+
nonebot_plugin_osubot/matcher/score.py,sha256=Nk6dpDlszKJKdboTSQRBf-wMGioHIPqKSVWrnT0Xbns,1212
|
|
80
80
|
nonebot_plugin_osubot/matcher/update.py,sha256=MHpxoJmU0hKW82XuM9YpyCxUUjjiNKwejnRgYwueR4Q,3168
|
|
81
81
|
nonebot_plugin_osubot/matcher/update_mode.py,sha256=0Wy6Y1-rN7XcqBZyo37mYFdixq-4HxCwZftUaiYhZqE,1602
|
|
82
82
|
nonebot_plugin_osubot/matcher/url_match.py,sha256=opx4DYSQ83tk0qlMOBirl4TC49WXHgMZ04lMr9NCHNs,746
|
|
@@ -401,8 +401,8 @@ nonebot_plugin_osubot/schema/match.py,sha256=lR3pGNVR9K_5GZAdOLG6Ki-W3fwJvgMlNhY
|
|
|
401
401
|
nonebot_plugin_osubot/schema/ppysb/__init__.py,sha256=JK2Z4n44gUJPVKdETMJYJ5uIw-4a8T50y6j5n-YrlYM,1375
|
|
402
402
|
nonebot_plugin_osubot/schema/sayo_beatmap.py,sha256=lS1PQZ-HvHl0VhkzlI0-pNLeJrLYWVqmKAo6xZr5I2U,959
|
|
403
403
|
nonebot_plugin_osubot/schema/score.py,sha256=zHU-w2e7RzMDL8vdPkX5vggcqalBo83JTvu96abcflo,3124
|
|
404
|
-
nonebot_plugin_osubot/schema/user.py,sha256=
|
|
404
|
+
nonebot_plugin_osubot/schema/user.py,sha256=sxNmqymG_kIVuGuzfchSv9UML6NPG70cqo2_h5xDIpM,2250
|
|
405
405
|
nonebot_plugin_osubot/utils/__init__.py,sha256=pyv8XxBcCOeQVDj1E4dgvktzcefgQXfKBlarsYGx1sg,815
|
|
406
|
-
nonebot_plugin_osubot-6.
|
|
407
|
-
nonebot_plugin_osubot-6.
|
|
408
|
-
nonebot_plugin_osubot-6.
|
|
406
|
+
nonebot_plugin_osubot-6.18.1.dist-info/WHEEL,sha256=B19PGBCYhWaz2p_UjAoRVh767nYQfk14Sn4TpIZ-nfU,87
|
|
407
|
+
nonebot_plugin_osubot-6.18.1.dist-info/METADATA,sha256=8mVJgIDqkt_Ps9LK9i018HXK-OfPLmJri2RmJp15wZk,4476
|
|
408
|
+
nonebot_plugin_osubot-6.18.1.dist-info/RECORD,,
|
|
File without changes
|