mirror of
https://github.com/PaiGramTeam/PaiGram.git
synced 2024-12-01 11:41:59 +00:00
97 lines
3.1 KiB
Python
97 lines
3.1 KiB
Python
|
from httpx import AsyncClient
|
||
|
|
||
|
from .base import BaseResponseData
|
||
|
from .helpers import get_ds, get_device_id, get_recognize_server
|
||
|
|
||
|
|
||
|
class Genshin:
|
||
|
SIGN_INFO_URL = "https://hk4e-api-os.hoyoverse.com/event/sol/info"
|
||
|
SIGN_URL = "https://hk4e-api-os.hoyoverse.com/event/sol/sign"
|
||
|
SIGN_HOME_URL = "https://hk4e-api-os.hoyoverse.com/event/sol/home"
|
||
|
|
||
|
APP_VERSION = "2.11.1"
|
||
|
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " \
|
||
|
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
|
||
|
REFERER = "https://webstatic.hoyoverse.com"
|
||
|
ORIGIN = "https://webstatic.hoyoverse.com"
|
||
|
|
||
|
ACT_ID = "e202102251931481"
|
||
|
DS_SALT = "6cqshh5dhw73bzxn20oexa9k516chk7s"
|
||
|
|
||
|
def __init__(self):
|
||
|
self.headers = {
|
||
|
"Origin": self.ORIGIN,
|
||
|
'DS': get_ds(self.DS_SALT),
|
||
|
'x-rpc-app_version': self.APP_VERSION,
|
||
|
'User-Agent': self.USER_AGENT,
|
||
|
'x-rpc-client_type': '5', # 1为ios 2为安卓 4为pc_web 5为mobile_web
|
||
|
'Referer': self.REFERER,
|
||
|
'x-rpc-device_id': get_device_id(self.USER_AGENT)}
|
||
|
self.client = AsyncClient(headers=self.headers)
|
||
|
|
||
|
async def is_sign(self, uid: int, region: str = "", cookies: dict = None, lang: str = 'zh-cn'):
|
||
|
"""
|
||
|
检查是否签到
|
||
|
:param lang: 语言
|
||
|
:param uid: 游戏UID
|
||
|
:param region: 服务器
|
||
|
:param cookies: cookie
|
||
|
:return:
|
||
|
"""
|
||
|
if region == "":
|
||
|
region = get_recognize_server(uid)
|
||
|
params = {
|
||
|
"act_id": self.ACT_ID,
|
||
|
"region": region,
|
||
|
"uid": uid,
|
||
|
"lang": lang
|
||
|
}
|
||
|
req = await self.client.get(self.SIGN_INFO_URL, params=params, cookies=cookies)
|
||
|
if req.is_error:
|
||
|
return BaseResponseData(error_message="请求错误")
|
||
|
return BaseResponseData(req.json())
|
||
|
|
||
|
async def sign(self, uid: int, region: str = "", cookies: dict = None, lang: str = 'zh-cn'):
|
||
|
"""
|
||
|
执行签到
|
||
|
:param lang:
|
||
|
:param uid: 游戏UID
|
||
|
:param region: 服务器
|
||
|
:param cookies: cookie
|
||
|
:return:
|
||
|
"""
|
||
|
if region == "":
|
||
|
region = get_recognize_server(uid)
|
||
|
data = {
|
||
|
"act_id": self.ACT_ID,
|
||
|
"region": region,
|
||
|
"uid": uid,
|
||
|
"lang": lang
|
||
|
}
|
||
|
req = await self.client.post(self.SIGN_URL, json=data, cookies=cookies)
|
||
|
if req.is_error:
|
||
|
return BaseResponseData(error_message="签到失败")
|
||
|
return BaseResponseData(req.json())
|
||
|
|
||
|
async def get_sign_give(self, cookies: dict = None, lang: str = 'zh-cn'):
|
||
|
"""
|
||
|
返回今日签到信息
|
||
|
:param lang:
|
||
|
:param cookies:
|
||
|
:return:
|
||
|
"""
|
||
|
params = {
|
||
|
"act_id": self.ACT_ID,
|
||
|
"lang": lang
|
||
|
}
|
||
|
req = await self.client.get(self.SIGN_HOME_URL, params=params, cookies=cookies)
|
||
|
if req.is_error:
|
||
|
return
|
||
|
return BaseResponseData(req.json())
|
||
|
|
||
|
async def __aenter__(self):
|
||
|
pass
|
||
|
|
||
|
async def __aexit__(self, exc_type, exc, tb):
|
||
|
await self.client.aclose()
|