New file |
| | |
| | | import * as fs from 'fs'; |
| | | import xlsx from "node-xlsx"; |
| | | |
| | | const books = []; |
| | | |
| | | function main() { |
| | | // 获取所有日志文件 |
| | | const logFiles = fs.readdirSync('./book-isbn-logs', { withFileTypes: true }); |
| | | // 遍历日志文件 |
| | | for (const file of logFiles) { |
| | | // 读取日志文件 |
| | | const log = fs.readFileSync(`./book-isbn-logs/${file.name}`, 'utf8'); |
| | | // 解析日志文件 |
| | | const bookLogs = log.split('开始下载'); |
| | | for (const bookLog of bookLogs) { |
| | | const book = {}; |
| | | const lines = bookLog.split('\n'); |
| | | // 遍历日志行 |
| | | for (const line of lines) { |
| | | // 解析日志行 |
| | | let reg, group; |
| | | reg = /.* ISBN: (.*)$/g; |
| | | group = reg.exec(line); |
| | | if (group) { |
| | | const text = group[1]; |
| | | const obj = JSON.stringify(text); |
| | | Object.assign(book, obj); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | try { |
| | | main(); |
| | | } catch (e) { |
| | | console.error(e); |
| | | } finally { |
| | | const EXCEL_FILE = "fiction-noisbn.xlsx"; |
| | | const workSheets = xlsx.parse(EXCEL_FILE); |
| | | const sheet = workSheets[0]; |
| | | for (const book of books) { |
| | | const row=sheet.data.find(row => row[0] == book.id); |
| | | row[5] = book.isbn; |
| | | } |
| | | const buffer = xlsx.build([sheet]); |
| | | fs.writeFileSync(EXCEL_FILE, buffer, (err) => { }); |
| | | console.log("保存完成: ", EXCEL_FILE); |
| | | } |