From d53f63f7f83d9051d6a5eeb327e8226c7f82505f Mon Sep 17 00:00:00 2001
From: lyg <1543117173@qq.com>
Date: 星期二, 23 七月 2024 11:09:01 +0800
Subject: [PATCH] 修改libgen镜像站

---
 src/book-download.mjs |   31 +++++++++++++++++--------------
 1 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/src/book-download.mjs b/src/book-download.mjs
index 861e2bf..f5760a9 100644
--- a/src/book-download.mjs
+++ b/src/book-download.mjs
@@ -251,12 +251,15 @@
  * @param {*} book 
  */
 async function getBookDetailPageUrl(book) {
-  const url = `https://libgen.vg/index.php?req=${book.title}&columns%5B%5D=t&topics%5B%5D=f&res=25&filesuns=all`;
+  const url = `https://libgen.rs/fiction/?q=${book.title.replace(/ /g,'+')}&criteria=title&language=&format=`;
   return await retry(async () => {
     const resp = await myAxios.get(url, { headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36' } })
-    const group = /.*href="(edition.php\?id=\d+)".*/g.exec(resp.data);
+    // const html = cheerio.load(resp.data);
+    // const url = html('body > table > tbody > tr:nth-child(1) > td:nth-child(6) > ul > li:nth-child(1) > a')?.attr('href') ?? '';
+    // return url;
+    const group = /.*href="(http:\/\/library.lol\/fiction\/[0-9a-zA-Z]+)".*/g.exec(resp.data);
     if (group) {
-      return `https://libgen.vg/${group[1]}`;
+      return `${group[1]}`;
     } else {
       return ''
     }
@@ -304,9 +307,9 @@
 async function getDownloadUrl(book, url) {
   return await retry(async () => {
     const resp = await myAxios.get(url, { headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36' } });
-    const group = /.*href="(get.php\?md5=[0-9a-f]+.*)".*/g.exec(resp.data);
+    const group = /.*href="(\S+)".*>GET<.*/g.exec(resp.data);
     if (group) {
-      return `https://libgen.vg/${group[1]}`;
+      return `${group[1]}`;
     } else {
       return '';
     }
@@ -333,7 +336,7 @@
         let ext = response.headers['content-disposition'].split('filename=')[1].split('.').pop() ?? '';
         ext = ext.substring(0, ext.length - 1);
 
-        const filepath = `./downloads/${book.id} ${book.isbn}.${ext}`;
+        const filepath = `./downloads/${book.id}.${ext}`;
         book.url = url;
         if (fs.existsSync(filepath)) {
           book.state = `涓嬭浇瀹屾垚`;
@@ -343,7 +346,7 @@
           return;
         }
         const stream = response.data;
-        const _filepath = `./downloads/${book.id} ${book.isbn}.${ext}`;
+        const _filepath = `./downloads/${book.id}.${ext}`;
         const out = fs.createWriteStream(_filepath);
         stream.pipe(out);
         stream.on("end", async () => {
@@ -352,7 +355,7 @@
           book.format = ext;
           book.file = filepath;
           book.url = url;
-          book.pages = await getPdfPages(filepath).catch(e => 0);
+          // book.pages = await getPdfPages(filepath).catch(e => 0);
           resolve(true);
         });
         stream.on("error", (err) => {
@@ -439,12 +442,12 @@
     // 绛変竴娈垫椂闂村啀鎵撳紑璇︽儏椤�
     sleep(getRandomNumber(500, 1000));
     // 鎵撳紑璇︽儏椤碉紝骞惰幏鍙栦笅杞介摼鎺�
-    const filePageUrl = await openBookDetailPage(book, detailPageUrl);
-    if (!filePageUrl) {
-      console.log(`娌℃湁鏂囦欢: ${book.id} ${book.title}`);
-      continue;
-    }
-    const url = await getDownloadUrl(book, filePageUrl);
+    // const filePageUrl = await openBookDetailPage(book, detailPageUrl);
+    // if (!filePageUrl) {
+    //   console.log(`娌℃湁鏂囦欢: ${book.id} ${book.title}`);
+    //   continue;
+    // }
+    const url = await getDownloadUrl(book, detailPageUrl);
     if (!url) {
       console.log(`娌℃湁鏂囦欢: ${book.id} ${book.title}`);
       continue;

--
Gitblit v1.9.1