This commit is contained in:
baiqwerdvd 2024-09-18 15:27:20 +08:00
commit 31f9e98c0f
No known key found for this signature in database
GPG Key ID: 7717E46E1797411A
8 changed files with 53 additions and 42 deletions

View File

@ -53,7 +53,7 @@ ROGUE_LOCUST_INFO_URL = (
f"{NEW_URL}/game_record/app/hkrpg/api/rogue_locust" # 角色寰宇蝗灾信息接口 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" 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" GET_FP_URL = "https://public-data-api.mihoyo.com/device-fp/api/getFp"

View File

@ -2,9 +2,9 @@ from typing import Dict
from gsuid_core.utils.plugins_config.models import ( from gsuid_core.utils.plugins_config.models import (
GSC, GSC,
GsStrConfig,
GsBoolConfig, GsBoolConfig,
GsListStrConfig, GsListStrConfig,
GsStrConfig,
) )
CONIFG_DEFAULT: Dict[str, GSC] = { CONIFG_DEFAULT: Dict[str, GSC] = {
@ -36,4 +36,9 @@ CONIFG_DEFAULT: Dict[str, GSC] = {
"开启后mr功能将转为调用组件API, 可能缺失数据、数据不准", "开启后mr功能将转为调用组件API, 可能缺失数据、数据不准",
True, True,
), ),
"StaminaCheck": GsBoolConfig(
"定时检查体力(全体)",
"开启后将定时检查体力是否超过阈值",
True,
),
} }

View File

@ -27,7 +27,7 @@ async def send_gacha_log_card_info(bot: Bot, ev: Event):
@sv_get_gachalog_by_link.on_command(f"{PREFIX}导入抽卡链接") @sv_get_gachalog_by_link.on_command(f"{PREFIX}导入抽卡链接")
async def get_gachalog_by_link(bot: Bot, ev: Event): async def get_gachalog_by_link(bot: Bot, ev: Event):
await bot.logger.info("开始执行[sr导入抽卡链接]") 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: if uid is None:
return await bot.send(UID_HINT) return await bot.send(UID_HINT)
gacha_url = ev.text.strip() gacha_url = ev.text.strip()

View File

