From f5ca17ebd7a5c0c88a9d2ffc0c1425417a3a845c Mon Sep 17 00:00:00 2001 From: RBAmeto <46624927+RBAmeto@users.noreply.github.com> Date: Wed, 11 Sep 2024 00:11:34 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=8A=BD=E5=8D=A1=E9=93=BE=E6=8E=A5=20(#35)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 更新抽卡记录网址 * 修复导入抽卡链接时uid获取问题 --- StarRailUID/sruid_utils/api/mys/api.py | 2 +- StarRailUID/starrailuid_gachalog/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/StarRailUID/sruid_utils/api/mys/api.py b/StarRailUID/sruid_utils/api/mys/api.py index 36393d5..25130a0 100644 --- a/StarRailUID/sruid_utils/api/mys/api.py +++ b/StarRailUID/sruid_utils/api/mys/api.py @@ -53,7 +53,7 @@ ROGUE_LOCUST_INFO_URL = ( f"{NEW_URL}/game_record/app/hkrpg/api/rogue_locust" # 角色寰宇蝗灾信息接口 ) -STAR_RAIL_GACHA_LOG_URL = f"{OLD_URL}/common/gacha_record/api/getGachaLog" +STAR_RAIL_GACHA_LOG_URL = f"https://public-operation-hkrpg.mihoyo.com/common/gacha_record/api/getGachaLog" STAR_RAIL_GACHA_LOG_URL_OS = f"{OS_OLD_URL}/common/gacha_record/api/getGachaLog" GET_FP_URL = "https://public-data-api.mihoyo.com/device-fp/api/getFp" diff --git a/StarRailUID/starrailuid_gachalog/__init__.py b/StarRailUID/starrailuid_gachalog/__init__.py index bb46435..327d338 100644 --- a/StarRailUID/starrailuid_gachalog/__init__.py +++ b/StarRailUID/starrailuid_gachalog/__init__.py @@ -27,7 +27,7 @@ async def send_gacha_log_card_info(bot: Bot, ev: Event): @sv_get_gachalog_by_link.on_command(f"{PREFIX}导入抽卡链接") async def get_gachalog_by_link(bot: Bot, ev: Event): await bot.logger.info("开始执行[sr导入抽卡链接]") - uid = await get_uid(bot, ev, GsBind, "sr") + uid = await get_uid(bot, ev, GsBind, "sr", False, None) if uid is None: return await bot.send(UID_HINT) gacha_url = ev.text.strip() From b2e41f2bf744f9a21640870b76a04564716b67b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wuyi=E6=97=A0=E7=96=91?= <444835641@qq.com> Date: Wed, 11 Sep 2024 10:17:46 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=F0=9F=90=9B=20=E5=AF=B9`authkey`=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- StarRailUID/starrailuid_gachalog/get_gachalogs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/StarRailUID/starrailuid_gachalog/get_gachalogs.py b/StarRailUID/starrailuid_gachalog/get_gachalogs.py index 4d28362..6fd5c9f 100644 --- a/StarRailUID/starrailuid_gachalog/get_gachalogs.py +++ b/StarRailUID/starrailuid_gachalog/get_gachalogs.py @@ -32,7 +32,7 @@ async def get_new_gachalog_by_link( url_parse = parse.parse_qs(url.query) if "authkey" not in url_parse: return {} - authkey = url_parse["authkey"][0] + authkey = parse.quote(url_parse["authkey"][0], safe='') data = await mys_api.get_gacha_log_by_link_in_authkey( uid, authkey, gacha_type, page, end_id ) From 9ca34cccc04906cea9556ff65fe1923593fbf5f6 Mon Sep 17 00:00:00 2001 From: KimigaiiWuyi <444835641@qq.com> Date: Sat, 14 Sep 2024 22:08:20 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E2=9C=A8=20=E7=BD=91=E9=A1=B5=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=8F=B0=E6=96=B0=E5=A2=9E`=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E4=BD=93=E5=8A=9B`=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../starrailuid_config/config_default.py | 7 ++- StarRailUID/starrailuid_stamina/__init__.py | 18 +++++--- .../starrailuid_stamina/draw_stamina_card.py | 8 ++-- .../starrailuid_stamina/stamina_text.py | 11 ++--- StarRailUID/utils/mys_api.py | 43 ++++++++++--------- 5 files changed, 50 insertions(+), 37 deletions(-) diff --git a/StarRailUID/starrailuid_config/config_default.py b/StarRailUID/starrailuid_config/config_default.py index 9d413ca..24b3d64 100644 --- a/StarRailUID/starrailuid_config/config_default.py +++ b/StarRailUID/starrailuid_config/config_default.py @@ -2,9 +2,9 @@ from typing import Dict from gsuid_core.utils.plugins_config.models import ( GSC, + GsStrConfig, GsBoolConfig, GsListStrConfig, - GsStrConfig, ) CONIFG_DEFAULT: Dict[str, GSC] = { @@ -36,4 +36,9 @@ CONIFG_DEFAULT: Dict[str, GSC] = { "开启后mr功能将转为调用组件API, 可能缺失数据、数据不准", True, ), + "StaminaCheck": GsBoolConfig( + "定时检查体力(全体)", + "开启后将定时检查体力是否超过阈值", + True, + ), } diff --git a/StarRailUID/starrailuid_stamina/__init__.py b/StarRailUID/starrailuid_stamina/__init__.py index 020783c..1ae5dec 100644 --- a/StarRailUID/starrailuid_stamina/__init__.py +++ b/StarRailUID/starrailuid_stamina/__init__.py @@ -1,20 +1,21 @@ import asyncio -from gsuid_core.aps import scheduler +from gsuid_core.sv import SV from gsuid_core.bot import Bot from gsuid_core.gss import gss -from gsuid_core.logger import logger from gsuid_core.models import Event +from gsuid_core.aps import scheduler +from gsuid_core.logger import logger from gsuid_core.segment import MessageSegment -from gsuid_core.sv import SV from gsuid_core.utils.database.api import get_uid from gsuid_core.utils.database.models import GsBind -from .draw_stamina_card import get_stamina_img from .notice import get_notice_list -from .stamina_text import get_stamina_text -from ..utils.error_reply import UID_HINT from ..utils.sr_prefix import PREFIX +from ..utils.error_reply import UID_HINT +from .stamina_text import get_stamina_text +from .draw_stamina_card import get_stamina_img +from ..starrailuid_config.sr_config import srconfig sv_get_stamina = SV("sr查询体力") sv_get_stamina_admin = SV("sr强制推送", pm=1) @@ -41,6 +42,11 @@ async def force_notice_job(bot: Bot, ev: Event): @scheduler.scheduled_job("cron", minute="*/30") async def sr_notice_job(): + StaminaCheck = srconfig.get_config("StaminaCheck").data + if not StaminaCheck: + logger.trace('[sr推送检查] 暂停...') + return + result = await get_notice_list() logger.info("[sr推送检查]完成!等待消息推送中...") logger.debug(result) diff --git a/StarRailUID/starrailuid_stamina/draw_stamina_card.py b/StarRailUID/starrailuid_stamina/draw_stamina_card.py index 42f02f6..558063c 100644 --- a/StarRailUID/starrailuid_stamina/draw_stamina_card.py +++ b/StarRailUID/starrailuid_stamina/draw_stamina_card.py @@ -3,14 +3,16 @@ from io import BytesIO from pathlib import Path from typing import Optional -from PIL import Image, ImageDraw import aiohttp +from PIL import Image, ImageDraw from gsuid_core.logger import logger -from gsuid_core.utils.database.models import GsBind, GsUser from gsuid_core.utils.image.convert import convert_img +from gsuid_core.utils.database.models import GsBind, GsUser +from ..utils.mys_api import mys_api from ..sruid_utils.api.mys.models import Expedition from ..starrailuid_config.sr_config import srconfig +from ..utils.image.image_tools import get_simple_bg from ..utils.error_reply import get_error as get_error_msg from ..utils.fonts.starrail_fonts import ( sr_font_22, @@ -19,8 +21,6 @@ from ..utils.fonts.starrail_fonts import ( sr_font_36, sr_font_50, ) -from ..utils.image.image_tools import get_simple_bg -from ..utils.mys_api import mys_api use_widget = srconfig.get_config("WidgetResin").data diff --git a/StarRailUID/starrailuid_stamina/stamina_text.py b/StarRailUID/starrailuid_stamina/stamina_text.py index 10a56c0..14e3943 100644 --- a/StarRailUID/starrailuid_stamina/stamina_text.py +++ b/StarRailUID/starrailuid_stamina/stamina_text.py @@ -2,8 +2,8 @@ from typing import List from gsuid_core.logger import logger -from ..utils.error_reply import get_error from ..utils.mys_api import mys_api +from ..utils.error_reply import get_error daily_im = """*数据刷新可能存在一定延迟,请以当前游戏实际数据为准 ============== @@ -28,15 +28,15 @@ async def get_stamina_text(uid: str) -> str: rec_time = "" current_stamina = dailydata.current_stamina if current_stamina < 160: - stamina_recover_time = seconds2hours(dailydata.stamina_recover_time) + recover_time = seconds2hours(dailydata.stamina_recover_time) next_stamina_rec_time = seconds2hours( 8 * 60 - ( - (dailydata.max_stamina - dailydata.current_stamina) * 8 * 60 + (max_stamina - dailydata.current_stamina) * 8 * 60 - dailydata.stamina_recover_time ) ) - rec_time = f" ({next_stamina_rec_time}/{stamina_recover_time})" + rec_time = f" ({next_stamina_rec_time}/{recover_time})" accepted_epedition_num = dailydata.accepted_expedition_num total_expedition_num = dailydata.total_expedition_num @@ -50,7 +50,8 @@ async def get_stamina_text(uid: str) -> str: finished_expedition_num += 1 else: remaining_time: str = seconds2hours(expedition.remaining_time) - expedition_info.append(f"{expedition_name} 剩余时间{remaining_time}") + _time = f"{expedition_name} 剩余时间" + expedition_info.append(f"{_time}{remaining_time}") expedition_data = "\n".join(expedition_info) return daily_im.format( diff --git a/StarRailUID/utils/mys_api.py b/StarRailUID/utils/mys_api.py index 9d85e62..73a9fff 100644 --- a/StarRailUID/utils/mys_api.py +++ b/StarRailUID/utils/mys_api.py @@ -1,34 +1,34 @@ import copy import time -from typing import Dict, Literal, Optional, Union +from typing import Dict, Union, Literal, Optional -from gsuid_core.utils.api.mys.tools import ( - generate_os_ds, - get_ds_token, - get_web_ds_token, - mys_version, -) -from gsuid_core.utils.api.mys_api import _MysApi import msgspec +from gsuid_core.utils.api.mys_api import _MysApi +from gsuid_core.utils.api.mys.tools import ( + mys_version, + get_ds_token, + generate_os_ds, + get_web_ds_token, +) from ..sruid_utils.api.mys.api import _API from ..sruid_utils.api.mys.models import ( - AbyssBossData, - AbyssData, - AbyssStoryData, - AvatarDetail, - AvatarInfo, - DailyNoteData, - GachaLog, - MonthlyAward, MysSign, - RogueData, - RogueLocustData, - RoleBasicInfo, - RoleIndex, + GachaLog, SignInfo, SignList, + AbyssData, + RogueData, + RoleIndex, + AvatarInfo, + AvatarDetail, + MonthlyAward, + AbyssBossData, + DailyNoteData, + RoleBasicInfo, WidgetStamina, + AbyssStoryData, + RogueLocustData, ) RECOGNIZE_SERVER = { @@ -216,13 +216,14 @@ class MysApi(_MysApi): HEADER["Cookie"] = ck HEADER["DS"] = generate_os_ds() header = HEADER + os_server = "prod_official_asia" data = await self.simple_sr_req( "STAR_RAIL_AVATAR_INFO_URL", uid, params={ "need_wiki": "true" if need_wiki else "false", "role_id": uid, - "server": RECOGNIZE_SERVER.get(str(uid)[0], "prod_official_asia"), + "server": RECOGNIZE_SERVER.get(str(uid)[0], os_server), }, header=header, ) From 3b5d38253656d6797bc731dfea66d7829addf932 Mon Sep 17 00:00:00 2001 From: RBAmeto <46624927+RBAmeto@users.noreply.github.com> Date: Wed, 18 Sep 2024 13:07:22 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=AF=8F=E6=97=A5?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=8A=A5=E9=94=99=20(#38)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修复每日信息报错 * Update mys_api.py --- StarRailUID/utils/mys_api.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/StarRailUID/utils/mys_api.py b/StarRailUID/utils/mys_api.py index 73a9fff..557f9b0 100644 --- a/StarRailUID/utils/mys_api.py +++ b/StarRailUID/utils/mys_api.py @@ -111,11 +111,9 @@ class MysApi(_MysApi): header["x-rpc-channel"] = "beta" device_id = await self.get_user_device_id(uid, "sr") header["x-rpc-device_id"] = "23" if device_id is None else device_id - header["x-rpc-app_version"] = "2.53.0" header["x-rpc-device_model"] = "Mi 10" fp = await self.get_user_fp(uid, "sr") header["x-rpc-device_fp"] = "Asmr489" if fp is None else fp - header["x-rpc-client_type"] = "2" header["DS"] = get_ds_token() header["Referer"] = "https://app.mihoyo.com" del header["Origin"]