mirror of
https://github.com/PaiGramTeam/MibooGram.git
synced 2024-11-21 22:58:20 +00:00
🎨 Optimize Import
Use the default json when ujson is not available
This commit is contained in:
parent
58e6144622
commit
ac4610a57c
@ -1,9 +1,13 @@
|
||||
import ujson as json
|
||||
|
||||
from core.base_service import BaseService
|
||||
from core.dependence.redisdb import RedisDB
|
||||
from modules.wiki.base import Model
|
||||
|
||||
try:
|
||||
import ujson as jsonlib
|
||||
except ImportError:
|
||||
import json as jsonlib
|
||||
|
||||
|
||||
__all__ = ["WikiCache"]
|
||||
|
||||
|
||||
@ -17,7 +21,7 @@ class WikiCache(BaseService.Component):
|
||||
if isinstance(value, Model):
|
||||
value = value.json()
|
||||
elif isinstance(value, (dict, list)):
|
||||
value = json.dumps(value)
|
||||
value = jsonlib.dumps(value)
|
||||
await self.client.set(qname, value)
|
||||
|
||||
async def delete(self, key: str):
|
||||
@ -28,10 +32,10 @@ class WikiCache(BaseService.Component):
|
||||
qname = f"{self.qname}:{key}"
|
||||
# noinspection PyBroadException
|
||||
try:
|
||||
result = json.loads(await self.client.get(qname))
|
||||
result = jsonlib.loads(await self.client.get(qname))
|
||||
except Exception: # pylint: disable=W0703
|
||||
result = []
|
||||
if isinstance(result, list) and len(result) > 0:
|
||||
for num, item in enumerate(result):
|
||||
result[num] = json.loads(item)
|
||||
result[num] = jsonlib.loads(item)
|
||||
return result
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 30cc0cf8f700f50ad3063b2f3bca4f325f121bd3
|
||||
Subproject commit 9dd1acab7842fb2c7cfd5ca507de93778318dc82
|
@ -5,12 +5,15 @@ from __future__ import annotations
|
||||
import functools
|
||||
from typing import Any, Generic, ItemsView, Iterator, KeysView, Optional, TypeVar, ValuesView
|
||||
|
||||
import ujson as json
|
||||
|
||||
from utils.const import PROJECT_ROOT
|
||||
from utils.log import logger
|
||||
from utils.typedefs import StrOrInt
|
||||
|
||||
try:
|
||||
import ujson as jsonlib
|
||||
except ImportError:
|
||||
import json as jsonlib
|
||||
|
||||
__all__ = (
|
||||
"HONEY_DATA",
|
||||
"AVATAR_DATA",
|
||||
@ -52,7 +55,7 @@ class Data(dict, Generic[K, V]):
|
||||
)
|
||||
self._dict = {}
|
||||
with open(path, encoding="utf-8") as file:
|
||||
self._dict = json.load(file)
|
||||
self._dict = jsonlib.load(file)
|
||||
_cache.update({self._file_name: self._dict})
|
||||
return self._dict
|
||||
|
||||
|
@ -4,7 +4,6 @@ import asyncio
|
||||
import re
|
||||
from typing import Dict, List, Optional
|
||||
|
||||
import ujson as json
|
||||
from aiofiles import open as async_open
|
||||
from httpx import AsyncClient, HTTPError, Response
|
||||
|
||||
@ -13,6 +12,11 @@ from utils.const import PROJECT_ROOT
|
||||
from utils.log import logger
|
||||
from utils.typedefs import StrOrInt
|
||||
|
||||
try:
|
||||
import ujson as jsonlib
|
||||
except ImportError:
|
||||
import json as jsonlib
|
||||
|
||||
__all__ = [
|
||||
"get_avatar_data",
|
||||
"get_artifact_data",
|
||||
@ -46,7 +50,7 @@ async def get_avatar_data() -> DATA_TYPE:
|
||||
url = "https://genshin.honeyhunterworld.com/fam_chars/?lang=CHS"
|
||||
response = await request(url)
|
||||
chaos_data = re.findall(r"sortable_data\.push\((.*?)\);\s*sortable_cur_page", response.text)[0]
|
||||
json_data = json.loads(chaos_data) # 转为 json
|
||||
json_data = jsonlib.loads(chaos_data) # 转为 json
|
||||
for data in json_data:
|
||||
cid = int("10000" + re.findall(r"\d+", data[1])[0])
|
||||
honey_id = re.findall(r"/(.*?)/", data[1])[0]
|
||||
@ -64,7 +68,7 @@ async def get_weapon_data() -> DATA_TYPE:
|
||||
for url in urls:
|
||||
response = await request(url)
|
||||
chaos_data = re.findall(r"sortable_data\.push\((.*?)\);\s*sortable_cur_page", response.text)[0]
|
||||
json_data = json.loads(chaos_data) # 转为 json
|
||||
json_data = jsonlib.loads(chaos_data) # 转为 json
|
||||
for data in json_data:
|
||||
name = re.findall(r">(.*)<", data[1])[0]
|
||||
if name in ["「一心传」名刀", "石英大剑", "琥珀玥", "黑檀弓"]: # 跳过特殊的武器
|
||||
@ -85,12 +89,12 @@ async def get_material_data() -> DATA_TYPE:
|
||||
urls = weapon + talent + namecard
|
||||
|
||||
response = await request("https://api.ambr.top/v2/chs/material")
|
||||
ambr_data = json.loads(response.text)["data"]["items"]
|
||||
ambr_data = jsonlib.loads(response.text)["data"]["items"]
|
||||
|
||||
for url in urls:
|
||||
response = await request(url)
|
||||
chaos_data = re.findall(r"sortable_data\.push\((.*?)\);\s*sortable_cur_page", response.text)[0]
|
||||
json_data = json.loads(chaos_data) # 转为 json
|
||||
json_data = jsonlib.loads(chaos_data) # 转为 json
|
||||
for data in json_data:
|
||||
honey_id = re.findall(r"/(.*?)/", data[1])[0]
|
||||
name = re.findall(r">(.*)<", data[1])[0]
|
||||
@ -108,18 +112,18 @@ async def get_artifact_data() -> DATA_TYPE:
|
||||
async def get_first_id(_link) -> str:
|
||||
_response = await request(_link)
|
||||
_chaos_data = re.findall(r"sortable_data\.push\((.*?)\);\s*sortable_cur_page", _response.text)[0]
|
||||
_json_data = json.loads(_chaos_data)
|
||||
_json_data = jsonlib.loads(_chaos_data)
|
||||
return re.findall(r"/(.*?)/", _json_data[-1][1])[0]
|
||||
|
||||
result = {}
|
||||
url = "https://genshin.honeyhunterworld.com/fam_art_set/?lang=CHS"
|
||||
|
||||
response = await request("https://api.ambr.top/v2/chs/reliquary")
|
||||
ambr_data = json.loads(response.text)["data"]["items"]
|
||||
ambr_data = jsonlib.loads(response.text)["data"]["items"]
|
||||
|
||||
response = await request(url)
|
||||
chaos_data = re.findall(r"sortable_data\.push\((.*?)\);\s*sortable_cur_page", response.text)[0]
|
||||
json_data = json.loads(chaos_data) # 转为 json
|
||||
json_data = jsonlib.loads(chaos_data) # 转为 json
|
||||
for data in json_data:
|
||||
honey_id = re.findall(r"/(.*?)/", data[1])[0]
|
||||
name = re.findall(r"alt=\"(.*?)\"", data[0])[0]
|
||||
@ -151,7 +155,7 @@ async def get_namecard_data() -> DATA_TYPE:
|
||||
|
||||
response = await request(url)
|
||||
chaos_data = re.findall(r"sortable_data\.push\((.*?)\);\s*sortable_cur_page", response.text)[0]
|
||||
json_data = json.loads(chaos_data)
|
||||
json_data = jsonlib.loads(chaos_data)
|
||||
for data in json_data:
|
||||
honey_id = re.findall(r"/(.*?)/", data[1])[0]
|
||||
name = re.findall(r"alt=\"(.*?)\"", data[0])[0]
|
||||
@ -189,5 +193,5 @@ async def update_honey_metadata(overwrite: bool = True) -> FULL_DATA_TYPE | None
|
||||
}
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
async with async_open(path, mode="w", encoding="utf-8") as file:
|
||||
await file.write(json.dumps(result, ensure_ascii=False, indent=4))
|
||||
await file.write(jsonlib.dumps(result, ensure_ascii=False, indent=4))
|
||||
return result
|
||||
|
@ -1,13 +1,17 @@
|
||||
from contextlib import contextmanager
|
||||
from typing import Iterator, Dict
|
||||
|
||||
import ujson as json
|
||||
from aiofiles import open as async_open
|
||||
from httpx import URL, AsyncClient, RemoteProtocolError, Response
|
||||
|
||||
from utils.const import AMBR_HOST, PROJECT_ROOT
|
||||
from utils.log import logger
|
||||
|
||||
try:
|
||||
import ujson as jsonlib
|
||||
except ImportError:
|
||||
import json as jsonlib
|
||||
|
||||
__all__ = [
|
||||
"update_metadata_from_ambr",
|
||||
"update_metadata_from_github",
|
||||
@ -32,7 +36,7 @@ async def fix_metadata_from_ambr(json_data: Dict[str, Dict], data_type: str):
|
||||
for wid in need_append_ids:
|
||||
url = AMBR_HOST.join(f"v2/chs/{data_type}/{wid}")
|
||||
response = await client.get(url)
|
||||
json_data_ = json.loads(response.text)["data"]
|
||||
json_data_ = jsonlib.loads(response.text)["data"]
|
||||
json_data[str(json_data_["id"])] = {k: json_data_[k] for k in need_attr}
|
||||
|
||||
|
||||
@ -46,10 +50,10 @@ async def update_metadata_from_ambr(overwrite: bool = True):
|
||||
url = AMBR_HOST.join(f"v2/chs/{target}")
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
response = await client.get(url)
|
||||
json_data = json.loads(response.text)["data"]["items"]
|
||||
json_data = jsonlib.loads(response.text)["data"]["items"]
|
||||
await fix_metadata_from_ambr(json_data, target)
|
||||
async with async_open(path, mode="w", encoding="utf-8") as file:
|
||||
data = json.dumps(json_data, ensure_ascii=False, indent=4)
|
||||
data = jsonlib.dumps(json_data, ensure_ascii=False, indent=4)
|
||||
await file.write(data)
|
||||
result.append(json_data)
|
||||
return result
|
||||
@ -88,7 +92,7 @@ async def update_metadata_from_github(overwrite: bool = True):
|
||||
if line in [" },", " }"]:
|
||||
started = False
|
||||
if any("MATERIAL_NAMECARD" in x for x in cell):
|
||||
material_json_data.append(json.loads("{" + "".join(cell) + "}"))
|
||||
material_json_data.append(jsonlib.loads("{" + "".join(cell) + "}"))
|
||||
cell = []
|
||||
continue
|
||||
if started:
|
||||
@ -136,7 +140,7 @@ async def update_metadata_from_github(overwrite: bool = True):
|
||||
}
|
||||
)
|
||||
async with async_open(path, mode="w", encoding="utf-8") as file:
|
||||
data = json.dumps(data, ensure_ascii=False, indent=4)
|
||||
data = jsonlib.dumps(data, ensure_ascii=False, indent=4)
|
||||
await file.write(data)
|
||||
return data
|
||||
except RemoteProtocolError as exc:
|
||||
|
@ -24,10 +24,10 @@ from utils.log._style import DEFAULT_STYLE
|
||||
from utils.log._traceback import Traceback
|
||||
|
||||
try:
|
||||
import ujson as json
|
||||
import ujson as jsonlib
|
||||
from ujson import JSONDecodeError
|
||||
except ImportError:
|
||||
import json
|
||||
import json as jsonlib
|
||||
from json import JSONDecodeError
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@ -250,7 +250,7 @@ class Handler(DefaultRichHandler):
|
||||
if message is not None:
|
||||
try:
|
||||
if self.auto_load_json:
|
||||
message_renderable = self.render_message(record, json.loads(message))
|
||||
message_renderable = self.render_message(record, jsonlib.loads(message))
|
||||
except JSONDecodeError:
|
||||
pass
|
||||
finally:
|
||||
|
Loading…
Reference in New Issue
Block a user