feat(aklive2d): use offical_update to fetch info
This commit is contained in:
14
aklive2d.js
14
aklive2d.js
@@ -14,12 +14,12 @@ import directory from './libs/directory.js'
|
|||||||
import Background from './libs/background.js'
|
import Background from './libs/background.js'
|
||||||
import CharwordTable from './libs/charword_table.js';
|
import CharwordTable from './libs/charword_table.js';
|
||||||
import Music from './libs/music.js';
|
import Music from './libs/music.js';
|
||||||
import officalUpdate from './libs/offical_update.js';
|
import OfficalInfo from './libs/offical_info.js';
|
||||||
import LogoInfo from './libs/logo_info.js';
|
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
global.__projectRoot = path.dirname(fileURLToPath(import.meta.url))
|
global.__projectRoot = path.dirname(fileURLToPath(import.meta.url))
|
||||||
global.__config = getConfig()
|
const officalInfo = new OfficalInfo()
|
||||||
|
global.__config = getConfig(officalInfo)
|
||||||
|
|
||||||
global.__error = []
|
global.__error = []
|
||||||
|
|
||||||
@@ -28,7 +28,6 @@ async function main() {
|
|||||||
|
|
||||||
const charwordTable = new CharwordTable()
|
const charwordTable = new CharwordTable()
|
||||||
const musicTable = new Music()
|
const musicTable = new Music()
|
||||||
const logoTable = new LogoInfo()
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Skip all, no need for OPERATOR_NAME
|
* Skip all, no need for OPERATOR_NAME
|
||||||
@@ -56,11 +55,8 @@ async function main() {
|
|||||||
case 'music':
|
case 'music':
|
||||||
await musicTable.process()
|
await musicTable.process()
|
||||||
process.exit(0)
|
process.exit(0)
|
||||||
case 'logo':
|
|
||||||
await logoTable.process()
|
|
||||||
process.exit(0)
|
|
||||||
case 'offical_update':
|
case 'offical_update':
|
||||||
await officalUpdate()
|
await officalInfo.update()
|
||||||
process.exit(0)
|
process.exit(0)
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
@@ -101,7 +97,7 @@ async function main() {
|
|||||||
*/
|
*/
|
||||||
switch (op) {
|
switch (op) {
|
||||||
case 'init':
|
case 'init':
|
||||||
init(OPERATOR_NAME, [EXTRACTED_FOLDER, ...VOICE_FOLDERS])
|
init(OPERATOR_NAME, [EXTRACTED_FOLDER, ...VOICE_FOLDERS], officalInfo)
|
||||||
process.exit(0)
|
process.exit(0)
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -1,13 +1,11 @@
|
|||||||
date: 2021/08
|
|
||||||
filename: dyn_illust_char_1013_chen2
|
filename: dyn_illust_char_1013_chen2
|
||||||
logo: logo_rhodes_override
|
logo: logo_rhodes_override
|
||||||
fallback_name: char_1013_chen2_2
|
fallback_name: char_1013_chen2_2
|
||||||
viewport_left: 0
|
viewport_left: 0
|
||||||
viewport_right: 0
|
viewport_right: 0
|
||||||
viewport_top: 1
|
viewport_top: 0
|
||||||
viewport_bottom: 1
|
viewport_bottom: 0
|
||||||
invert_filter: false
|
invert_filter: false
|
||||||
color: rgba(14, 126, 239, 0.85)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 假日威龙陈
|
zh-CN: 假日威龙陈
|
||||||
en-US: Ch'en/Chen the Holungday
|
en-US: Ch'en/Chen the Holungday
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2021/08
|
|
||||||
filename: dyn_illust_char_1013_chen2
|
filename: dyn_illust_char_1013_chen2
|
||||||
logo: logo_rhodes_override
|
logo: logo_rhodes_override
|
||||||
fallback_name: char_1013_chen2_2
|
fallback_name: char_1013_chen2_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 1
|
viewport_top: 1
|
||||||
viewport_bottom: 1
|
viewport_bottom: 1
|
||||||
invert_filter: false
|
invert_filter: false
|
||||||
color: rgba(14, 126, 239, 0.85)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 假日威龙陈
|
zh-CN: 假日威龙陈
|
||||||
en-US: Ch'en/Chen the Holungday
|
en-US: Ch'en/Chen the Holungday
|
||||||
|
offical_id: "20220345"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/04
|
|
||||||
filename: dyn_illust_char_1013_chen2_boc#6
|
filename: dyn_illust_char_1013_chen2_boc#6
|
||||||
logo: logo_rhodes_override
|
logo: logo_rhodes_override
|
||||||
fallback_name: char_1013_chen2_boc#6
|
fallback_name: char_1013_chen2_boc#6
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 1
|
|||||||
viewport_top: 2
|
viewport_top: 2
|
||||||
viewport_bottom: -1
|
viewport_bottom: -1
|
||||||
invert_filter: false
|
invert_filter: false
|
||||||
color: rgb(6, 34, 129)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 万重山 · 假日威龙陈
|
zh-CN: 万重山 · 假日威龙陈
|
||||||
en-US: Ten Thousand Mountains / Ch'en/Chen the Holungday
|
en-US: Ten Thousand Mountains / Ch'en/Chen the Holungday
|
||||||
|
offical_id: "202304659"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/01
|
|
||||||
filename: dyn_illust_char_2024_chyue
|
filename: dyn_illust_char_2024_chyue
|
||||||
logo: logo_sui
|
logo: logo_sui
|
||||||
fallback_name: char_2024_chyue_2
|
fallback_name: char_2024_chyue_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(255, 133, 34)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 重岳
|
zh-CN: 重岳
|
||||||
en-US: Chongyue
|
en-US: Chongyue
|
||||||
|
offical_id: "202301606"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2021/02
|
|
||||||
filename: dyn_illust_char_2015_dusk
|
filename: dyn_illust_char_2015_dusk
|
||||||
logo: logo_sui
|
logo: logo_sui
|
||||||
fallback_name: char_2015_dusk_2
|
fallback_name: char_2015_dusk_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(9, 212, 208)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 夕
|
zh-CN: 夕
|
||||||
en-US: Dusk
|
en-US: Dusk
|
||||||
|
offical_id: "202203263"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2022/01
|
|
||||||
filename: dyn_illust_char_2015_dusk_nian#7
|
filename: dyn_illust_char_2015_dusk_nian#7
|
||||||
logo: logo_sui
|
logo: logo_sui
|
||||||
fallback_name: char_2015_dusk_nian#7
|
fallback_name: char_2015_dusk_nian#7
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(78, 201, 187)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 染尘烟 · 夕
|
zh-CN: 染尘烟 · 夕
|
||||||
en-US: Everything is a Miracle / Dusk
|
en-US: Everything is a Miracle / Dusk
|
||||||
|
offical_id: "20220321"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/07
|
|
||||||
filename: dyn_illust_char_1016_agoat2
|
filename: dyn_illust_char_1016_agoat2
|
||||||
logo: logo_Leithanien
|
logo: logo_Leithanien
|
||||||
fallback_name: char_1016_agoat2_2
|
fallback_name: char_1016_agoat2_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 5
|
viewport_top: 5
|
||||||
viewport_bottom: 5
|
viewport_bottom: 5
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(34, 187, 255)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 纯烬艾雅法拉
|
zh-CN: 纯烬艾雅法拉
|
||||||
en-US: Eyjafjalla the Hvít Aska
|
en-US: Eyjafjalla the Hvít Aska
|
||||||
|
offical_id: "202307865"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2022/08
|
|
||||||
filename: dyn_illust_char_1026_gvial2
|
filename: dyn_illust_char_1026_gvial2
|
||||||
logo: logo_rhodes_override
|
logo: logo_rhodes_override
|
||||||
fallback_name: char_1026_gvial2_2
|
fallback_name: char_1026_gvial2_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: false
|
invert_filter: false
|
||||||
color: rgb(29, 185, 53)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 百练嘉维尔
|
zh-CN: 百练嘉维尔
|
||||||
en-US: Gavial the Invincible
|
en-US: Gavial the Invincible
|
||||||
|
offical_id: "202208258"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/07
|
|
||||||
filename: dyn_illust_char_1026_gvial2_summer#12
|
filename: dyn_illust_char_1026_gvial2_summer#12
|
||||||
logo: logo_rhodes_override
|
logo: logo_rhodes_override
|
||||||
fallback_name: char_1026_gvial2_summer#12
|
fallback_name: char_1026_gvial2_summer#12
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: false
|
invert_filter: false
|
||||||
color: rgb(163, 220, 247)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 悠然假日 HD26 · 百炼嘉维尔
|
zh-CN: 悠然假日 HD26 · 百炼嘉维尔
|
||||||
en-US: Holiday HD26 / Gavial the Invincible
|
en-US: Holiday HD26 / Gavial the Invincible
|
||||||
|
offical_id: "202307886"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/07
|
|
||||||
filename: dyn_illust_char_377_gdglow_summer#12
|
filename: dyn_illust_char_377_gdglow_summer#12
|
||||||
logo: logo_victoria
|
logo: logo_victoria
|
||||||
fallback_name: char_377_gdglow_summer#12
|
fallback_name: char_377_gdglow_summer#12
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgba(253, 188, 208, 0.97)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 夏卉 FA394 · 澄闪
|
zh-CN: 夏卉 FA394 · 澄闪
|
||||||
en-US: Summer Flowers FA394 / Goldenglow
|
en-US: Summer Flowers FA394 / Goldenglow
|
||||||
|
offical_id: "202307824"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/04
|
|
||||||
filename: dyn_illust_char_003_kalts_boc#6
|
filename: dyn_illust_char_003_kalts_boc#6
|
||||||
logo: logo_rhodes_override
|
logo: logo_rhodes_override
|
||||||
fallback_name: char_003_kalts_boc#6
|
fallback_name: char_003_kalts_boc#6
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: false
|
invert_filter: false
|
||||||
color: rgb(118, 165, 185)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 残余 · 凯尔希
|
zh-CN: 残余 · 凯尔希
|
||||||
en-US: Remnant / Kal'tsit
|
en-US: Remnant / Kal'tsit
|
||||||
|
offical_id: "202304833"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2022/10
|
|
||||||
filename: dyn_illust_char_322_lmlee_witch#3
|
filename: dyn_illust_char_322_lmlee_witch#3
|
||||||
logo: logo_lee
|
logo: logo_lee
|
||||||
fallback_name: char_322_lmlee_witch#3
|
fallback_name: char_322_lmlee_witch#3
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(206, 0, 0)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 手到牌来 · 老鲤
|
zh-CN: 手到牌来 · 老鲤
|
||||||
en-US: Trust Your Eyes / Lee
|
en-US: Trust Your Eyes / Lee
|
||||||
|
offical_id: "202210279"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2022/01
|
|
||||||
filename: dyn_illust_char_2023_ling
|
filename: dyn_illust_char_2023_ling
|
||||||
logo: logo_sui
|
logo: logo_sui
|
||||||
fallback_name: char_2023_ling_2
|
fallback_name: char_2023_ling_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(15, 206, 216)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 令
|
zh-CN: 令
|
||||||
en-US: Ling
|
en-US: Ling
|
||||||
|
offical_id: "20220383"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/01
|
|
||||||
filename: dyn_illust_char_2023_ling_nian#9
|
filename: dyn_illust_char_2023_ling_nian#9
|
||||||
logo: logo_sui
|
logo: logo_sui
|
||||||
fallback_name: char_2023_ling_nian#9
|
fallback_name: char_2023_ling_nian#9
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(37, 148, 197)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 濯缨 · 令
|
zh-CN: 濯缨 · 令
|
||||||
en-US: It Does Wash the Strings / Ling
|
en-US: It Does Wash the Strings / Ling
|
||||||
|
offical_id: "202301647"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/08
|
|
||||||
filename: dyn_illust_char_2023_ling_ncg#1
|
filename: dyn_illust_char_2023_ling_ncg#1
|
||||||
logo: logo_sui
|
logo: logo_sui
|
||||||
fallback_name: char_2023_ling_ncg#1
|
fallback_name: char_2023_ling_ncg#1
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(183, 227, 243)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 崖高梦远 · 令
|
zh-CN: 崖高梦远 · 令
|
||||||
en-US: Towering is Cliff of Nostalgia
|
en-US: Towering is Cliff of Nostalgia
|
||||||
|
offical_id: "202308807"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2022/12
|
|
||||||
filename: dyn_illust_char_437_mizuki_sale#7
|
filename: dyn_illust_char_437_mizuki_sale#7
|
||||||
logo: logo_higashi
|
logo: logo_higashi
|
||||||
fallback_name: char_437_mizuki_sale#7
|
fallback_name: char_437_mizuki_sale#7
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(156, 210, 246)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 夏日餮宴 · 水月
|
zh-CN: 夏日餮宴 · 水月
|
||||||
en-US: Summer Feast / Mizuki
|
en-US: Summer Feast / Mizuki
|
||||||
|
offical_id: "202211685"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/04
|
|
||||||
filename: dyn_illust_char_249_mlyss
|
filename: dyn_illust_char_249_mlyss
|
||||||
logo: logo_rhine
|
logo: logo_rhine
|
||||||
fallback_name: char_249_mlyss_2
|
fallback_name: char_249_mlyss_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 3
|
viewport_top: 3
|
||||||
viewport_bottom: 2
|
viewport_bottom: 2
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(146, 212, 143)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 缪尔赛思
|
zh-CN: 缪尔赛思
|
||||||
en-US: Muelsyse
|
en-US: Muelsyse
|
||||||
|
offical_id: "202304611"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/11
|
|
||||||
filename: dyn_illust_char_4064_mlynar_epoque#28
|
filename: dyn_illust_char_4064_mlynar_epoque#28
|
||||||
logo: logo_kazimierz
|
logo: logo_kazimierz
|
||||||
fallback_name: char_4064_mlynar_epoque#28
|
fallback_name: char_4064_mlynar_epoque#28
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(51, 63, 115)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 远路 · 玛恩纳
|
zh-CN: 远路 · 玛恩纳
|
||||||
en-US: W Dali / Młynar
|
en-US: W Dali / Młynar
|
||||||
|
offical_id: "202310850"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2021/11
|
|
||||||
filename: dyn_illust_char_1014_nearl2
|
filename: dyn_illust_char_1014_nearl2
|
||||||
logo: logo_kazimierz
|
logo: logo_kazimierz
|
||||||
fallback_name: char_1014_nearl2_2
|
fallback_name: char_1014_nearl2_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 3
|
|||||||
viewport_top: 10
|
viewport_top: 10
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgba(253, 236, 189, 0.95)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 耀骑士临光
|
zh-CN: 耀骑士临光
|
||||||
en-US: Nearl the Radiant Knight
|
en-US: Nearl the Radiant Knight
|
||||||
|
offical_id: "20220304"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2022/11
|
|
||||||
filename: dyn_illust_char_1014_nearl2_epoque#17
|
filename: dyn_illust_char_1014_nearl2_epoque#17
|
||||||
logo: logo_kazimierz
|
logo: logo_kazimierz
|
||||||
fallback_name: char_1014_nearl2_epoque#17
|
fallback_name: char_1014_nearl2_epoque#17
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(141, 213, 228)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 复现荣光 · 耀骑士临光
|
zh-CN: 复现荣光 · 耀骑士临光
|
||||||
en-US: Relight / Nearl
|
en-US: Relight / Nearl
|
||||||
|
offical_id: "202210623"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2020/01
|
|
||||||
filename: dyn_illust_char_2014_nian
|
filename: dyn_illust_char_2014_nian
|
||||||
logo: logo_sui
|
logo: logo_sui
|
||||||
fallback_name: char_2014_nian_2
|
fallback_name: char_2014_nian_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 2
|
|||||||
viewport_top: 3
|
viewport_top: 3
|
||||||
viewport_bottom: 5
|
viewport_bottom: 5
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(255, 48, 0)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 年
|
zh-CN: 年
|
||||||
en-US: Nian
|
en-US: Nian
|
||||||
|
offical_id: "202203231"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2021/02
|
|
||||||
filename: dyn_illust_char_2014_nian_nian#4
|
filename: dyn_illust_char_2014_nian_nian#4
|
||||||
logo: logo_sui
|
logo: logo_sui
|
||||||
fallback_name: char_2014_nian_nian#4
|
fallback_name: char_2014_nian_nian#4
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(187, 163, 106)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 乐逍遥 · 年
|
zh-CN: 乐逍遥 · 年
|
||||||
en-US: Unfettered Freedom / Nian
|
en-US: Unfettered Freedom / Nian
|
||||||
|
offical_id: "20220362"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2022/11
|
|
||||||
filename: dyn_illust_char_472_pasngr_epoque#17
|
filename: dyn_illust_char_472_pasngr_epoque#17
|
||||||
logo: logo_sargon
|
logo: logo_sargon
|
||||||
fallback_name: char_472_pasngr_epoque#17
|
fallback_name: char_472_pasngr_epoque#17
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(231, 166, 144)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 今昔须臾之梦 · 异客
|
zh-CN: 今昔须臾之梦 · 异客
|
||||||
en-US: Dream in a Moment / Passager
|
en-US: Dream in a Moment / Passager
|
||||||
|
offical_id: "202210664"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2022/04
|
|
||||||
filename: dyn_illust_char_250_phatom_sale#4
|
filename: dyn_illust_char_250_phatom_sale#4
|
||||||
logo: logo_victoria
|
logo: logo_victoria
|
||||||
fallback_name: char_250_phatom_sale#4
|
fallback_name: char_250_phatom_sale#4
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 5
|
viewport_top: 5
|
||||||
viewport_bottom: 1
|
viewport_bottom: 1
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(158, 2, 2)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 焦点 · 傀影
|
zh-CN: 焦点 · 傀影
|
||||||
en-US: Focus / Phatom
|
en-US: Focus / Phatom
|
||||||
|
offical_id: "202203222"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/02
|
|
||||||
filename: dyn_illust_char_4055_bgsnow_wild#7
|
filename: dyn_illust_char_4055_bgsnow_wild#7
|
||||||
logo: logo_rhodes_override
|
logo: logo_rhodes_override
|
||||||
fallback_name: char_4055_bgsnow_wild#7
|
fallback_name: char_4055_bgsnow_wild#7
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: false
|
invert_filter: false
|
||||||
color: rgb(145, 220, 253)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 字句中的雪原 · 鸿雪
|
zh-CN: 字句中的雪原 · 鸿雪
|
||||||
en-US: Snowy Plains in Words / Позёмка
|
en-US: Snowy Plains in Words / Позёмка
|
||||||
|
offical_id: "202302698"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2020/11
|
|
||||||
filename: dyn_illust_char_391_rosmon
|
filename: dyn_illust_char_391_rosmon
|
||||||
logo: logo_elite
|
logo: logo_elite
|
||||||
fallback_name: char_391_rosmon_2
|
fallback_name: char_391_rosmon_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: -14
|
|||||||
viewport_top: -38
|
viewport_top: -38
|
||||||
viewport_bottom: -1
|
viewport_bottom: -1
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(23, 210, 236)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 迷迭香
|
zh-CN: 迷迭香
|
||||||
en-US: Rosmontis
|
en-US: Rosmontis
|
||||||
|
offical_id: "20220378"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2022/11
|
|
||||||
filename: dyn_illust_char_391_rosmon_epoque#17
|
filename: dyn_illust_char_391_rosmon_epoque#17
|
||||||
logo: logo_elite
|
logo: logo_elite
|
||||||
fallback_name: char_391_rosmon_epoque#17
|
fallback_name: char_391_rosmon_epoque#17
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(116, 177, 222)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 拥抱新生 · 迷迭香
|
zh-CN: 拥抱新生 · 迷迭香
|
||||||
en-US: Become Anew / Rosmontis
|
en-US: Become Anew / Rosmontis
|
||||||
|
offical_id: "202210632"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2021/05
|
|
||||||
filename: dyn_illust_char_1012_skadi2
|
filename: dyn_illust_char_1012_skadi2
|
||||||
logo: logo_egir
|
logo: logo_egir
|
||||||
fallback_name: char_1012_skadi2_2
|
fallback_name: char_1012_skadi2_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: -10
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: -12
|
viewport_bottom: -12
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(226, 96, 96)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 浊心斯卡蒂
|
zh-CN: 浊心斯卡蒂
|
||||||
en-US: Skadi the Corrupting Heart
|
en-US: Skadi the Corrupting Heart
|
||||||
|
offical_id: "20220396"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2022/05
|
|
||||||
filename: dyn_illust_char_1012_skadi2_boc#4
|
filename: dyn_illust_char_1012_skadi2_boc#4
|
||||||
logo: logo_egir
|
logo: logo_egir
|
||||||
fallback_name: char_1012_skadi2_boc#4
|
fallback_name: char_1012_skadi2_boc#4
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgba(95, 116, 187, 0.74)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 升华 · 浊心斯卡蒂
|
zh-CN: 升华 · 浊心斯卡蒂
|
||||||
en-US: Sublimation / Skadi the Corrupting Heart
|
en-US: Sublimation / Skadi the Corrupting Heart
|
||||||
|
offical_id: "202204205"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2022/05
|
|
||||||
filename: dyn_illust_char_1023_ghost2
|
filename: dyn_illust_char_1023_ghost2
|
||||||
logo: logo_abyssal
|
logo: logo_abyssal
|
||||||
fallback_name: char_1023_ghost2_2
|
fallback_name: char_1023_ghost2_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgba(14, 124, 203, 0.86)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 归溟幽灵鲨
|
zh-CN: 归溟幽灵鲨
|
||||||
en-US: Specter the Unchained
|
en-US: Specter the Unchained
|
||||||
|
offical_id: "202204284"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/04
|
|
||||||
filename: dyn_illust_char_1023_ghost2_boc#6
|
filename: dyn_illust_char_1023_ghost2_boc#6
|
||||||
logo: logo_abyssal
|
logo: logo_abyssal
|
||||||
fallback_name: char_1023_ghost2_boc#6
|
fallback_name: char_1023_ghost2_boc#6
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 1
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 1
|
viewport_bottom: 1
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(140, 7, 7)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 生而为一 · 归溟幽灵鲨
|
zh-CN: 生而为一 · 归溟幽灵鲨
|
||||||
en-US: Born as One / Specter the Unchained
|
en-US: Born as One / Specter the Unchained
|
||||||
|
offical_id: "202304670"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2022/08
|
|
||||||
filename: dyn_illust_char_350_surtr_summer#9
|
filename: dyn_illust_char_350_surtr_summer#9
|
||||||
logo: logo_rhodes_override
|
logo: logo_rhodes_override
|
||||||
fallback_name: char_350_surtr_summer#9
|
fallback_name: char_350_surtr_summer#9
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 6
|
|||||||
viewport_top: 1
|
viewport_top: 1
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: false
|
invert_filter: false
|
||||||
color: rgb(177, 226, 249)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 缤纷奇境 CW03 · 史尔特尔
|
zh-CN: 缤纷奇境 CW03 · 史尔特尔
|
||||||
en-US: Colorful Wonderland CW03 / Surtr
|
en-US: Colorful Wonderland CW03 / Surtr
|
||||||
|
offical_id: "202208297"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2022/11
|
|
||||||
filename: dyn_illust_char_1028_texas2
|
filename: dyn_illust_char_1028_texas2
|
||||||
logo: logo_penguin
|
logo: logo_penguin
|
||||||
fallback_name: char_1028_texas2_2
|
fallback_name: char_1028_texas2_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgba(34, 37, 255, 0.9)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 缄默德克萨斯
|
zh-CN: 缄默德克萨斯
|
||||||
en-US: Texas the Omertosa
|
en-US: Texas the Omertosa
|
||||||
|
offical_id: "202210210"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/11
|
|
||||||
filename: dyn_illust_char_1028_texas2_iteration#1
|
filename: dyn_illust_char_1028_texas2_iteration#1
|
||||||
logo: logo_penguin
|
logo: logo_penguin
|
||||||
fallback_name: char_1028_texas2_iteration#1
|
fallback_name: char_1028_texas2_iteration#1
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(222, 2, 7)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 破翼者 · 缄默德克萨斯
|
zh-CN: 破翼者 · 缄默德克萨斯
|
||||||
en-US: Wingbreaker / Texas the Omertosa
|
en-US: Wingbreaker / Texas the Omertosa
|
||||||
|
offical_id: "202310899"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2023/11
|
|
||||||
filename: dyn_illust_char_245_cello
|
filename: dyn_illust_char_245_cello
|
||||||
logo: logo_Laterano
|
logo: logo_Laterano
|
||||||
fallback_name: char_245_cello_2
|
fallback_name: char_245_cello_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 0
|
viewport_bottom: 0
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(189, 103, 7)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 塑心
|
zh-CN: 塑心
|
||||||
en-US: Virtuosa
|
en-US: Virtuosa
|
||||||
|
offical_id: "202310848"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2020/05
|
|
||||||
filename: dyn_illust_char_113_cqbw
|
filename: dyn_illust_char_113_cqbw
|
||||||
logo: logo_babel
|
logo: logo_babel
|
||||||
fallback_name: char_113_cqbw_2
|
fallback_name: char_113_cqbw_2
|
||||||
@@ -7,7 +6,7 @@ viewport_right: -3
|
|||||||
viewport_top: 0
|
viewport_top: 0
|
||||||
viewport_bottom: 1
|
viewport_bottom: 1
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgb(228, 54, 56)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: W
|
zh-CN: W
|
||||||
en-US: W
|
en-US: W
|
||||||
|
offical_id: "20220319"
|
||||||
@@ -1,4 +1,3 @@
|
|||||||
date: 2020/11
|
|
||||||
filename: dyn_illust_char_113_cqbw_epoque#7
|
filename: dyn_illust_char_113_cqbw_epoque#7
|
||||||
logo: logo_babel
|
logo: logo_babel
|
||||||
fallback_name: char_113_cqbw_epoque#7
|
fallback_name: char_113_cqbw_epoque#7
|
||||||
@@ -7,7 +6,7 @@ viewport_right: 0
|
|||||||
viewport_top: 1
|
viewport_top: 1
|
||||||
viewport_bottom: -4
|
viewport_bottom: -4
|
||||||
invert_filter: true
|
invert_filter: true
|
||||||
color: rgba(0, 0, 0, 0.83)
|
|
||||||
codename:
|
codename:
|
||||||
zh-CN: 恍惚 · W
|
zh-CN: 恍惚 · W
|
||||||
en-US: Wonder / W
|
en-US: Wonder / W
|
||||||
|
offical_id: "202206246"
|
||||||
@@ -3,22 +3,27 @@ import path from 'path'
|
|||||||
import { read } from './yaml.js'
|
import { read } from './yaml.js'
|
||||||
import { getOperatorId } from './charword_table.js'
|
import { getOperatorId } from './charword_table.js'
|
||||||
|
|
||||||
export default function () {
|
export default function (officalInfo) {
|
||||||
return process(read(path.join(__projectRoot, 'config.yaml')))
|
return process(read(path.join(__projectRoot, 'config.yaml')), officalInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
function process(config) {
|
function process(config, officalInfo) {
|
||||||
for (const [operatorName, operator] of Object.entries(config.operators)) {
|
for (const [operatorName, operator] of Object.entries(config.operators)) {
|
||||||
|
const operatorInfo = officalInfo.find(operator.offical_id)
|
||||||
// add title
|
// add title
|
||||||
operator.title = `${config.share.title["en-US"]}${operator.codename["en-US"]} - ${config.share.title["zh-CN"]}${operator.codename["zh-CN"]}`
|
operator.title = `${config.share.title["en-US"]}${operator.codename["en-US"]} - ${config.share.title["zh-CN"]}${operator.codename["zh-CN"]}`
|
||||||
// add type
|
// add type
|
||||||
operator.type = operator.codename["zh-CN"].includes('·') ? 'skin' : 'operator'
|
operator.type = operatorInfo.type
|
||||||
|
|
||||||
// add link
|
// add link
|
||||||
operator.link = operatorName
|
operator.link = operatorName
|
||||||
|
|
||||||
// id
|
// id
|
||||||
operator.id = getOperatorId(operator).replace(/^(char_)(\d+)(_.+)$/g, '$2')
|
operator.id = getOperatorId(operator).replace(/^(char_)(\d+)(_.+)$/g, '$2')
|
||||||
|
|
||||||
|
operator.color = operatorInfo.color
|
||||||
|
|
||||||
|
operator.date = operatorInfo.date
|
||||||
}
|
}
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
|||||||
@@ -5,13 +5,19 @@ import { read as readYAML } from './yaml.js'
|
|||||||
import { mkdir, writeSync } from './file.js'
|
import { mkdir, writeSync } from './file.js'
|
||||||
import { appendMainConfig } from './append.js'
|
import { appendMainConfig } from './append.js'
|
||||||
|
|
||||||
export default function init(operatorName, extractedDir) {
|
export default function init(operatorName, extractedDir, officalInfo) {
|
||||||
|
const officalId = process.argv[4]
|
||||||
|
const template = readYAML(path.join(__projectRoot, 'config', '_template.yaml'))
|
||||||
extractedDir.forEach((dir) => {
|
extractedDir.forEach((dir) => {
|
||||||
mkdir(dir)
|
mkdir(dir)
|
||||||
})
|
})
|
||||||
const date = new Date()
|
const currentOpertor = officalInfo.find(officalId);
|
||||||
const template = readYAML(path.join(__projectRoot, 'config', '_template.yaml'))
|
if (currentOpertor === undefined) {
|
||||||
template.date = `${date.getFullYear()}/${(date.getMonth() + 1).toString().padStart(2, '0') }`
|
throw new Error('Invalid operator id')
|
||||||
|
}
|
||||||
|
template.offical_id = currentOpertor.id
|
||||||
|
template.codename = currentOpertor.codename
|
||||||
|
|
||||||
writeSync(stringify(template), path.join(__projectRoot, 'config', `${operatorName}.yaml`))
|
writeSync(stringify(template), path.join(__projectRoot, 'config', `${operatorName}.yaml`))
|
||||||
appendMainConfig(operatorName)
|
appendMainConfig(operatorName)
|
||||||
}
|
}
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
/* eslint-disable no-undef */
|
|
||||||
import path from 'path';
|
|
||||||
import { writeSync, readSync } from "./file.js"
|
|
||||||
import Downloader from "./downloader.js"
|
|
||||||
|
|
||||||
export default class LogoInfo {
|
|
||||||
#downloader = new Downloader()
|
|
||||||
#sharedPath = path.join(__projectRoot, __config.folder.operator, __config.folder.share)
|
|
||||||
|
|
||||||
async process() {
|
|
||||||
const logoTable = await this.#download()
|
|
||||||
const nameFileMapping = {}
|
|
||||||
Object.keys(logoTable.forceToGroupDict).forEach(key => {
|
|
||||||
nameFileMapping[logoTable.forceToGroupDict[key]] = `${key}.png`;
|
|
||||||
});
|
|
||||||
// writeSync(JSON.stringify(list, null), path.join(this.#sharedPath, `logo_table.json`))
|
|
||||||
}
|
|
||||||
|
|
||||||
async #download() {
|
|
||||||
const logoTable = await this.#downloader.github(`https://api.github.com/repos/Kengxxiao/ArknightsGameData/commits?path=zh_CN/gamedata/art/handbookpos_table.json`, `https://raw.githubusercontent.com/Kengxxiao/ArknightsGameData/master/zh_CN/gamedata/art/handbookpos_table.json`, path.join(this.#sharedPath, `handbookpos_table.json`))
|
|
||||||
return logoTable
|
|
||||||
}
|
|
||||||
|
|
||||||
lookup() {
|
|
||||||
const logoTable = JSON.parse(readSync(path.join(this.#sharedPath, `logo_table.json`)))
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
83
libs/offical_info.js
Normal file
83
libs/offical_info.js
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
import jsdom from 'jsdom';
|
||||||
|
import fetch from "node-fetch";
|
||||||
|
import path from "path";
|
||||||
|
import { writeSync, readSync } from "./file.js";
|
||||||
|
|
||||||
|
export default class OfficalInfo {
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
|
#data = JSON.parse(readSync(path.join(__projectRoot, 'offical_update.json')))
|
||||||
|
#idMapping = {}
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
Object.keys(this.#data).forEach((key) => {
|
||||||
|
this.#idMapping[this.#data[key].id]
|
||||||
|
if (typeof this.#data[key] === 'object') {
|
||||||
|
this.#data[key].forEach((operator) => {
|
||||||
|
this.#idMapping[operator.id] = {
|
||||||
|
date: key,
|
||||||
|
...operator
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
find(id) {
|
||||||
|
return this.#idMapping[id]
|
||||||
|
}
|
||||||
|
|
||||||
|
async update() {
|
||||||
|
const f = await fetch("https://ak.hypergryph.com/archive/dynamicCompile/")
|
||||||
|
const html_text = await f.text()
|
||||||
|
|
||||||
|
const dom = new jsdom.JSDOM(html_text);
|
||||||
|
const rows = dom.window.document.body.querySelector(".dynList").querySelectorAll(".row")
|
||||||
|
|
||||||
|
const dict = {
|
||||||
|
length: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const row of rows) {
|
||||||
|
const date = row.querySelector(".date").textContent.trim()
|
||||||
|
const operators = []
|
||||||
|
|
||||||
|
const charCards = row.querySelectorAll(".charCard")
|
||||||
|
|
||||||
|
if (dict.length === 0) {
|
||||||
|
dict.latest = date
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const charCard of charCards) {
|
||||||
|
const color = charCard.style.color
|
||||||
|
const codename = {
|
||||||
|
"zh-CN": charCard.querySelector(".info").querySelector(".name").querySelector(".text").textContent.trim(),
|
||||||
|
"en-US": charCard.querySelector(".info").querySelector(".codename").textContent.trim()
|
||||||
|
}
|
||||||
|
const rawType = charCard.querySelector(".typeIcon").querySelector("svg").querySelector("use").getAttribute("xlink:href")
|
||||||
|
const link = "https://ak.hypergryph.com" + charCard.getAttribute("href")
|
||||||
|
const linkSplited = link.split("/")
|
||||||
|
const id = linkSplited[linkSplited.length - 1].replace(".html", "")
|
||||||
|
|
||||||
|
let type;
|
||||||
|
switch (rawType) {
|
||||||
|
case "#skin-type-icon-hanger":
|
||||||
|
type = "skin"
|
||||||
|
break;
|
||||||
|
case "#skin-type-icon-promotion2":
|
||||||
|
type = "operator"
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
operators.push({
|
||||||
|
color,
|
||||||
|
codename,
|
||||||
|
type,
|
||||||
|
link,
|
||||||
|
id
|
||||||
|
})
|
||||||
|
dict.length++
|
||||||
|
}
|
||||||
|
dict[date] = operators
|
||||||
|
}
|
||||||
|
writeSync(JSON.stringify(dict, null, 4), path.join('offical_update.json'))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
import jsdom from 'jsdom';
|
|
||||||
import fetch from "node-fetch";
|
|
||||||
import path from "path";
|
|
||||||
import { writeSync } from "./file.js";
|
|
||||||
|
|
||||||
export default async function () {
|
|
||||||
const f = await fetch("https://ak.hypergryph.com/archive/dynamicCompile/")
|
|
||||||
const html_text = await f.text()
|
|
||||||
|
|
||||||
const dom = new jsdom.JSDOM(html_text);
|
|
||||||
const rows = dom.window.document.body.querySelector(".dynList").querySelectorAll(".row")
|
|
||||||
|
|
||||||
const dict = {
|
|
||||||
length: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const row of rows) {
|
|
||||||
const date = row.querySelector(".date").textContent.trim()
|
|
||||||
const operators = []
|
|
||||||
|
|
||||||
const charCards = row.querySelectorAll(".charCard")
|
|
||||||
|
|
||||||
if (dict.length === 0) {
|
|
||||||
dict.latest = date
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const charCard of charCards) {
|
|
||||||
const color = charCard.style.color
|
|
||||||
const codename = {
|
|
||||||
"zh-CN": charCard.querySelector(".info").querySelector(".name").querySelector(".text").textContent.trim(),
|
|
||||||
"en-US": charCard.querySelector(".info").querySelector(".codename").textContent.trim()
|
|
||||||
}
|
|
||||||
const rawType = charCard.querySelector(".typeIcon").querySelector("svg").querySelector("use").getAttribute("xlink:href")
|
|
||||||
const link = "https://ak.hypergryph.com" + charCard.getAttribute("href")
|
|
||||||
const linkSplited = link.split("/")
|
|
||||||
const id = linkSplited[linkSplited.length - 1].replace(".html", "")
|
|
||||||
|
|
||||||
let type;
|
|
||||||
switch (rawType) {
|
|
||||||
case "#skin-type-icon-hanger":
|
|
||||||
type = "skin"
|
|
||||||
break;
|
|
||||||
case "#skin-type-icon-promotion2":
|
|
||||||
type = "operator"
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
operators.push({
|
|
||||||
color,
|
|
||||||
codename,
|
|
||||||
type,
|
|
||||||
link,
|
|
||||||
id
|
|
||||||
})
|
|
||||||
dict.length++
|
|
||||||
}
|
|
||||||
dict[date] = operators
|
|
||||||
}
|
|
||||||
writeSync(JSON.stringify(dict, null, 4), path.join('offical_update.json'))
|
|
||||||
}
|
|
||||||
@@ -9,12 +9,14 @@ import { rmdir } from './libs/file.js'
|
|||||||
import Music from './libs/music.js';
|
import Music from './libs/music.js';
|
||||||
import Background from './libs/background.js'
|
import Background from './libs/background.js'
|
||||||
import directory from './libs/directory.js'
|
import directory from './libs/directory.js'
|
||||||
|
import OfficalInfo from './libs/offical_info.js';
|
||||||
import { PerfseePlugin } from '@perfsee/rollup'
|
import { PerfseePlugin } from '@perfsee/rollup'
|
||||||
|
|
||||||
global.__projectRoot = path.dirname(fileURLToPath(import.meta.url))
|
global.__projectRoot = path.dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
class ViteRunner {
|
class ViteRunner {
|
||||||
#globalConfig = getConfig()
|
#officalInfo = new OfficalInfo()
|
||||||
|
#globalConfig = getConfig(this.#officalInfo)
|
||||||
#mode
|
#mode
|
||||||
#baseViteConfig = {
|
#baseViteConfig = {
|
||||||
plugins: [splitVendorChunkPlugin()],
|
plugins: [splitVendorChunkPlugin()],
|
||||||
@@ -195,7 +197,8 @@ class ViteRunner {
|
|||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
if (process.env.npm_lifecycle_event.includes('vite')) {
|
if (process.env.npm_lifecycle_event.includes('vite')) {
|
||||||
global.__config = getConfig()
|
const officalInfo = new OfficalInfo()
|
||||||
|
global.__config = getConfig(officalInfo)
|
||||||
const background = new Background()
|
const background = new Background()
|
||||||
await background.process()
|
await background.process()
|
||||||
const backgrounds = ['operator_bg.png', ...background.files]
|
const backgrounds = ['operator_bg.png', ...background.files]
|
||||||
|
|||||||
Reference in New Issue
Block a user