Compare commits

...

8 Commits

Author SHA1 Message Date
mio
23d102fe67 fix: sometimes appid error 2024-03-31 15:01:35 +08:00
mio
e307d21bb2 feat: save data only in the current program directory 2024-01-22 15:15:17 +08:00
mio
8ff629b655 Upgrade version 2023-10-28 10:01:55 +08:00
0c778c09f4 fixed: unknown host (#54)
Closes #53 
我這邊yarn build之後運行正常

---------

Co-authored-by: biuuu <10892119+biuuu@users.noreply.github.com>
2023-10-28 09:57:14 +08:00
8c370ff0a7 Update Français.json (#50)
Added : 
- ui.setting.dataManagerHint

Updated :
- ui.button.files

Small fix. Translation is now complete. And no formatting issues this
time (sorry for that).
2023-10-14 16:46:01 +08:00
mio
1ab284c880 upgrade version 2023-10-11 18:16:04 +08:00
dc5053cb03 Zenshio patch 2 (#49)
Added :
- ui.button.files
- ui.button.solution
- ui.button.cacheFolder
- ui.button.copyUrl
- ui.common.data
- ui.common.dataManage
- ui.common.updateTime
- ui.common.status
- ui.common.action
- ui.common.deleted
- ui.common.normal
- ui.common.delete
- ui.common.restore
- srgf.fileType
- ui.extra.cacheClean
- ui.extra.findCacheFolder
- ui.extra.urlCopied

Updated :
- ui.hint.init
- ui.win.title
- ui.data.no5star
- ui.data.weapon
- ui.data.average
- ui.data.weapon5
- ui.data.weapon4
- ui.data.weapon3
- ui.setting.hideNovice
- log.file.notFound
- log.fetch.authTimeout
- log.fetch.gachaType
- log.fetch.gachaTypeOk
- log.proxy.hint
- log.url.notFound2
- excel.wish2
- excel.filePrefix
2023-10-11 09:35:05 +08:00
mio
49c1685e5e fix: Russian records cannot be exported to Excel file (#32) 2023-09-24 11:40:57 +08:00
6 changed files with 45 additions and 34 deletions

View File

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

View File

@ -3,35 +3,39 @@
"ui.button.load": "Charger les données",
"ui.button.update": "Mettre à jour",
"ui.button.directUpdate": "Mise à jour directe",
"ui.button.files": "Exporter les fichiers",
"ui.button.excel": "Exporter vers Excel",
"ui.button.srgf": "Exporter vers JSON",
"ui.button.url": "URL d'import",
"ui.button.setting": "Paramètres",
"ui.button.option": "Options",
"ui.button.startProxy": "Mode Proxy",
"ui.button.solution": "Solution",
"ui.button.cacheFolder": "Ouvrir le dossier de cache",
"ui.button.copyUrl": "Copier l'URL",
"ui.select.newAccount": "Nouveau compte",
"ui.hint.newAccount": "Charger les données d'autres comptes",
"ui.hint.init": "Veuillez ouvrir votre historique de vœux depuis le client du jeu avant de cliquer sur le bouton 'Charger les données'.",
"ui.hint.init": "Veuillez ouvrir votre historique de sauts hyperespaces depuis le client du jeu avant de cliquer sur le bouton 'Charger les données'.",
"ui.hint.lastUpdate": "Dernière mise à jour",
"ui.hint.failed": "Oups, une erreur est survenue...",
"ui.hint.relaunchHint": "La mise à jour est terminée, elle prendra effet après avoir cliqué sur le bouton permettant le redémarrage de l'outil",
"ui.win.title": "",
"ui.win.title": "Outil d'export de l'historique de sauts hyperespaces de Star Rail",
"ui.data.total": "Total de",
"ui.data.times": "tirages.",
"ui.data.sum": "Vous avez effectué",
"ui.data.no5star": "tirages sans objet 5★.",
"ui.data.no5star": "tirages sans 5★.",
"ui.data.character": "Personnage",
"ui.data.weapon": "Arme",
"ui.data.weapon": "Cône de lumière",
"ui.data.star5": "5★",
"ui.data.star4": "4★",
"ui.data.star3": "3★",
"ui.data.history": "Historique de 5★",
"ui.data.average": "Moyenne de tirages d'objet 5★",
"ui.data.average": "Moyenne de tirages de 5★",
"ui.data.chara5": "Personnage 5★",
"ui.data.chara4": "Personnage 4★",
"ui.data.weapon5": "Arme 5★",
"ui.data.weapon4": "Arme 4★",
"ui.data.weapon3": "Arme 3★",
"ui.data.weapon5": "Cône de lumière 5★",
"ui.data.weapon4": "Cône de lumière 4★",
"ui.data.weapon3": "Cône de lumière 3★",
"ui.setting.title": "Paramètres",
"ui.setting.language": "Langue",
"ui.setting.languageHint": "L'anglais sera utilisé par défaut si la traduction sélectionnée n'est pas disponible.",
@ -40,8 +44,9 @@
"ui.setting.cnServer": "Serveur Chinois",
"ui.setting.seaServer": "Serveur Global",
"ui.setting.logTypeHint": "Choisissez les journaux générés par le serveur à utiliser en priorité lors de la récupération de l'URL à partir des journaux du jeu.",
"ui.setting.dataManagerHint": "Les données inutilisées peuvent être supprimées",
"ui.setting.autoUpdate": "Mise à jour automatique",
"ui.setting.hideNovice": "Masquer les vœux dubutant",
"ui.setting.hideNovice": "Masquer les sauts hyperespaces depart",
"ui.setting.proxyMode": "Mode Proxy",
"ui.setting.proxyModeHint": "Si la récupération de l'URL depuis les journaux système échoue, utilisez le proxy système.",
"ui.setting.fetchFullHistory": "Récupérer l'intégralité des données",
@ -55,20 +60,29 @@
"ui.urlDialog.placeholder": "Veuillez saisir l'URL avec les informations d'authentification.",
"ui.common.cancel": "Annuler",
"ui.common.ok": "OK",
"ui.common.data": "Données",
"ui.common.dataManage": "Gestion de données",
"ui.common.updateTime": "Date de mise à jour",
"ui.common.status": "Statut",
"ui.common.action": "Action",
"ui.common.deleted": "Supprimé",
"ui.common.normal": "Normal",
"ui.common.delete": "Supprimer",
"ui.common.restore": "Restaurer",
"log.save.failed": "Échec de la sauvegarde des données locales.",
"log.file.notFound": "Les journaux du jeu sont introuvables, veuillez vous assurer que vous avez déjà ouvert l'historique de vœux dans le client du jeu.",
"log.file.notFound": "Les journaux du jeu sont introuvables, veuillez vous assurer que vous avez déjà ouvert l'historique de sauts hyperespaces dans le client du jeu.",
"log.url.notFound": "URL introuvable.",
"log.file.readFailed": "Échec de la lecture des journaux.",
"log.fetch.retry": "Échec de la récupération des ${name} - page ${page}, nouvelle tentative dans 5 secondes pour la ${count}e fois……",
"log.fetch.retryFailed": "Échec de la récupération des ${name} - page ${page}, nombre de tentatives maximum atteint.",
"log.fetch.interval": "Récupération des ${name} - page ${page}, délai de 1 seconde toutes les 10 pages……",
"log.fetch.current": "Récupération des ${name} - page ${page}.",
"log.fetch.authTimeout": "L'authentification de l'utilisateur a expiré, veuillez rouvrir l'historique des vœux dans le client du jeu.",
"log.fetch.gachaType": "Récupération du type de vœux, veuillez patienter.",
"log.fetch.gachaTypeOk": "Le type de vœux a été récupéré.",
"log.fetch.authTimeout": "L'authentification de l'utilisateur a expiré, veuillez rouvrir l'historique des sauts hyperespaces dans le client du jeu.",
"log.fetch.gachaType": "Récupération du type de sauts hyperespaces, veuillez patienter.",
"log.fetch.gachaTypeOk": "Le type de sauts hyperespaces a été récupéré.",
"log.url.lackAuth": "Clé d'authentification introuvable dans l'URL.",
"log.proxy.hint": "Utilisation du mode proxy [${ip}:${port}] pour obtenir l'URL, veuillez rouvrir l'historique des vœux dans le client du jeu.",
"log.url.notFound2": "URL introuvable, veuillez vous assurer que vous avez déjà ouvert l'historique de vœux dans le client du jeu.",
"log.proxy.hint": "Utilisation du mode proxy [${ip}:${port}] pour obtenir l'URL, veuillez rouvrir l'historique des sauts hyperespaces dans le client du jeu.",
"log.url.notFound2": "URL introuvable, veuillez vous assurer que vous avez déjà ouvert l'historique de sauts hyperespaces dans le client du jeu.",
"log.url.incorrect": "Impossible d'obtenir les paramètres d'URL.",
"log.autoUpdate.success": "Mise à jour automatique réussie, veuillez redémarrer le programme.",
"excel.header.time": "Date",
@ -78,8 +92,12 @@
"excel.header.total": "Tirages",
"excel.header.pity": "Pity 5★",
"excel.header.remark": "Commentaire",
"excel.wish2": "",
"excel.wish2": "Sauts hyperespaces 2",
"excel.customFont": "Arial",
"excel.filePrefix": "",
"excel.fileType": "Classeur Excel"
"excel.filePrefix": "StarRail_historique_sauts",
"excel.fileType": "Classeur Excel",
"srgf.fileType": "Fichier Star Rail Gacha Log Format",
"ui.extra.cacheClean": "1. Vérifiez si l'historique de sauts hyperespaces du jeu a été ouvert et si l'erreur \"Authentification utilisateur expirée\" apparaît toujours, essayez les étapes suivantes \n2. Fermez la fenêtre de jeu de Star Rail \n3. Cliquez sur le bouton \"Ouvrir le dossier de cache Web\" ci-dessus pour ouvrir le dossier \"Cache\" \n4. Supprimez le dossier \"Cache_Data\" \n5. Démarrez le jeu Star Rail et ouvrez la page d'historique de sauts hyperespaces dans le jeu \n6. Fermez cette boîte de dialogue et cliquez sur le bouton \"Mettre à jour les données\"",
"ui.extra.findCacheFolder": "Si le bouton \"Ouvrir le dossier de cache\" ne répond pas, vous pouvez rechercher manuellement le dossier de cache web du jeu. Le répertoire est \"Chemin d'installation de votre jeu/Star Rail/Games/StarRail_Data/webCaches/Cache/\"",
"ui.extra.urlCopied": "URL copiée"
}

View File

@ -1,4 +1,4 @@
const { readJSON, saveJSON, decipherAes, cipherAes, detectLocale, userDataPath, globalUserDataPath } = require('./utils')
const { readJSON, saveJSON, decipherAes, cipherAes, detectLocale, userDataPath } = require('./utils')
const config = {
urls: [],
@ -14,9 +14,7 @@ const config = {
const getLocalConfig = async () => {
let localConfig = await readJSON(userDataPath, 'config.json')
if (!localConfig) {
localConfig = await readJSON(globalUserDataPath, 'config.json')
}
if (!localConfig) return
const configTemp = {}
for (let key in localConfig) {

View File

@ -57,7 +57,7 @@ const start = async () => {
const workbook = new ExcelJS.Workbook()
for (let [key, value] of data.result) {
const name = data.typeMap.get(key)
const sheet = workbook.addWorksheet(name, {views: [{state: 'frozen', ySplit: 1}]})
const sheet = workbook.addWorksheet(name.replace(/[*?:\/\\]/g, ' '), {views: [{state: 'frozen', ySplit: 1}]})
let width = [24, 14, 8, 8, 8, 8, 8]
if (!data.lang.includes('zh-')) {
width = [24, 32, 16, 12, 12, 12, 8]

View File

@ -3,7 +3,7 @@ const util = require('util')
const path = require('path')
const { URL } = require('url')
const { app, ipcMain, shell } = require('electron')
const { sleep, request, sendMsg, readJSON, saveJSON, detectLocale, getCacheText, userDataPath, userPath, localIp, langMap, globalUserDataPath } = require('./utils')
const { sleep, request, sendMsg, readJSON, saveJSON, detectLocale, getCacheText, userDataPath, userPath, localIp, langMap } = require('./utils')
const config = require('./config')
const i18n = require('./i18n')
const { enableProxy, disableProxy } = require('./module/system-proxy')
@ -42,10 +42,8 @@ const findDataFiles = async (dataPath, fileMap) => {
const collectDataFiles = async () => {
await fs.ensureDir(userDataPath)
await fs.ensureDir(globalUserDataPath)
const fileMap = new Map()
await findDataFiles(userDataPath, fileMap)
await findDataFiles(globalUserDataPath, fileMap)
return fileMap
}
@ -143,7 +141,7 @@ const readLog = async () => {
const gamePathMch = logText.match(/\w:\/.*?\/StarRail_Data\//i)
if (gamePathMch) {
const [cacheText, cacheFile] = await getCacheText(gamePathMch[0])
const urlMch = cacheText.match(/https.+?&auth_appid=webview_gacha&.+?authkey=.+?&game_biz=hkrpg_.+?&plat_type=pc/g)
const urlMch = cacheText.match(/https[^?]+?\?[^?]+?&auth_appid=webview_gacha&.+?authkey=.+?&game_biz=hkrpg_.+?&plat_type=pc/g)
if (urlMch) {
cacheFolder = cacheFile.replace(/Cache_Data[/\\]data_2$/, '')
return getLatestUrl(urlMch)
@ -290,7 +288,7 @@ const fixAuthkey = (url) => {
const getQuerystring = (url) => {
const text = i18n.log
const { searchParams, host } = new URL(fixAuthkey(url))
if (host.includes('webstatic-sea') || host.includes('hkrpg-api-os') || host.includes("api-os-takumi")) {
if (host.includes('webstatic-sea') || host.includes('hkrpg-api-os') || host.includes('api-os-takumi') || host.includes('hoyoverse.com')) {
apiDomain = 'https://api-os-takumi.mihoyo.com'
} else {
apiDomain = 'https://api-takumi.mihoyo.com'

View File

@ -13,7 +13,7 @@ const isDev = !app.isPackaged
const userPath = app.getPath('userData')
const appRoot = isDev ? path.resolve(__dirname, '..', '..') : path.resolve(app.getAppPath(), '..', '..')
const userDataPath = path.resolve(appRoot, 'userData')
const globalUserDataPath = path.resolve(userPath, 'userData')
// const globalUserDataPath = path.resolve(userPath, 'userData')
let win = null
const initWindow = () => {
@ -147,9 +147,6 @@ const detectLocale = (value) => {
const saveJSON = async (name, data) => {
try {
await fs.outputJSON(path.join(userDataPath, name), data)
if (!isDev) {
await fs.outputJSON(path.join(globalUserDataPath, name), data)
}
} catch (e) {
sendMsg(e, 'ERROR')
await sleep(3)
@ -221,5 +218,5 @@ async function getCacheText(gamePath) {
module.exports = {
sleep, request, hash, cipherAes, decipherAes, saveLog, getCacheText,
sendMsg, readJSON, saveJSON, initWindow, getWin, localIp, userPath, detectLocale, langMap,
appRoot, userDataPath, globalUserDataPath
appRoot, userDataPath
}