UNPKG

image-dataset

Version:

Tool to build image dataset: collect, classify, review

70 lines (69 loc) 2.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.analysis = analysis; const fs_1 = require("fs"); const config_1 = require("./config"); const db_1 = require("./db"); const csv_1 = require("@beenotung/tslib/csv"); const path_1 = require("path"); const format_1 = require("@beenotung/tslib/format"); const fs_2 = require("@beenotung/tslib/fs"); let select_counts = db_1.db.prepare(/* sql */ ` select keyword_id as id , keyword , count(distinct image.id) as image_count , count(distinct page_id) as page_count , count(distinct domain_id) as site_count from image inner join keyword on keyword.id = keyword_id inner join page on page.id = page_id group by keyword_id order by keyword_id asc `); function scanImageDir(dir) { let filenames = (0, fs_2.getDirFilenamesSync)(dir); let downloaded = filenames.length; let removed = 0; let removeDirnames = ['remove', 'removed', 'delete', 'deleted']; for (let removeDirname of removeDirnames) { downloaded--; if (filenames.includes(removeDirname)) { removed += (0, fs_2.getDirFilenamesSync)((0, path_1.join)(dir, removeDirname)).length; } } let passed = downloaded - removed; return { downloaded, passed: `${passed} (${(0, format_1.format_percentage)(passed / downloaded)})`, removed: `${removed} (${(0, format_1.format_percentage)(removed / downloaded)})`, }; } function analysis() { let rows = select_counts.all(); if (rows.length == 0 && (0, fs_1.existsSync)(config_1.config.downloadedRootDir)) { let keywords = (0, fs_2.getDirFilenamesSync)(config_1.config.downloadedRootDir); rows = keywords.map(keyword => ({ keyword })); } if (rows.length == 0) { console.error('Error: no images downloaded yet'); process.exit(1); } for (let row of rows) { let dir = (0, path_1.join)(config_1.config.downloadedRootDir, row.keyword); if (!(0, fs_1.existsSync)(dir)) { continue; } let extra = scanImageDir(dir); Object.assign(row, extra); } showTable(rows); } function showTable(rows) { let csv = (0, csv_1.json_to_csv)(rows); let text = (0, csv_1.csv_to_table_text)(csv); console.log(text); } if (process.argv[1] == __filename) { analysis(); }