From 000868ac5302bff14f640566fd89a1f9b0422896 Mon Sep 17 00:00:00 2001 From: Rajarshee Chatterjee Date: Wed, 28 Apr 2021 10:13:03 +0530 Subject: [PATCH] add: NovelHall --- server.js | 1 + src/en/novelhall/icon.webp | Bin 0 -> 2220 bytes src/en/novelhall/novelhall.js | 185 ++++++++++++++++++++++++++++++++++ src/extensions.js | 9 ++ 4 files changed, 195 insertions(+) create mode 100644 src/en/novelhall/icon.webp create mode 100644 src/en/novelhall/novelhall.js diff --git a/server.js b/server.js index 319385f..517095b 100644 --- a/server.js +++ b/server.js @@ -23,6 +23,7 @@ app.use("/api/2/", require("./src/en/readlightnovel/readlightnovel")); app.use("/api/3/", require("./src/en/fastnovel/fastnovel")); app.use("/api/4/", require("./src/en/readnovelfull/readnovelfull")); app.use("/api/5/", require("./src/en/mtlnovel/mtlnovel")); +app.use("/api/6/", require("./src/en/novelhall/novelhall")); const PORT = process.env.PORT || 5000; diff --git a/src/en/novelhall/icon.webp b/src/en/novelhall/icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..dbadec4737dcb310d7b5ed9a9797a1b87b87aceb GIT binary patch literal 2220 zcmV;d2vhe`Nk&Gb2mkK@+q%txN}mJduOoE-*%A@J z8jvGNlB7gc?+H(gFG8TdSa)}2Cge7f97$0vR{eKRIdT45ws&2b3D>r5W6z3h+pIFu z+p1h8z21R!ULbWwN|mW>+qOURR{#KBKoIZ>+yfTy0!V-WyaGBP0t%ouv4KC}9b!Sf z0f)c_Z~-_-_bRO3SEg)#EEA)lA&|-J|0HX#d6p#TAr~zQ8@eO_jJb(ZQfB?CN5&!`ZfO|k_k_~i@uofSx zYPukRsey!6s6hs|L7_krYEy?`GA1?~!GV*NFl!`;VV+fLixerfAJ08>vaOGo8PNr# zT#z5F3J53aab4W+O#glS_iGL2`tQJPBt>%RmUm#`X5YZYBtL$(;r70qfn?o^Zj2L- zKYHDM#@n!eP|toN41??Yo)2;0_~v}*$Oj8*3T5x>Q*M}e{lCjr7=iLzw;X=KR&$;hB5q zBwmQ1BB4YPe9fl~VbkQB`;EErwbk+F91BJwDrR2x2NpeK6opNjzSGQQ)+4|{UdyRGjJGztecrvz%6 zpt+&WTfo!cuI|I*1J`kek#~OjW%G>L^QZ3*V4+yMe$u@yt444}lDm2h8s7c>?b!vQ zJ9Q^!O)!YVep|L>>+-+4^zYT9JK|G&&MB5)bK}vQ3}G_xv4`(}d(o=J&rKaXXzXow zOg~geQQnm#AAEGQ0WAM>$2|``j<0UR4_^cl=ZF6txb(JW|0QhuB;{IhI4;i`r{<989Du&hw>l-fYtPLs!S~ArX@yE%7D48 z{u~qmEC96|r#A}30{-s|LjM`90ii9|!bF}Eo?{LVMIDbD!S_%9=bCCvm}g~wht@Rk z5lZ1@SDuQ~^`Y6G9P4<|x(#?FPDKRog1V%; z_tc7%VLnJj1hAq%9kZ+0bsE@j!V4SD1r$oGVWQjTrV60|9zHDz-BhgIvy|&xOb{zr zC5TuSGZh38+5SrZ1L!~g!IyWKyfP&^BKtrALYwBDW?|L;Kng42AO=8Pfu*k+VFIst&r*2(kCMC+0 z<>8;Y{1^vL!bZ|0l}1|NSf_D6B-K@`t{{k|l~K8z1WTFI9py}eNx7t3@0;T5&IRf{ z`pT$%cXyCQG3%wPI%vUahQxuZ6xmd$?uW(|s3dI4)YcV8np&d%2ar%B75e=C_p@u$ zJYE#?ZJ^`5^Q1nUD63Yf^494CET&UncdCn3M~bFetH-Rk6Ct7zC+8qqBwgY*Cug^| zGy!0c=vq(RDHHXMx>eVxI4hU}N*E5*5MspvV_iAHl4Bs5Of+wfLvwSvi$g|;eNU=O z^c&V4N8Nhwop|d;KNX^(zSIwcgsRcZg&JHX8l3Da&sI>O>N?XnqQxHVG>K`Ky6=)+ zU9Y?6zPqQ~5&njlf7l%zHqM`2uQ5kUkzMtNRR&-W>72Mik+uLkEHGv3EJ)IrlwZVT z-1Q$GN?5;UPoTb`wU&>*;z@ftReR|C`nVRT3e&S0DzzRmC}*ygYOG|1RARDu_UlBJ6g(t)@dbnHKzMvF*&WJIcUqhfFMv5 zAv(qLMv_dlh>Q|;&|`Y9=YJKzRiZV}R}odp7^R$xX{w6)vX(k^vgX>b&6Wq41DGdR zBPhucas { + request(baseUrl, (err, response, body) => { + if (err) throw err; + + let novels = []; + + $ = cheerio.load(body); + + $("div.section1") + .find("li") + .each(function (result) { + let novelName = $(this).find(".book-info > h2 > a").text(); + let novelCover = $(this).find("img").attr("src"); + let novelUrl = $(this).find("a").attr("href").substring(1); + + novel = { + extensionId: 6, + novelName, + novelCover, + novelUrl, + }; + + novels.push(novel); + }); + + res.json(novels); + }); +}); + +// Novel + +router.get("/novel/:novelUrl", (req, res) => { + let novelUrl = req.params.novelUrl; + const url = `${baseUrl}${novelUrl}/`; + + request(url, (err, response, body) => { + if (err) throw err; + + $ = cheerio.load(body); + + let novel = {}; + + novel.extensionId = 6; + + novel.sourceName = "NovelHall"; + + novel.sourceUrl = url; + + novel.novelUrl = `${novelUrl}/`; + + novel.novelName = $("h1").text(); + + novel.novelCover = $("img").attr("src"); + + novel.novelSummary = $("div.intro") + .text() + .replace(/[\t\n]/g, ""); + + novel["Author(s)"] = $("span.blue") + .first() + .text() + .replace("Author:", ""); + + novel["Genre(s)"] = $("a.red").text(); + + novel["Artist(s)"] = null; + + novel.Status = $("span.blue") + .first() + .next() + .text() + .replace("Status:", ""); + + let novelChapters = []; + + $("li.post-11").each(function (result) { + let chapterName = $(this).find("a").text(); + + let releaseDate = null; + + let chapterUrl = $(this).find("a").attr("href"); + + if (chapterUrl) { + chapterUrl = chapterUrl.replace(`/${novelUrl}/`, ""); + } + + novelChapters.push({ + chapterName, + releaseDate, + chapterUrl, + }); + }); + + novel.novelChapters = novelChapters; + + res.json(novel); + }); +}); + +router.get("/novel/:novelUrl/:chapterUrl", (req, res) => { + url = `${baseUrl}${req.params.novelUrl}/${req.params.chapterUrl}`; + + request(url, (err, response, body) => { + if (err) throw err; + + $ = cheerio.load(body); + + let chapterName = $("h1").text(); + + let chapterText = $("div.entry-content").text(); + + let nextChapter = null; + + nextChapter = $('a[rel="next"]') + .attr("href") + .replace(`/${req.params.novelUrl}/`, ""); + + let prevChapter = null; + + prevChapter = $('a[rel="prev"]') + .attr("href") + .replace(`/${req.params.novelUrl}/`, ""); + + chapter = { + extensionId: 6, + novelUrl: `${req.params.novelUrl}/`, + chapterUrl: `${req.params.chapterUrl}/`, + chapterName, + chapterText, + nextChapter, + prevChapter, + }; + + res.json(chapter); + }); +}); + +router.get("/search/", (req, res) => { + let searchTerm = req.query.s; + searchTerm = encodeURI(searchTerm); + const searchUrl = `https://www.novelhall.com/index.php?s=so&module=book&keyword=${searchTerm}`; + + request(searchUrl, (err, response, body) => { + if (err) throw err; + + $ = cheerio.load(body); + + let novels = []; + + $("tr").each(function (result) { + let novelName = $(this) + .find("td:nth-child(2)") + .text() + .replace(/[\t\n]/g, ""); + + let novelCover = + "https://cdn.novelupdates.com/imgmid/noimagemid.jpg"; + let novelUrl = $(this).find("td:nth-child(2) >").attr("href"); + + if (novelUrl) { + novelUrl = novelUrl.slice(1); + } + + novel = { + extensionId: 6, + novelName, + novelCover, + novelUrl, + }; + + novels.push(novel); + }); + + res.json(novels); + }); +}); + +module.exports = router; diff --git a/src/extensions.js b/src/extensions.js index 75d0a57..52d0e74 100644 --- a/src/extensions.js +++ b/src/extensions.js @@ -43,6 +43,15 @@ extensions = [ sourceLanguage: "English", status: 0, }, + { + sourceId: 6, + sourceUrl: "https://www.novelhall.com/", + sourceName: "NovelHall", + sourceCover: + "https://www.novelhall.com/statics/default/images/logo.b5b4c.png", + sourceLanguage: "English", + status: 1, + }, ]; module.exports = extensions;