@ -32,7 +32,7 @@ async def get_new_gachalog_by_link(
url_parse = parse.parse_qs(url.query) url_parse = parse.parse_qs(url.query)
if "authkey" not in url_parse: if "authkey" not in url_parse:
return {} 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( data = await mys_api.get_gacha_log_by_link_in_authkey(
uid, authkey, gacha_type, page, end_id uid, authkey, gacha_type, page, end_id
) )

View File

@ -1,20 +1,21 @@
import asyncio import asyncio
from gsuid_core.aps import scheduler from gsuid_core.sv import SV
from gsuid_core.bot import Bot from gsuid_core.bot import Bot
from gsuid_core.gss import gss from gsuid_core.gss import gss
from gsuid_core.logger import logger
from gsuid_core.models import Event 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.segment import MessageSegment
from gsuid_core.sv import SV
from gsuid_core.utils.database.api import get_uid from gsuid_core.utils.database.api import get_uid
from gsuid_core.utils.database.models import GsBind from gsuid_core.utils.database.models import GsBind
from .draw_stamina_card import get_stamina_img
from .notice import get_notice_list 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.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 = SV("sr查询体力")
sv_get_stamina_admin = SV("sr强制推送", pm=1) 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") @scheduler.scheduled_job("cron", minute="*/30")
async def sr_notice_job(): async def sr_notice_job():
StaminaCheck = srconfig.get_config("StaminaCheck").data
if not StaminaCheck:
logger.trace('[sr推送检查] 暂停...')
return
result = await get_notice_list() result = await get_notice_list()
logger.info("[sr推送检查]完成!等待消息推送中...") logger.info("[sr推送检查]完成!等待消息推送中...")
logger.debug(result) logger.debug(result)

View File

@ -3,14 +3,16 @@ from io import BytesIO
from pathlib import Path from pathlib import Path
from typing import Optional from typing import Optional
from PIL import Image, ImageDraw
import aiohttp import aiohttp
from PIL import Image, ImageDraw
from gsuid_core.logger import logger 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.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 ..sruid_utils.api.mys.models import Expedition
from ..starrailuid_config.sr_config import srconfig 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.error_reply import get_error as get_error_msg
from ..utils.fonts.starrail_fonts import ( from ..utils.fonts.starrail_fonts import (
sr_font_22, sr_font_22,
@ -19,8 +21,6 @@ from ..utils.fonts.starrail_fonts import (
sr_font_36, sr_font_36,
sr_font_50, 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 use_widget = srconfig.get_config("WidgetResin").data

View File

@ -2,8 +2,8 @@ from typing import List
from gsuid_core.logger import logger from gsuid_core.logger import logger
from ..utils.error_reply import get_error
from ..utils.mys_api import mys_api from ..utils.mys_api import mys_api
from ..utils.error_reply import get_error
daily_im = """*数据刷新可能存在一定延迟,请以当前游戏实际数据为准 daily_im = """*数据刷新可能存在一定延迟,请以当前游戏实际数据为准
============== ==============
@ -28,15 +28,15 @@ async def get_stamina_text(uid: str) -> str:
rec_time = "" rec_time = ""
current_stamina = dailydata.current_stamina current_stamina = dailydata.current_stamina
if current_stamina < 160: if current_stamina < 160:
stamina_recover_time = seconds2hours(dailydata.stamina_recover_time) recover_time = seconds2hours(dailydata.stamina_recover_time)
next_stamina_rec_time = seconds2hours( next_stamina_rec_time = seconds2hours(
8 * 60 8 * 60
- ( - (
(dailydata.max_stamina - dailydata.current_stamina) * 8 * 60 (max_stamina - dailydata.current_stamina) * 8 * 60
- dailydata.stamina_recover_time - 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 accepted_epedition_num = dailydata.accepted_expedition_num
total_expedition_num = dailydata.total_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 finished_expedition_num += 1
else: else:
remaining_time: str = seconds2hours(expedition.remaining_time) 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) expedition_data = "\n".join(expedition_info)
return daily_im.format( return daily_im.format(

View File

@ -1,34 +1,34 @@
import copy import copy
import time 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 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.api import _API
from ..sruid_utils.api.mys.models import ( from ..sruid_utils.api.mys.models import (
AbyssBossData,
AbyssData,
AbyssStoryData,
AvatarDetail,
AvatarInfo,
DailyNoteData,
GachaLog,
MonthlyAward,
MysSign, MysSign,
RogueData, GachaLog,
RogueLocustData,
RoleBasicInfo,
RoleIndex,
SignInfo, SignInfo,
SignList, SignList,
AbyssData,
RogueData,
RoleIndex,
AvatarInfo,
AvatarDetail,
MonthlyAward,
AbyssBossData,
DailyNoteData,
RoleBasicInfo,
WidgetStamina, WidgetStamina,
AbyssStoryData,
RogueLocustData,
) )
RECOGNIZE_SERVER = { RECOGNIZE_SERVER = {
@ -111,11 +111,9 @@ class MysApi(_MysApi):
header["x-rpc-channel"] = "beta" header["x-rpc-channel"] = "beta"
device_id = await self.get_user_device_id(uid, "sr") 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-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" header["x-rpc-device_model"] = "Mi 10"
fp = await self.get_user_fp(uid, "sr") fp = await self.get_user_fp(uid, "sr")
header["x-rpc-device_fp"] = "Asmr489" if fp is None else fp header["x-rpc-device_fp"] = "Asmr489" if fp is None else fp
header["x-rpc-client_type"] = "2"
header["DS"] = get_ds_token() header["DS"] = get_ds_token()
header["Referer"] = "https://app.mihoyo.com" header["Referer"] = "https://app.mihoyo.com"
del header["Origin"] del header["Origin"]
@ -216,13 +214,14 @@ class MysApi(_MysApi):
HEADER["Cookie"] = ck HEADER["Cookie"] = ck
HEADER["DS"] = generate_os_ds() HEADER["DS"] = generate_os_ds()
header = HEADER header = HEADER
os_server = "prod_official_asia"
data = await self.simple_sr_req( data = await self.simple_sr_req(
"STAR_RAIL_AVATAR_INFO_URL", "STAR_RAIL_AVATAR_INFO_URL",
uid, uid,
params={ params={
"need_wiki": "true" if need_wiki else "false", "need_wiki": "true" if need_wiki else "false",
"role_id": uid, "role_id": uid,
"server": RECOGNIZE_SERVER.get(str(uid)[0], "prod_official_asia"), "server": RECOGNIZE_SERVER.get(str(uid)[0], os_server),
}, },
header=header, header=header,
) )