feat(aklive2d): added ability to store latest dynchar info from offical website
This commit is contained in:
28
.github/workflows/update-offical-dyn-info.yaml
vendored
Normal file
28
.github/workflows/update-offical-dyn-info.yaml
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
name: Update Offical Dyn Info
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Use PNPM
|
||||||
|
uses: pnpm/action-setup@v2
|
||||||
|
with:
|
||||||
|
version: latest
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm i
|
||||||
|
- name: Update offical dyn info
|
||||||
|
run: pnpm run offical_update
|
||||||
|
- name: Commit changes if any
|
||||||
|
uses: stefanzweifel/git-auto-commit-action@v4
|
||||||
|
with:
|
||||||
|
commit_message: "chore(offical update): auto update"
|
||||||
7
.vscode/launch.json
vendored
7
.vscode/launch.json
vendored
@@ -69,6 +69,13 @@
|
|||||||
"request": "launch",
|
"request": "launch",
|
||||||
"command": "pnpm run music",
|
"command": "pnpm run music",
|
||||||
"cwd": "${workspaceFolder}"
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "node-terminal",
|
||||||
|
"name": "Run Script: offical_update",
|
||||||
|
"request": "launch",
|
||||||
|
"command": "pnpm run offical_update",
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ 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';
|
||||||
|
|
||||||
async function main() {
|
async function main() {
|
||||||
global.__projectRoot = path.dirname(fileURLToPath(import.meta.url))
|
global.__projectRoot = path.dirname(fileURLToPath(import.meta.url))
|
||||||
@@ -53,6 +54,9 @@ async function main() {
|
|||||||
case 'music':
|
case 'music':
|
||||||
await musicTable.process()
|
await musicTable.process()
|
||||||
process.exit(0)
|
process.exit(0)
|
||||||
|
case 'offical_update':
|
||||||
|
await officalUpdate()
|
||||||
|
process.exit(0)
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|||||||
47
libs/offical_update.js
Normal file
47
libs/offical_update.js
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
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 = {}
|
||||||
|
|
||||||
|
for (const row of rows) {
|
||||||
|
const date = row.querySelector(".date").textContent.trim()
|
||||||
|
const operators = []
|
||||||
|
|
||||||
|
const charCards = row.querySelectorAll(".charCard")
|
||||||
|
|
||||||
|
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")
|
||||||
|
|
||||||
|
let type;
|
||||||
|
switch (rawType) {
|
||||||
|
case "#skin-type-icon-hanger":
|
||||||
|
type = "skin"
|
||||||
|
break;
|
||||||
|
case "#skin-type-icon-promotion2":
|
||||||
|
type = "elite2"
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
operators.push({
|
||||||
|
color,
|
||||||
|
codename,
|
||||||
|
type
|
||||||
|
})
|
||||||
|
}
|
||||||
|
dict[date] = operators
|
||||||
|
}
|
||||||
|
writeSync(JSON.stringify(dict, null, 4), path.join('offical_update.json'))
|
||||||
|
}
|
||||||
@@ -18,7 +18,8 @@
|
|||||||
"vite:preview": "vite preview",
|
"vite:preview": "vite preview",
|
||||||
"vite:directory:dev": "vite dev",
|
"vite:directory:dev": "vite dev",
|
||||||
"vite:directory:build": "vite build",
|
"vite:directory:build": "vite build",
|
||||||
"vite:directory:preview": "vite preview"
|
"vite:directory:preview": "vite preview",
|
||||||
|
"offical_update": "node aklive2d offical_update"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@perfsee/rollup": "^1.8.4",
|
"@perfsee/rollup": "^1.8.4",
|
||||||
|
|||||||
Reference in New Issue
Block a user