import * as fs from "fs";
|
import * as path from "path";
|
import xlsx from "node-xlsx";
|
|
const srcBookMap = new Map();
|
const dstBooks = [];
|
|
function loadSrcBookMap() {
|
const workSheets = xlsx.parse("libgen-fiction.xlsx");
|
const sheet = workSheets[0];
|
const books = sheet.data;
|
for (const row of books) {
|
const [id, isbn, title, author, md5, ext] = row;
|
if (isbn.includes(',')) {
|
const isbns = isbn.split(',');
|
for (const _isbn of isbns) {
|
srcBookMap.set(_isbn, { id, isbn: _isbn, title, author, md5, ext, file: `${md5}.${ext}` });
|
}
|
} else {
|
srcBookMap.set(isbn, { id, isbn, title, author, md5, ext, file: `${md5}.${ext}` });
|
}
|
}
|
}
|
|
function loadDstBooks() {
|
const file = "C:\\Users\\lyg\\Downloads\\【反馈客户】7月批次书单 - 已撞库.xlsx";
|
const workSheets = xlsx.parse(file);
|
const sheet = workSheets[0];
|
const books = sheet.data;
|
for (const row of books) {
|
let [id, isbn, title, _, author,] = row;
|
if (!isbn) { continue; }
|
isbn = `${isbn}`.trim();
|
if (isbn.includes(",")) {
|
const isbns = isbn.split(',');
|
for (const _isbn of isbn) {
|
dstBooks.push({ id, isbn: _isbn, title, author });
|
}
|
} else {
|
dstBooks.push({ id, isbn, title, author });
|
}
|
}
|
}
|
|
async function main() {
|
loadSrcBookMap();
|
loadDstBooks();
|
let cnt = 0;
|
const ids = [];
|
for (const dstBook of dstBooks) {
|
const srcBook = srcBookMap.get(dstBook.isbn);
|
if (srcBook) {
|
cnt++;
|
ids.push(srcBook.id);
|
}
|
}
|
console.log(cnt);
|
fs.writeFileSync("ids1.txt", ids.join("\n"), "utf8");
|
}
|
|
// main();
|
|
function copyFiles() {
|
const fileMap = {};
|
fs.readFileSync("zlib-files-7.txt", "utf8").split("\n").forEach(file => {
|
const [id, ext] = file.split('.');
|
fileMap[id] = file;
|
});
|
const dir = 'D:\\zlib-books\\book';
|
const dst = "";
|
const failedFiles = [];
|
fs.readdirSync(dir).forEach(folder => {
|
fs.readdirSync(path.join(dir, folder)).forEach(fileId => {
|
const fileName = fileMap[fileId];
|
if (!fileName) { return; }
|
try {
|
fs.copyFileSync(path.join(dir, folder, fileId), path.join(dst, fileName));
|
} catch (e) {
|
failedFiles.push(path.join(folder, fileId));
|
}
|
});
|
});
|
fs.writeFileSync('failed-files.txt', failedFiles.join('\n'), 'utf8');
|
}
|
|
function copyFiles() {
|
const fileMap = new Map();
|
fs.readFileSync("ids1.txt", "utf8").replace(/\r/g, '').split("\n").forEach(id => fileMap.set(id, true));
|
const dir = 'D:\\zlib-books\\book';
|
const dst = "F:\\books";
|
fs.readdirSync(dir).filter(folder => fs.statSync(path.join(dir, folder)).isDirectory()).forEach(folder => {
|
fs.readdirSync(path.join(dir, folder)).forEach(fileId => {
|
if (fileMap.has(fileId)) {
|
fs.copyFileSync(path.join(dir, folder, fileId), path.join(dst, fileId));
|
}
|
});
|
});
|
}
|