diff --git a/.vscode/launch.json b/.vscode/launch.json index 5af9246..c8522e0 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -55,6 +55,13 @@ "request": "launch", "command": "pnpm run charword", "cwd": "${workspaceFolder}" + }, + { + "type": "node-terminal", + "name": "Run Script: music", + "request": "launch", + "command": "pnpm run music", + "cwd": "${workspaceFolder}" } ] } diff --git a/aklive2d.js b/aklive2d.js index d89876c..4292b5a 100644 --- a/aklive2d.js +++ b/aklive2d.js @@ -25,6 +25,7 @@ async function main() { let OPERATOR_NAMES = process.argv.slice(3); const charwordTable = new CharwordTable() + const musicTable = new Music() /** * Skip all, no need for OPERATOR_NAME @@ -49,6 +50,9 @@ async function main() { case 'charword': await charwordTable.process() process.exit(0) + case 'music': + await musicTable.process() + process.exit(0) default: break } @@ -58,7 +62,7 @@ async function main() { const background = new Background() await background.process() const backgrounds = ['operator_bg.png', ...background.files] - const { musicToCopy, musicMapping } = Music() + const { musicToCopy, musicMapping } = musicTable.copy() for (const OPERATOR_NAME of OPERATOR_NAMES) { const OPERATOR_SOURCE_FOLDER = path.join(__projectRoot, __config.folder.operator) diff --git a/libs/music.js b/libs/music.js index 857183a..e97c484 100644 --- a/libs/music.js +++ b/libs/music.js @@ -1,19 +1,35 @@ /* eslint-disable no-undef */ import path from 'path'; import { read } from './yaml.js'; +import Downloader from "./downloader.js" + +export default class Music { + #downloader = new Downloader() + #sharedPath = path.join(__projectRoot, __config.folder.operator, __config.folder.share) + + async process() { + + } + + async #download() { + const metaTable = await this.#downloader.github(`https://api.github.com/repos/Kengxxiao/ArknightsGameData/commits?path=zh_CN/gamedata/excel/display_meta_table.json`, `https://raw.githubusercontent.com/Kengxxiao/ArknightsGameData/master/zh_CN/gamedata/excel/display_meta_table.json`, path.join(this.#sharedPath, `display_meta_table.json`)) + const audioDataTable = await this.#downloader.github(`https://api.github.com/repos/Kengxxiao/ArknightsGameData/commits?path=zh_CN/gamedata/excel/audio_data.json`, `https://raw.githubusercontent.com/Kengxxiao/ArknightsGameData/master/zh_CN/gamedata/excel/audio_data.json`, path.join(this.#sharedPath, `audio_data.json`)) + console.log(metaTable, audioDataTable) + } + + copy() { + const musicFolder = path.join(__projectRoot, __config.folder.operator, __config.folder.share, __config.folder.music); + const musicMapping = read(path.join(musicFolder, 'mapping.yaml')); + const musicToCopy = Object.values(musicMapping).map(entry => Object.values(entry)).flat(1).filter(entry => entry !== null).map(entry => { + return { + filename: entry, + source: musicFolder, + } + }) -export default function () { - const musicFolder = path.join(__projectRoot, __config.folder.operator, __config.folder.share, __config.folder.music); - const musicMapping = read(path.join(musicFolder, 'mapping.yaml')); - const musicToCopy = Object.values(musicMapping).map(entry => Object.values(entry)).flat(1).filter(entry => entry !== null).map(entry => { return { - filename: entry, - source: musicFolder, + musicToCopy, + musicMapping, } - }) - - return { - musicToCopy, - musicMapping, } } \ No newline at end of file diff --git a/package.json b/package.json index 5e96ccb..ce38fd9 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "init": "node aklive2d init", "readme": "node aklive2d readme", "directory": "node aklive2d directory", - "charword": "node aklive2d charword", + "charwords": "node aklive2d charwords", + "music": "node aklive2d music", "vite:dev": "vite", "vite:build": "vite build", "vite:preview": "vite preview", diff --git a/vite.config.js b/vite.config.js index 96f4276..427e36d 100644 --- a/vite.config.js +++ b/vite.config.js @@ -200,7 +200,7 @@ async function main() { const background = new Background() await background.process() const backgrounds = ['operator_bg.png', ...background.files] - const { musicMapping } = Music() + const { musicMapping } = (new Music()).copy() directory({ backgrounds, musicMapping }) return