liyugang
3 天以前 8c24730e9a52dc2c8933e8d41d2f9651de48a231
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import * as fs from 'fs';
import axios from "axios";
 
// const filenameWs = fs.createWriteStream('baidu-filenames.txt', { flags: 'a', encoding: 'utf8' });
// const pathWs = fs.createWriteStream('baidu-paths.txt', { flags: 'a', encoding: 'utf8' });
// const fileList = [];
// fatchList('1007852250511447', fileList)
//   .finally(() => {
//     const filenames = [];
//     const paths = [];
//     for (const file of fileList) {
//       filenames.push(file.filename);
//       paths.push(file.path);
//     }
//     // fs.writeFileSync('baidu-filenames.txt', filenames.join('\n'));
//     // fs.writeFileSync('baidu-filepaths.txt', paths.join('\n'));
//     filenameWs.close();
//     pathWs.close();
//   });
 
const formatMap = {
  'Pdf': true,
  'pdf': true,
  'PDF': true,
  'epub': true,
  'EPUB': true,
  'ePub': true,
  'mobi': true,
  'MOBI': true,
  'azw3': true,
  'azw': true,
  'djvu': true,
};
 
async function fatchList(fs_id, fileList) {
  const headers = {
    Cookie: `BIDUPSID=26D8BFCB9921A8B8CFF88D554B389A36; PSTM=1649675032; MCITY=-324%3A; PANWEB=1; BAIDU_WISE_UID=wapp_1717165789588_726; BAIDUID=75245788C1BC8BF2F60DBD44402471CA:SL=0:NR=10:FG=1; BAIDUID_BFESS=75245788C1BC8BF2F60DBD44402471CA:SL=0:NR=10:FG=1; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; PSINO=1; delPer=0; ZFY=BbxItP0R:Ar496cxky2Ut2GFMaz2CaB0kcDH2FTPaMB8:C; H_PS_PSSID=60276_60521_60566_60573; ZD_ENTRY=bing; csrfToken=A5a7OncLSPxifurVy_zpZufT; newlogin=1; Hm_lvt_95fc87a381fad8fcb37d76ac51fefcea=1723548657; HMACCOUNT=73556D45FFE12A61; PANPSC=450778318030811434%3AKkwrx6t0uHBFxO38YBEwbzuv496EomYGCAqT9gdLi878w7eY56A7XxM4dDjxBdlpIqNQStgZBhRv5lJmgFLcWaGe416fovhgrwSpwCr5jvdFah9uWgECZx89VaJxt2prglpnIkZD9Kmi%2BY1X7udr9G2gud9gLjYtpqvB0tQPnfltcQe%2BbgwEaTCo8bcT1HMK; ppfuid=FOCoIC3q5fKa8fgJnwzbE67EJ49BGJeplOzf+4l4EOvDuu2RXBRv6R3A1AZMa49I27C0gDDLrJyxcIIeAeEhD8JYsoLTpBiaCXhLqvzbzmvy3SeAW17tKgNq/Xx+RgOdb8TWCFe62MVrDTY6lMf2GrfqL8c87KLF2qFER3obJGluLczhecqgremvAygsVvJeGEimjy3MrXEpSuItnI4KD2DdU2dlyNY9t4hl20SaxehR4EaoY7dI60LOhq0HnLAJjYJfQxS6ZeJem/A3CmAQtQkCbDM23TdA0CXmF0zgX4nGgLbz7OSojK1zRbqBESR5Pdk2R9IA3lxxOVzA+Iw1TWLSgWjlFVG9Xmh1+20oPSbrzvDjYtVPmZ+9/6evcXmhcO1Y58MgLozKnaQIaLfWRFwa8A3ZyTRp/cDxRMhYc94UFIDif2s87oqXVFSvZHNYVEAF9J/3enbpAXV6XgHRuXeTNkbS2el0J2+pbyoXJb2BYVXTjpL4gXqZ55zG8C/uqfhwWryYacZfOfIdenDLSkJsc4rBzsbBPyjKAzWGBO7nCxNtgYtDo26K+8ukl31Y+/geIrmTvn+xVA1gAbbf1lkKhylX1zGsOVlJip30kecMEGvjdNWpsel/qfsfe5JBpqDTksMVoBr7nszRboiUHbedcq1mi/UXvX2b3lxbCLv4Mxoy+dFS3Fr9jSAmssiPARPZutqXQT8krr+KVakPUpdbkwv/8CHDu0C/Z5vtDeiYLQpEgFjmQoey69Fz+kM7Y5cg925MGCeBU4jWp2g2gxX/Z9WRL7Ng71lvihGF7jz4ZT3bA2KOpkia/4zzCht1eHXVXzDUMxpGt9aRmXStLkhpOuhw8bYyjFOBzzWtHbb/bZjYuTi397a21776RWy1hAfIX+LOYnlmJLoIfeQJGyV88cwcM1svp+zVDjUpc+tX+hKCutoGOSxoeD09wtPvkfIibk/f1wuA5XvSHYqqJRx8VJ2MfThAR9JY85BUmPjqOlbhrblXFkBQG7n4JKiZyalk9X22FXe2MsdipOHFxSUHSqbPo2PPJzEor12m6lThR7YgmlfLt7kntJD5XeM7GEQw3OLo5dsSUeQDd6vDnkb72/TMYcbPW48WuSnSgMDL820G6v5sII3fbIl1IswRGEQw3OLo5dsSUeQDd6vDntVllC1+aCCc8K28RWpYmU0S24R9DDZVx3j3+tLLpw3BRuF/lI7yGQ5dEntCEMtnVaOBuNLhAhlddA7KpjMdW1UU5ZZ2QvNYYVj4McvsdmZl2ssb09Yk1KUaxhNd9iuw6w==; BDUSS=2FKMlpkNktUbFo1eExCfmllYXN-M1QweHpTT3NUQU5Ca2RKNUI5d2Y3QUgxT0ptRUFBQUFBJCQAAAAAAAAAAAEAAAB7CegOMTU0MzExNzE3MwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHu2YHR7tma; BDUSS_BFESS=2FKMlpkNktUbFo1eExCfmllYXN-M1QweHpTT3NUQU5Ca2RKNUI5d2Y3QUgxT0ptRUFBQUFBJCQAAAAAAAAAAAEAAAB7CegOMTU0MzExNzE3MwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHu2YHR7tma; bce-sessionid=00189e93f952e9743059334d76c7b7c2818; __bid_n=1914b8dcc1123045b8e84d; RT="z=1&dm=baidu.com&si=3b60e45c-be81-4722-b84c-754f439ce8b2&ss=lzscrau0&sl=a&tt=d3y&bcn=https%3A%2F%2Ffclog.baidu.com%2Flog%2Fweirwood%3Ftype%3Dperf&ld=3ylg&ul=41oj&hd=41om"; STOKEN=f5703b02f0370574a1fdfa28759771354b151598a9cc9dedfdc14f43354e6baa; Hm_lpvt_95fc87a381fad8fcb37d76ac51fefcea=1723549765; ndut_fmt=D094F534F142F8E2076E4850AC3D8512F0031FC3AB4D8066A8DCDF37A1228874`,
    'User-Agent': `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0`,
    'Content-Type': `application/x-www-form-urlencoded`,
    'sec-ch-ua': `"Not)A;Brand";v="99", "Microsoft Edge";v="127", "Chromium";v="127"`,
    'Origin': 'https://pan.baidu.com',
    Accept: 'application/json, text/plain, */*',
 
  };
  let page = 1;
  let hasMore = true;
  while (hasMore) {
    let retry = 3;
    while (retry) {
      try {
        const url = `https://pan.baidu.com/mbox/msg/shareinfo?from_uk=1100996502544&msg_id=4797301806302061514&type=2&num=50&page=${page}&fs_id=${fs_id}&gid=418650227780964415&limit=50&desc=1&clienttype=0&app_id=250528&web=1&dp-logid=12522300853002690550`
        // const url = `https://pan.baidu.com/mbox/msg/shareinfo?from_uk=1099855072643&msg_id=1687020473988377142&type=2&num=50&page=${page}&fs_id=${fs_id}&gid=524702303282861882&limit=50&desc=1&clienttype=0&app_id=250528&web=1&dp-logid=12522300853002690402`;
        const resp = await axios.post(url, {}, { headers });
        hasMore = resp.data.has_more;
        if (resp.status === 200 && resp.data.errno === 0) {
          for (const record of resp.data.records) {
            if (record.isdir) {
              await fatchList(record.fs_id, fileList);
            } else {
              const ext = record.server_filename.split('.').pop();
              if (formatMap[ext]) {
                filenameWs.write(record.server_filename + '\n');
                pathWs.write(record.path + '\n');
              }
              // fileList.push({ filename: record.server_filename, path: record.path });
            }
          }
        }
        page++;
        retry = 0;
      } catch (e) {
        console.error(e.message);
        retry--;
      }
    }
  }
}
 
function genBookList() {
  const files = [
    'baidu-filenames.txt',
    'baidu-filenames0.txt',
    // 'baidu-filenames1.txt',
    'baidu-filenames2.txt',
    'baidu-filenames3.txt',
    'baidu-filenames4.txt',
  ];
  const map = new Map();
  const books = [];
  for (const file of files) {
    fs.readFileSync(file, 'utf8').replace(/\r/g, '').split('\n').forEach(line => {
      const name = line.substring(0, line.lastIndexOf('.'));
      if (/^[^\u4e00-\u9fa5]+$/g.test(name)) {
        return;
      }
      if (name.includes('扫描版')) { return; }
      const ext = line.substring(line.lastIndexOf('.') + 1).toLocaleLowerCase();
      if (!map.has(name)) {
        map.set(name, ext);
      } else {
        if (ext == 'epub') {
          map.set(name, ext);
        }
      }
    });
  }
  map.forEach((ext, name) => {
    books.push(name + '.' + ext);
  });
  fs.writeFileSync('baidu-books.txt', books.join('\n'));
}
genBookList();