From 2f3ded734f6cd99ff62b1562e91ee6bb028cde61 Mon Sep 17 00:00:00 2001 From: Tony Ribeiro Date: Sat, 14 Oct 2023 04:35:09 +0200 Subject: [PATCH 1/5] Added live2d asset category to allowed character assets. --- src/assets.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets.js b/src/assets.js index 8ab10750e..29792f982 100644 --- a/src/assets.js +++ b/src/assets.js @@ -5,7 +5,7 @@ const fetch = require('node-fetch').default; const { finished } = require('stream/promises'); const { DIRECTORIES, UNSAFE_EXTENSIONS } = require('./constants'); -const VALID_CATEGORIES = ["bgm", "ambient", "blip"]; +const VALID_CATEGORIES = ["bgm", "ambient", "blip", "live2d"]; /** * Sanitizes the input filename for theasset. From 2149bee87fbd19a9e1e6eb4d87e58271b1320a26 Mon Sep 17 00:00:00 2001 From: Tony Ribeiro Date: Thu, 19 Oct 2023 00:36:19 +0200 Subject: [PATCH 2/5] Add handling of multiple live2d asset per character --- src/assets.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/assets.js b/src/assets.js index 29792f982..96cc5d5d3 100644 --- a/src/assets.js +++ b/src/assets.js @@ -227,6 +227,24 @@ function registerEndpoints(app, jsonParser) { let output = []; try { if (fs.existsSync(folderPath) && fs.statSync(folderPath).isDirectory()) { + + // Live2d assets + if (category == "live2d") { + const folders = fs.readdirSync(folderPath) + for (let modelFolder of folders) { + const live2dModelPath = path.join(folderPath, modelFolder); + if (fs.statSync(live2dModelPath).isDirectory()) { + for (let file of fs.readdirSync(live2dModelPath)) { + console.debug(file) + if (file.includes("model")) + output.push([`${modelFolder}`,`/characters/${name}/${category}/${modelFolder}/${file}`]); + } + } + } + return response.send(output); + } + + // Other assets const files = fs.readdirSync(folderPath) .filter(filename => { return filename != ".placeholder"; @@ -234,7 +252,6 @@ function registerEndpoints(app, jsonParser) { for (let i of files) output.push(`/characters/${name}/${category}/${i}`); - } return response.send(output); } From 4bc2d7f6acdee11443dd4121c9a9966a8d5681f9 Mon Sep 17 00:00:00 2001 From: Tony Ribeiro Date: Sun, 22 Oct 2023 19:21:10 +0200 Subject: [PATCH 3/5] Add management of live2d model in assets folder. --- src/assets.js | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/assets.js b/src/assets.js index 96cc5d5d3..3722cc889 100644 --- a/src/assets.js +++ b/src/assets.js @@ -66,6 +66,26 @@ function registerEndpoints(app, jsonParser) { for (const folder of folders) { if (folder == "temp") continue; + + // Live2d assets + if (folder == "live2d") { + output[folder] = []; + const live2d_folders = fs.readdirSync(path.join(folderPath, folder)); + for (let model_folder of live2d_folders) { + const live2d_model_path = path.join(folderPath, folder, model_folder); + if (fs.statSync(live2d_model_path).isDirectory()) { + for (let file of fs.readdirSync(live2d_model_path)) { + if (file.includes("model")) { + //console.debug("Asset live2d model found:",file) + output[folder].push([`${model_folder}`,path.join("assets", folder, model_folder, file)]); + } + } + } + } + continue; + } + + // Other assets (bgm/ambient/blip) const files = fs.readdirSync(path.join(folderPath, folder)) .filter(filename => { return filename != ".placeholder"; @@ -235,7 +255,7 @@ function registerEndpoints(app, jsonParser) { const live2dModelPath = path.join(folderPath, modelFolder); if (fs.statSync(live2dModelPath).isDirectory()) { for (let file of fs.readdirSync(live2dModelPath)) { - console.debug(file) + //console.debug("Character live2d model found:", file) if (file.includes("model")) output.push([`${modelFolder}`,`/characters/${name}/${category}/${modelFolder}/${file}`]); } From 43dae790181eaca71a649f542abcb980ee9eec7e Mon Sep 17 00:00:00 2001 From: Tony Ribeiro Date: Tue, 24 Oct 2023 14:47:29 +0200 Subject: [PATCH 4/5] add placeholder in live2d asset folder to have the folder created for users. --- public/assets/live2d/.placeholder | 1 + 1 file changed, 1 insertion(+) create mode 100644 public/assets/live2d/.placeholder diff --git a/public/assets/live2d/.placeholder b/public/assets/live2d/.placeholder new file mode 100644 index 000000000..c76c79ab1 --- /dev/null +++ b/public/assets/live2d/.placeholder @@ -0,0 +1 @@ +Put live2d model folders here From 2b40fc7e760ca8fd7ad83d0c7e543cfe63093e4c Mon Sep 17 00:00:00 2001 From: Tony Ribeiro Date: Tue, 24 Oct 2023 15:44:40 +0200 Subject: [PATCH 5/5] Use proper path function for live2d asset of character folder --- src/assets.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets.js b/src/assets.js index 3722cc889..f23b93c2f 100644 --- a/src/assets.js +++ b/src/assets.js @@ -257,7 +257,7 @@ function registerEndpoints(app, jsonParser) { for (let file of fs.readdirSync(live2dModelPath)) { //console.debug("Character live2d model found:", file) if (file.includes("model")) - output.push([`${modelFolder}`,`/characters/${name}/${category}/${modelFolder}/${file}`]); + output.push([`${modelFolder}`,path.join("characters", name, category, modelFolder, file) ]); } } }