mirror of
https://github.com/earthjasonlin/zzz-signal-search-export.git
synced 2024-11-22 05:20:20 +08:00
feat(uigf): metadata from local db
This commit is contained in:
parent
a2faa86f0c
commit
c034b2e70a
1937
src/idJson.json
Normal file
1937
src/idJson.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -7,6 +7,7 @@ const { name, version } = require('../../package.json')
|
|||||||
const i18n = require('./i18n')
|
const i18n = require('./i18n')
|
||||||
const { mergeData } = require('./utils/mergeData')
|
const { mergeData } = require('./utils/mergeData')
|
||||||
const { sendMsg } = require('./utils')
|
const { sendMsg } = require('./utils')
|
||||||
|
const idJson = require('../idJson.json')
|
||||||
|
|
||||||
const getTimeString = () => {
|
const getTimeString = () => {
|
||||||
return new Date().toLocaleString('sv').replace(/[- :]/g, '').slice(0, -2)
|
return new Date().toLocaleString('sv').replace(/[- :]/g, '').slice(0, -2)
|
||||||
@ -104,23 +105,35 @@ const importUIGF = async () => {
|
|||||||
jsonData.nap.forEach(uidData => {
|
jsonData.nap.forEach(uidData => {
|
||||||
const resultTemp = []
|
const resultTemp = []
|
||||||
const isNew = !Boolean(dataMap.has(uidData.uid))
|
const isNew = !Boolean(dataMap.has(uidData.uid))
|
||||||
|
|
||||||
let region_time_zone
|
let region_time_zone
|
||||||
if (!isNew) region_time_zone = dataMap.get(uidData.uid).region_time_zone
|
if (!isNew) region_time_zone = dataMap.get(uidData.uid).region_time_zone
|
||||||
else region_time_zone = uidData.timezone
|
else region_time_zone = uidData.timezone
|
||||||
|
|
||||||
|
let targetLang
|
||||||
|
if (!isNew) targetLang = dataMap.get(uidData.uid).lang
|
||||||
|
else targetLang = uidData.lang
|
||||||
|
if(!idJson[targetLang] && (!uidData.list[0].name || !uidData.list[0].item_type || !uidData.list[0].rank_type)) targetLang = config.lang
|
||||||
|
|
||||||
|
let idTargetLangJson = idJson[targetLang]
|
||||||
|
|
||||||
uidData.list.forEach(recordEntry => {
|
uidData.list.forEach(recordEntry => {
|
||||||
|
let rank_type
|
||||||
|
if (idTargetLangJson?.[recordEntry.item_id].rank_type) rank_type = String(idTargetLangJson[recordEntry.item_id].rank_type)
|
||||||
|
else rank_type = recordEntry.rank_type
|
||||||
resultTemp.push({
|
resultTemp.push({
|
||||||
gacha_id: recordEntry.gacha_id,
|
gacha_id: recordEntry.gacha_id,
|
||||||
gacha_type: recordEntry.gacha_type,
|
gacha_type: recordEntry.gacha_type,
|
||||||
item_id: recordEntry.item_id,
|
item_id: recordEntry.item_id,
|
||||||
count: recordEntry.count,
|
count: recordEntry.count ?? "1",
|
||||||
time: convertTimeZone(recordEntry.time, uidData.timezone, region_time_zone),
|
time: convertTimeZone(recordEntry.time, uidData.timezone, region_time_zone),
|
||||||
name: recordEntry.name,
|
name: idTargetLangJson?.[recordEntry.item_id].name ?? recordEntry.name,
|
||||||
item_type: recordEntry.item_type,
|
item_type: idTargetLangJson?.[recordEntry.item_id].item_type ?? recordEntry.item_type,
|
||||||
rank_type: recordEntry.rank_type,
|
rank_type: rank_type,
|
||||||
id: recordEntry.id
|
id: recordEntry.id
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
const resultTempGrouped = resultTemp.reduce((acc, curr) => {
|
const resultTempGrouped = resultTemp.reduce((acc, curr) => {
|
||||||
if (!acc[curr.gacha_type]) {
|
if (!acc[curr.gacha_type]) {
|
||||||
acc[curr.gacha_type] = []
|
acc[curr.gacha_type] = []
|
||||||
@ -133,9 +146,9 @@ const importUIGF = async () => {
|
|||||||
let data
|
let data
|
||||||
const mergedData = mergeData(dataMap.get(uidData.uid), resultMap)
|
const mergedData = mergeData(dataMap.get(uidData.uid), resultMap)
|
||||||
if (isNew) {
|
if (isNew) {
|
||||||
data = { result: mergedData, time: Date.now(), uid: uidData.uid, lang: uidData.lang, region_time_zone: uidData.timezone, deleted: false }
|
data = { result: mergedData, time: Date.now(), uid: uidData.uid, lang: targetLang, region_time_zone: uidData.timezone, deleted: false }
|
||||||
} else {
|
} else {
|
||||||
data = { result: mergedData, time: Date.now(), uid: dataMap.get(uidData.uid).uid, lang: dataMap.get(uidData.uid).lang, region_time_zone: dataMap.get(uidData.uid).region_time_zone, deleted: dataMap.get(uidData.uid).deleted }
|
data = { result: mergedData, time: Date.now(), uid: dataMap.get(uidData.uid).uid, lang: targetLang, region_time_zone: dataMap.get(uidData.uid).region_time_zone, deleted: dataMap.get(uidData.uid).deleted }
|
||||||
}
|
}
|
||||||
|
|
||||||
saveData(data, '')
|
saveData(data, '')
|
||||||
|
67
tools/getIdMap.py
Normal file
67
tools/getIdMap.py
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
import requests
|
||||||
|
import json
|
||||||
|
from opencc import OpenCC
|
||||||
|
|
||||||
|
# 初始化 OpenCC 转换器
|
||||||
|
cc = OpenCC('s2t')
|
||||||
|
|
||||||
|
# 获取 JSON 数据
|
||||||
|
weapon_url = 'https://api.hakush.in/zzz/data/weapon.json'
|
||||||
|
character_url = 'https://api.hakush.in/zzz/data/character.json'
|
||||||
|
|
||||||
|
# 语言映射配置
|
||||||
|
language_map = {
|
||||||
|
"zh-cn": "CHS",
|
||||||
|
"zh-tw": "CHS", # 简体转繁体
|
||||||
|
"en-us": "EN",
|
||||||
|
"ja-jp": "JA",
|
||||||
|
"ko-kr": "KO"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 类型映射配置
|
||||||
|
type_map = {
|
||||||
|
"weapon": {"zh-cn": "音擎", "zh-tw": "音擎", "en-us": "W-Engines", "ja-jp": "音動機", "ko-kr": "W-엔진"},
|
||||||
|
"character": {"zh-cn": "代理人", "zh-tw": "代理人", "en-us": "Agents", "ja-jp": "エージェント", "ko-kr": "에이전트"}
|
||||||
|
}
|
||||||
|
|
||||||
|
def fetch_json(url):
|
||||||
|
response = requests.get(url)
|
||||||
|
response.raise_for_status()
|
||||||
|
return response.json()
|
||||||
|
|
||||||
|
def transform_data(data, item_type):
|
||||||
|
transformed = {lang: {} for lang in language_map.keys()}
|
||||||
|
for id, item in data.items():
|
||||||
|
for lang, key in language_map.items():
|
||||||
|
name = item[key] if lang != 'zh-tw' else cc.convert(item['CHS'])
|
||||||
|
transformed[lang][id] = {
|
||||||
|
"name": name,
|
||||||
|
"item_type": type_map[item_type][lang],
|
||||||
|
"rank_type": item['rank']
|
||||||
|
}
|
||||||
|
return transformed
|
||||||
|
|
||||||
|
def main():
|
||||||
|
try:
|
||||||
|
weapon_data = fetch_json(weapon_url)
|
||||||
|
character_data = fetch_json(character_url)
|
||||||
|
|
||||||
|
transformed_data = {lang: {} for lang in language_map.keys()}
|
||||||
|
|
||||||
|
weapon_transformed = transform_data(weapon_data, "weapon")
|
||||||
|
character_transformed = transform_data(character_data, "character")
|
||||||
|
|
||||||
|
for lang in language_map.keys():
|
||||||
|
transformed_data[lang].update(weapon_transformed[lang])
|
||||||
|
transformed_data[lang].update(character_transformed[lang])
|
||||||
|
|
||||||
|
with open('./src/idJson.json', 'w', encoding='utf-8') as f:
|
||||||
|
json.dump(transformed_data, f, ensure_ascii=False, indent=2)
|
||||||
|
|
||||||
|
print("Data successfully transformed and saved")
|
||||||
|
|
||||||
|
except requests.RequestException as e:
|
||||||
|
print(f"Error fetching data: {e}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
x
Reference in New Issue
Block a user