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",
|
||||
"command": "pnpm run music",
|
||||
"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 CharwordTable from './libs/charword_table.js';
|
||||
import Music from './libs/music.js';
|
||||
import officalUpdate from './libs/offical_update.js';
|
||||
|
||||
async function main() {
|
||||
global.__projectRoot = path.dirname(fileURLToPath(import.meta.url))
|
||||
@@ -53,6 +54,9 @@ async function main() {
|
||||
case 'music':
|
||||
await musicTable.process()
|
||||
process.exit(0)
|
||||
case 'offical_update':
|
||||
await officalUpdate()
|
||||
process.exit(0)
|
||||
default:
|
||||
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:directory:dev": "vite dev",
|
||||
"vite:directory:build": "vite build",
|
||||
"vite:directory:preview": "vite preview"
|
||||
"vite:directory:preview": "vite preview",
|
||||
"offical_update": "node aklive2d offical_update"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@perfsee/rollup": "^1.8.4",
|
||||
|
||||
Reference in New Issue
Block a user