refactor: just updated scripts for better reading

This commit is contained in:
snus xD
2025-12-24 09:35:53 +03:00
parent 14a1b9d5e7
commit f0b87a6da0
4 changed files with 95 additions and 105 deletions

28
scripts/shared.ts Normal file
View File

@@ -0,0 +1,28 @@
import fs from "node:fs";
const PATHS = {
ORIGINAL: "../_sprites/original",
TRANSLATION: "../_sprites/translation",
UNREADY: "../_sprites/unready",
SORTED: "../_sprites/sorted",
};
const DATA = JSON.parse(fs.readFileSync("./data.json", "utf-8"));
const CHAPTERS = Object.keys(DATA);
const UNIQUES = fs
.readFileSync("../_sprites/unique.txt", "utf-8")
.split("UNIQUE FOR SORTING:")
.at(-1)
?.split("UNIQUE FRAME COUNT:");
const UNIQUES_NAMES = UNIQUES != undefined ? UNIQUES[0].split("\n") : [];
UNIQUES_NAMES?.shift();
const UNIQUES_FRAMES = UNIQUES != undefined ? UNIQUES[1].split("\n") : [];
UNIQUES_FRAMES?.shift();
while (UNIQUES_NAMES?.at(-1) == "") UNIQUES_NAMES?.pop();
while (UNIQUES_FRAMES?.at(-1) == "") UNIQUES_FRAMES?.pop();
export { PATHS, DATA, CHAPTERS, UNIQUES_NAMES, UNIQUES_FRAMES };

View File

