image-dataset
Version:
Tool to build image dataset: collect, classify, review
62 lines (61 loc) • 2.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.unclassifyDir = unclassifyDir;
exports.restoreUnclassified = restoreUnclassified;
exports.main = main;
const fs_1 = require("fs");
const path_1 = require("path");
const fs_2 = require("@beenotung/tslib/fs");
const progress_cli_1 = require("@beenotung/tslib/progress-cli");
const better_sqlite3_proxy_1 = require("better-sqlite3-proxy");
const proxy_1 = require("./proxy");
const config_1 = require("./config");
function unclassifyDir(dir) {
console.log('unclassifyDir:', [dir]);
let filenames = (0, fs_2.getDirFilenamesSync)(dir);
for (let filename of filenames) {
let srcFile = (0, path_1.join)(dir, filename);
let destFile = (0, path_1.join)(config_1.config.unclassifiedRootDir, filename);
(0, fs_1.renameSync)(srcFile, destFile);
}
}
function restoreUnclassified() {
console.log('restored unclassified images to downloaded directory...');
let cli = new progress_cli_1.ProgressCli();
let filenames = (0, fs_2.getDirFilenamesSync)(config_1.config.unclassifiedRootDir);
let unknownCount = 0;
let restoredCount = 0;
for (let keyword of proxy_1.proxy.keyword) {
let dir = (0, path_1.join)(config_1.config.downloadedRootDir, keyword.keyword);
(0, fs_1.mkdirSync)(dir, { recursive: true });
}
for (let filename of filenames) {
let srcFile = (0, path_1.join)(config_1.config.unclassifiedRootDir, filename);
let image = (0, better_sqlite3_proxy_1.find)(proxy_1.proxy.image, { filename });
let keyword = image?.keyword?.keyword;
if (!keyword) {
unknownCount++;
cli.update(`restored: ${restoredCount}, unknown: ${unknownCount} ...`);
continue;
}
let destFile = (0, path_1.join)(config_1.config.downloadedRootDir, keyword, filename);
(0, fs_1.renameSync)(srcFile, destFile);
restoredCount++;
cli.update(`restored: ${restoredCount}, unknown: ${unknownCount} ...`);
}
cli.update(`restored: ${restoredCount}, unknown: ${unknownCount}`);
cli.nextLine();
console.log('done.');
return { restoredCount, unknownCount };
}
function main() {
(0, fs_1.mkdirSync)(config_1.config.unclassifiedRootDir, { recursive: true });
(0, fs_1.mkdirSync)(config_1.config.classifiedRootDir, { recursive: true });
let classNames = (0, fs_2.getDirFilenamesSync)(config_1.config.classifiedRootDir);
for (let className of classNames) {
unclassifyDir((0, path_1.join)(config_1.config.classifiedRootDir, className));
}
}
if (process.argv[1] == __filename) {
main();
}