lyg
2024-07-17 6df7cbf23a2c8b632dfc35602086807c7fc6ff9b
Merge branch 'main' of http://182.92.203.7:2001/r/~lyg/book-crawler into main
2个文件已修改
1个文件已添加
61 ■■■■■ 已修改文件
package.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/book-isbn-search.mjs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/parse-isbn-log.mjs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json
@@ -9,7 +9,8 @@
    "book-list": "node src/book-list-download.mjs",
    "parse-log": "node src/parse-log.mjs",
    "trans": "node src/trans.mjs",
    "book-isbn": "node src/book-isbn-search.mjs"
    "book-isbn": "node src/book-isbn-search.mjs",
    "parse-isbn-log": "node src/parse-isbn-log.mjs"
  },
  "devDependencies": {},
  "dependencies": {
src/book-isbn-search.mjs
@@ -102,6 +102,9 @@
    }
    book.publisher = data.metadata.publisher;
    book.pubDate = data.metadata.date;
    if (book.isbn) {
      console.log('ISBN: ',JSON.stringify(book));
    }
  })
    .catch(() => {
      book.state = "打开详情页失败";
@@ -133,6 +136,9 @@
  for (; ;) {
    const book = await nextBook();
    if (!book.title) {
      continue;
    }
    if (!book) {
      break;
    }
src/parse-isbn-log.mjs
New file
@@ -0,0 +1,52 @@
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 lines = bookLog.split('\n');
      // 遍历日志行
      for (const line of lines) {
        // 解析日志行
        let reg, group;
        reg = /.* ISBN: (.*)$/g;
        group = reg.exec(line);
        if (group) {
          const book = {};
          const text = group[1];
          const obj = JSON.parse(text);
          Object.assign(book, obj);
          books.push(book);
          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);
}