@@ -1,76 +1,60 @@
import fs from "node:fs"; import fs from "node:fs";
import { PATHS, DATA, CHAPTERS, UNIQUES_NAMES, UNIQUES_FRAMES } from "./shared";
import { spawn } from "child_process"; import { spawn } from "child_process";
const SPECIALS = ["sp", "spm"]; const SPECIALS = ["sp", "spm"];
const DATA = JSON.parse(fs.readFileSync("./data.json", "utf-8"));
const chapters = fs.readdirSync("../_sprites/original");
const UNIQUES = fs function add_singles(chapter: string, sprite_name: string) {
.readFileSync("../_sprites/unique.txt", "utf-8")
.split("UNIQUE FOR SORTING:")
.at(-1)
?.split("UNIQUE FRAME COUNT:");
const UNIQUES_NAMES = UNIQUES != undefined ? UNIQUES[0].split("\n") : [];
UNIQUES_NAMES?.shift();
const UNIQUES_FRAMES = UNIQUES != undefined ? UNIQUES[1].split("\n") : [];
UNIQUES_FRAMES?.shift();
while (UNIQUES_NAMES?.at(-1) == "") UNIQUES_NAMES?.pop();
while (UNIQUES_FRAMES?.at(-1) == "") UNIQUES_FRAMES?.pop();
function add_singles(chapter, sprite_name) {
const img_name = `${sprite_name}.png`; const img_name = `${sprite_name}.png`;
if (!fs.existsSync(`../_sprites/translation/${img_name}`)) return; if (!fs.existsSync(`${PATHS.TRANSLATION}/${img_name}`)) return;
fs.copyFileSync( fs.copyFileSync(
`../_sprites/translation/${img_name}`, `${PATHS.TRANSLATION}/${img_name}`,
`../_sprites/sorted/${chapter}/${img_name}` `${PATHS.SORTED}/${chapter}/${img_name}`
); );
for (const special of SPECIALS) { for (const special of SPECIALS) {
if (fs.existsSync(`../_sprites/translation/${special}_${img_name}`)) { if (fs.existsSync(`${PATHS.TRANSLATION}/${special}_${img_name}`)) {
fs.copyFileSync( fs.copyFileSync(
`../_sprites/translation/${special}_${img_name}`, `${PATHS.TRANSLATION}/${special}_${img_name}`,
`../_sprites/sorted/${chapter}/${special}_${img_name}` `${PATHS.SORTED}/${chapter}/${special}_${img_name}`
); );
} }
} }
} }
function add_animations(chapter, sprite_name) { function add_animations(chapter: string, sprite_name: string) {
if ( if (
fs.existsSync(`../_sprites/translation/${sprite_name}`) && fs.existsSync(`${PATHS.TRANSLATION}/${sprite_name}`) &&
!fs.existsSync(`../_sprites/sorted/${chapter}/${sprite_name}`) !fs.existsSync(`${PATHS.SORTED}/${chapter}/${sprite_name}`)
) { ) {
if (UNIQUES_FRAMES.includes(sprite_name)) if (UNIQUES_FRAMES.includes(sprite_name))
fs.cpSync( fs.cpSync(
`../_sprites/translation/${sprite_name}`, `${PATHS.TRANSLATION}/${sprite_name}`,
`../_sprites/sorted/${chapter}/${sprite_name}`, `${PATHS.SORTED}/${chapter}/${sprite_name}`,
{ recursive: true, force: true } { recursive: true, force: true }
); );
else else
fs.cpSync( fs.cpSync(
`../_sprites/original/${chapter}/${sprite_name}`, `../_sprites/original/${chapter}/${sprite_name}`,
`../_sprites/sorted/${chapter}/${sprite_name}`, `${PATHS.SORTED}/${chapter}/${sprite_name}`,
{ recursive: true, force: true } { recursive: true, force: true }
); );
} else return; } else return;
for (const special of SPECIALS) { for (const special of SPECIALS) {
if (fs.existsSync(`../_sprites/translation/${special}_${sprite_name}`)) { if (fs.existsSync(`${PATHS.TRANSLATION}/${special}_${sprite_name}`)) {
fs.cpSync( fs.cpSync(
`../_sprites/original/${chapter}/${sprite_name}`, `../_sprites/original/${chapter}/${sprite_name}`,
`../_sprites/sorted/${chapter}/${special}_${sprite_name}`, `${PATHS.SORTED}/${chapter}/${special}_${sprite_name}`,
{ recursive: true, force: true } { recursive: true, force: true }
); );
for (const file of fs.readdirSync( for (const file of fs.readdirSync(
`../_sprites/sorted/${chapter}/${special}_${sprite_name}` `${PATHS.SORTED}/${chapter}/${special}_${sprite_name}`
)) { )) {
const oldPath = `../_sprites/sorted/${chapter}/${special}_${sprite_name}/${file}`; const oldPath = `${PATHS.SORTED}/${chapter}/${special}_${sprite_name}/${file}`;
const newPath = `../_sprites/sorted/${chapter}/${special}_${sprite_name}/${special}_${file}`; const newPath = `${PATHS.SORTED}/${chapter}/${special}_${sprite_name}/${special}_${file}`;
fs.renameSync(oldPath, newPath); fs.renameSync(oldPath, newPath);
} }
@@ -82,35 +66,34 @@ function add_animations(chapter, sprite_name) {
const sprite_frames = DATA[chapter][sprite_name]; const sprite_frames = DATA[chapter][sprite_name];
for (let frame of sprite_frames) { for (let frame of sprite_frames) {
const img_name = `${sprite_name}_${frame}.png`; const img_name = `${sprite_name}_${frame}.png`;
if (!fs.existsSync(`../_sprites/translation/${sprite_name}/${img_name}`)) if (!fs.existsSync(`${PATHS.TRANSLATION}/${sprite_name}/${img_name}`))
continue; continue;
for (const special of SPECIALS) { for (const special of SPECIALS) {
if ( if (
fs.existsSync( fs.existsSync(
`../_sprites/translation/${special}_${sprite_name}/${special}_${img_name}` `${PATHS.TRANSLATION}/${special}_${sprite_name}/${special}_${img_name}`
) )
) { ) {
fs.copyFileSync( fs.copyFileSync(
`../_sprites/translation/${special}_${sprite_name}/${special}_${img_name}`, `${PATHS.TRANSLATION}/${special}_${sprite_name}/${special}_${img_name}`,
`../_sprites/sorted/${chapter}/${special}_${sprite_name}/${special}_${img_name}` `${PATHS.SORTED}/${chapter}/${special}_${sprite_name}/${special}_${img_name}`
); );
} }
} }
fs.copyFileSync( fs.copyFileSync(
`../_sprites/translation/${sprite_name}/${img_name}`, `${PATHS.TRANSLATION}/${sprite_name}/${img_name}`,
`../_sprites/sorted/${chapter}/${sprite_name}/${img_name}` `${PATHS.SORTED}/${chapter}/${sprite_name}/${img_name}`
); );
} }
} }
for (const chapter of chapters) { for (const chapter of CHAPTERS) {
if (!chapter.endsWith(".DS_Store")) { if (!chapter.endsWith(".DS_Store")) {
if (!fs.existsSync(`../_sprites/sorted`)) if (!fs.existsSync(`${PATHS.SORTED}`)) fs.mkdirSync(`${PATHS.SORTED}`);
fs.mkdirSync(`../_sprites/sorted`); if (!fs.existsSync(`${PATHS.SORTED}/${chapter}`))
if (!fs.existsSync(`../_sprites/sorted/${chapter}`)) fs.mkdirSync(`${PATHS.SORTED}/${chapter}`);
fs.mkdirSync(`../_sprites/sorted/${chapter}`);
for (const sprite of Object.keys(DATA[chapter])) { for (const sprite of Object.keys(DATA[chapter])) {
const frames: any[] = DATA[chapter][sprite]; const frames: any[] = DATA[chapter][sprite];
@@ -126,26 +109,26 @@ if (UNIQUES_NAMES != undefined) {
const uniqueChapter = unique.split("/")[0]; const uniqueChapter = unique.split("/")[0];
const uniqueName = unique.split("/")[1]; const uniqueName = unique.split("/")[1];
if (fs.existsSync(`../_sprites/translation/${uniqueName}.png`)) if (fs.existsSync(`${PATHS.TRANSLATION}/${uniqueName}.png`))
fs.copyFileSync( fs.copyFileSync(
`../_sprites/translation/${uniqueName}.png`, `${PATHS.TRANSLATION}/${uniqueName}.png`,
`../_sprites/sorted/${uniqueChapter}/${uniqueName}.png` `${PATHS.SORTED}/${uniqueChapter}/${uniqueName}.png`
); );
if (fs.existsSync(`../_sprites/translation/${uniqueName}`)) if (fs.existsSync(`${PATHS.TRANSLATION}/${uniqueName}`))
fs.cpSync( fs.cpSync(
`../_sprites/translation/${uniqueName}`, `${PATHS.TRANSLATION}/${uniqueName}`,
`../_sprites/sorted/${uniqueChapter}/${uniqueName}`, `${PATHS.SORTED}/${uniqueChapter}/${uniqueName}`,
{ recursive: true, force: true } { recursive: true, force: true }
); );
} }
} }
for (const chapter of chapters) { for (const chapter of CHAPTERS) {
spawn("python3", [ spawn("python3", [
"merge.py", "merge.py",
`../_sprites/sorted/${chapter}`, `${PATHS.SORTED}/${chapter}`,
`../_sprites/sorted-merged/${chapter}`, `${PATHS.SORTED}-merged/${chapter}`,
]); ]);
} }

View File

@@ -1,41 +1,29 @@
import fs from "node:fs"; import fs from "node:fs";
import { PATHS, CHAPTERS, UNIQUES_FRAMES } from "./shared";
const CHAPTERS = JSON.parse(fs.readFileSync("./data.json", "utf-8")); if (!fs.existsSync(PATHS.UNREADY)) fs.mkdirSync(PATHS.UNREADY);
const UNIQUES = fs
.readFileSync("../_sprites/unique.txt", "utf-8")
.split("UNIQUE FOR SORTING:")
.at(-1)
?.split("UNIQUE FRAME COUNT:");
const UNIQUES_FRAMES = UNIQUES != undefined ? UNIQUES[1].split("\n") : [];
UNIQUES_FRAMES?.shift();
while (UNIQUES_FRAMES?.at(-1) == "") UNIQUES_FRAMES?.pop();
if (!fs.existsSync("../_sprites/unready")) fs.mkdirSync("../_sprites/unready");
for (const chapter of Object.keys(CHAPTERS)) { for (const chapter of Object.keys(CHAPTERS)) {
const OriginalPath = `../_sprites/original/${chapter}`; const original_path = `${PATHS.ORIGINAL}/${chapter}`;
const UnreadyPath = `../_sprites/unready`; if (!fs.existsSync(PATHS.UNREADY)) fs.mkdirSync(PATHS.UNREADY);
if (!fs.existsSync(UnreadyPath)) fs.mkdirSync(UnreadyPath); fs.cpSync(original_path, PATHS.UNREADY, { recursive: true, force: true });
fs.cpSync(OriginalPath, UnreadyPath, { recursive: true, force: true });
} }
const TRANSLATED = fs.readdirSync("../_sprites/translation"); const TRANSLATED = fs.readdirSync(PATHS.TRANSLATION);
const UNREADY = fs.readdirSync("../_sprites/unready"); const UNREADY = fs.readdirSync(PATHS.UNREADY);
for (const sprite of TRANSLATED) { for (const sprite of TRANSLATED) {
if (sprite.endsWith(".png")) { if (sprite.endsWith(".png")) {
if (UNREADY.includes(sprite)) fs.rmSync(`../_sprites/unready/${sprite}`); if (UNREADY.includes(sprite)) fs.rmSync(`${PATHS.UNREADY}/${sprite}`);
} else { } else {
if ( if (
fs.existsSync(`../_sprites/unready/${sprite}`) && fs.existsSync(`${PATHS.UNREADY}/${sprite}`) &&
(UNIQUES_FRAMES.includes(sprite) || (UNIQUES_FRAMES.includes(sprite) ||
fs.readdirSync(`../_sprites/unready/${sprite}`).length == fs.readdirSync(`${PATHS.UNREADY}/${sprite}`).length ==
fs.readdirSync(`../_sprites/translation/${sprite}`).length) fs.readdirSync(`${PATHS.TRANSLATION}/${sprite}`).length)
) )
fs.rmSync(`../_sprites/unready/${sprite}`, { fs.rmSync(`${PATHS.UNREADY}/${sprite}`, {
recursive: true, recursive: true,
force: true, force: true,
}); });

View File

@@ -1,41 +1,32 @@
import fs from "node:fs"; import fs from "node:fs";
import { PATHS } from "./shared";
const PATHS = { let DATA: { [key: string]: any } = {};
ORIGINAL: "../_sprites/original",
TRANSLATE: "../_sprites/translation",
};
let DATA = {}; for (const chapter of fs.readdirSync(PATHS.ORIGINAL)) DATA[chapter] = {};
// Сбор списка глав function add_singles(path: string) {
for (const chapter of fs.readdirSync(PATHS.ORIGINAL)) { const chapter_sprites = fs.readdirSync(path, "utf-8");
if (chapter != ".DS_Store") DATA[chapter] = {}; const temp: { [key: string]: any } = {};
}
// Внос всех одно-кадровых спрайтов for (const sprite of chapter_sprites)
function add_singles(path) {
const chapter_dir = fs.readdirSync(path, "utf-8");
let temp = {};
for (const sprite of chapter_dir)
if (sprite.includes(".png")) temp[sprite.slice(0, -4)] = [0]; if (sprite.includes(".png")) temp[sprite.slice(0, -4)] = [0];
return temp; return temp;
} }
// Внос всех много-кадровых спрайтов function add_animations(path: string) {
function add_animations(path) { const chapter_sprites = fs.readdirSync(path, "utf-8");
const chapter_dir = fs.readdirSync(path, "utf-8"); const temp: { [key: string]: any } = {};
let temp = {};
for (const sprite of chapter_dir) { for (const sprite of chapter_sprites) {
if (!(sprite.endsWith(".png") || sprite.endsWith(".DS_Store"))) { if (!sprite.endsWith(".png")) {
let frames = new Array(); const frames = new Array();
const animation_dir = fs.readdirSync(`${path}/${sprite}`, "utf-8"); const animated_sprite = fs.readdirSync(`${path}/${sprite}`, "utf-8");
for (let frame of animation_dir) { for (let frame of animated_sprite) {
let frame_number = frame.split("_").at(-1) ?? "fuck"; let frame_number = frame.split("_").at(-1);
if (frame.endsWith(".png")) if (frame.endsWith(".png") && frame_number !== undefined)
frames.push(Number(frame_number.slice(0, -4))); frames.push(Number(frame_number.slice(0, -4)));
} }