Compare commits

...

6 Commits

Author SHA1 Message Date
mio
8a9c7a3b56 fix: global server game path is '\Games\' 2023-05-01 19:27:22 +08:00
mio
2a670c7023 fix: i18n show empty string 2023-05-01 19:15:40 +08:00
mio
d732d523a8 fix: local UID not saved when switching users 2023-05-01 18:08:01 +08:00
mio
2bc52de233 fix: getLatestUrl does not get the latest url 2023-05-01 17:40:06 +08:00
mio
20ba48513c fix: auto update start version 2023-05-01 17:19:18 +08:00
mio
ba0bc3a778 fix: 原神 -> 星穹铁道 2023-05-01 17:13:50 +08:00
5 changed files with 29 additions and 19 deletions

View File

@ -35,7 +35,7 @@ const start = async () => {
await fs.outputJSON(path.join(outputPath, 'manifest.json'), {
active: true,
version,
from: '0.1.5',
from: '0.0.1',
name: `${hashName}.zip`,
hash: sha256
})

View File

@ -1,6 +1,6 @@
{
"name": "star-rail-warp-export",
"version": "0.0.3",
"version": "0.0.6",
"main": "./dist/electron/main/main.js",
"author": "biuuu <https://github.com/biuuu>",
"license": "MIT",

View File

@ -83,6 +83,6 @@
"excel.customFont": "微软雅黑",
"excel.filePrefix": "星穹铁道跃迁记录",
"excel.fileType": "Excel文件",
"ui.extra.cacheClean": "1. 确认是否已经打开游戏内的抽卡历史记录,如果仍然出现“身份认证已过期”的错误,再尝试下面的步骤\n2. 关闭原神的游戏窗口\n3. 点击上方的“打开缓存文件夹”按钮打开Cache文件夹\n4. 删除Cache_Data文件夹\n5. 启动原神游戏,打开游戏内抽卡历史记录页面\n6. 关闭这个对话框,再点击“更新数据”按钮",
"ui.extra.cacheClean": "1. 确认是否已经打开游戏内的抽卡历史记录,如果仍然出现“身份认证已过期”的错误,再尝试下面的步骤\n2. 关闭星穹铁道的游戏窗口\n3. 点击上方的“打开缓存文件夹”按钮打开Cache文件夹\n4. 删除Cache_Data文件夹\n5. 启动星穹铁道游戏,打开游戏内抽卡历史记录页面\n6. 关闭这个对话框,再点击“更新数据”按钮",
"ui.extra.findCacheFolder": "如果点“打开缓存文件夹”按钮没有反应,可以手动找到游戏的网页缓存文件夹,目录为“你的游戏安装路径/Star Rail/Game/StarRail_Data/webCaches/Cache/”"
}

View File

@ -84,17 +84,17 @@ const detectGameLocale = async (userPath) => {
const getLatestUrl = (list) => {
let result = list[list.length - 1]
let time = 0
for (let i = 0; i < list.length; i++) {
const tsMch = list[i].match(/timestamp=(\d+)/)
if (tsMch?.[1]) {
const ts = parseInt(tsMch[1])
if (time <= parseInt(tsMch[1])) {
time = ts
result = list[i]
}
}
}
// let time = 0
// for (let i = 0; i < list.length; i++) {
// const tsMch = list[i].match(/timestamp=(\d+)/)
// if (tsMch?.[1]) {
// const ts = parseInt(tsMch[1])
// if (time <= parseInt(tsMch[1])) {
// time = ts
// result = list[i]
// }
// }
// }
return result
}
@ -115,10 +115,10 @@ const readLog = async () => {
}
const promises = logPaths.map(async logpath => {
const logText = await fs.readFile(logpath, 'utf8')
const gamePathMch = logText.match(/\w:\/.*?(Star\sRail\/Game\/StarRail_Data)/)
const gamePathMch = logText.match(/\w:\/.*?(Star\sRail\/Games?\/StarRail_Data)/)
if (gamePathMch) {
const cacheText = await fs.readFile(path.join(gamePathMch[0], '/webCaches/Cache/Cache_Data/data_2'), 'utf8')
const urlMch = cacheText.match(/https.+?&auth_appid=webview_gacha&.+?authkey=.+?&game_biz=hkrpg_.+/g)
const urlMch = cacheText.match(/https.+?&auth_appid=webview_gacha&.+?authkey=.+?&game_biz=hkrpg_.+?&plat_type=pc/g)
if (urlMch) {
cacheFolder = path.join(gamePathMch[0], '/webCaches/Cache/')
return getLatestUrl(urlMch)
@ -456,7 +456,7 @@ ipcMain.handle('READ_DATA', async () => {
})
ipcMain.handle('CHANGE_UID', (event, uid) => {
config.current = uid
changeCurrent(uid)
})
ipcMain.handle('GET_CONFIG', () => {

View File

@ -42,14 +42,24 @@ const parseData = (data) => {
return result
}
const assignData = (objA, objB) => {
const temp = { ...objA }
for (let key in objB) {
if (objB[key]) {
temp[key] = objB[key]
}
}
return temp
}
const i18nMap = new Map()
const prepareData = () => {
for (let key in raw) {
let temp = {}
if (key === 'zh-tw') {
Object.assign(temp, raw['zh-cn'], raw[key])
temp = assignData(raw['zh-cn'], raw[key])
} else {
Object.assign(temp, raw['zh-cn'], raw['en-us'], raw[key])
temp = assignData(raw['zh-cn'], assignData(raw['en-us'], raw[key]))
}
i18nMap.set(key, parseData(temp))
}