Support chinese variant, QQ object in launcher and some code optimizations
This commit is contained in:
@ -10,14 +10,28 @@ class Launcher:
|
||||
Contains functions to get information from server and client like the official launcher.
|
||||
"""
|
||||
|
||||
def __init__(self, gamedir=Path.cwd()):
|
||||
def __init__(self, gamedir=Path.cwd(), language=None, overseas=True):
|
||||
"""Initialize the launcher API
|
||||
|
||||
Args:
|
||||
gamedir (Path): Path to the game directory.
|
||||
"""
|
||||
self._api = constants.LAUNCHER_API_URL
|
||||
self._lang = self._get_system_language()
|
||||
self._overseas = overseas
|
||||
if overseas:
|
||||
self._api = constants.LAUNCHER_API_URL_OS
|
||||
self._params = {
|
||||
"key": "gcStgarh",
|
||||
"launcher_id": "10",
|
||||
}
|
||||
self._lang = self._get_system_language() if not language else language.lower().replace("_", "-")
|
||||
else:
|
||||
self._api = constants.LAUNCHER_API_URL_CN
|
||||
self._params = {
|
||||
"key": "eYd89JmJ",
|
||||
"launcher_id": "18",
|
||||
"channel_id": "1"
|
||||
}
|
||||
self._lang = "zh-cn" # Use chinese language because this is Pooh version
|
||||
if isinstance(gamedir, str):
|
||||
gamedir = Path(gamedir)
|
||||
self._gamedir = gamedir.resolve()
|
||||
@ -36,18 +50,6 @@ class Launcher:
|
||||
request_info=rsp.request_info)
|
||||
return rsp_json
|
||||
|
||||
async def _get_launcher_info(self, adv=True) -> launcher.Info:
|
||||
params = {"key": "gcStgarh",
|
||||
"filter_adv": str(adv).lower(),
|
||||
"launcher_id": "10",
|
||||
"language": self._lang}
|
||||
rsp = await self._get(self._api + "/content", params=params)
|
||||
if rsp["data"]["adv"] is None:
|
||||
params["language"] = "en-us"
|
||||
rsp = await self._get(self._api + "/content", params=params)
|
||||
lc_info = launcher.Info.from_dict(rsp["data"])
|
||||
return lc_info
|
||||
|
||||
@staticmethod
|
||||
def _get_system_language() -> str:
|
||||
"""Gets system language compatible with server parameters.
|
||||
@ -61,16 +63,27 @@ class Launcher:
|
||||
lowercase_lang = lang.lower().replace("_", "-")
|
||||
return lowercase_lang
|
||||
except ValueError:
|
||||
return "en-us"
|
||||
return "en-us" # Fallback to English if locale is not supported
|
||||
|
||||
async def override_gamedir(self, gamedir: str) -> None:
|
||||
async def _get_launcher_info(self, adv=True) -> launcher.Info:
|
||||
params = self._params | {"filter_adv": str(adv).lower(),
|
||||
"language": self._lang}
|
||||
rsp = await self._get(self._api + "/content", params=params)
|
||||
if rsp["data"]["adv"] is None:
|
||||
params["language"] = "en-us"
|
||||
rsp = await self._get(self._api + "/content", params=params)
|
||||
lc_info = launcher.Info.from_dict(rsp["data"])
|
||||
return lc_info
|
||||
|
||||
async def override_gamedir(self, gamedir: str | Path) -> None:
|
||||
"""Overrides game directory with another directory.
|
||||
|
||||
Args:
|
||||
gamedir (str): New directory to override with.
|
||||
"""
|
||||
|
||||
self._gamedir = Path(gamedir).resolve()
|
||||
if isinstance(gamedir, str):
|
||||
gamedir = Path(gamedir).resolve()
|
||||
self._gamedir = gamedir
|
||||
|
||||
async def override_language(self, language: str) -> None:
|
||||
"""Overrides system detected language with another language.
|
||||
@ -92,8 +105,7 @@ class Launcher:
|
||||
aiohttp.ClientResponseError: An error occurred while fetching the information.
|
||||
"""
|
||||
|
||||
rsp = await self._get(self._api + "/resource", params={"key": "gcStgarh",
|
||||
"launcher_id": "10"})
|
||||
rsp = await self._get(self._api + "/resource", params=self._params)
|
||||
return rsp
|
||||
|
||||
async def get_launcher_info(self) -> launcher.Info:
|
||||
|
||||
Reference in New Issue
Block a user