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