From 3c21983c6ec7e97c2cc93d01dd04db630477f9b3 Mon Sep 17 00:00:00 2001 From: Schnitzel5 Date: Thu, 28 Nov 2024 15:47:22 +0100 Subject: [PATCH] added novel template --- javascript/icon/en.novelupdates.png | Bin 0 -> 18696 bytes javascript/novel/src/en/novelupdates.js | 148 ++++++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 javascript/icon/en.novelupdates.png create mode 100644 javascript/novel/src/en/novelupdates.js diff --git a/javascript/icon/en.novelupdates.png b/javascript/icon/en.novelupdates.png new file mode 100644 index 0000000000000000000000000000000000000000..92ee0b7532a3e76e4716b81070bd0730d709c472 GIT binary patch literal 18696 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 a[href]"); + const list = []; + for (const element of mangaElements) { + const name = element.selectFirst("span.block").text; + const imageUrl = element.selectFirst("img").getSrc; + const link = element.getHref; + list.push({ name, imageUrl, link }); + } + const hasNextPage = doc.selectFirst("a.flex.bg-themecolor:contains(Next)").text != ""; + return { "list": list, hasNextPage }; + } + toStatus(status) { + if (status == "Ongoing") + return 0; + else if (status == "Completed") + return 1; + else if (status == "Hiatus") + return 2; + else if (status == "Dropped") + return 3; + else + return 5; + } + parseDate(date) { + const months = { + "january": "01", "february": "02", "march": "03", "april": "04", + "may": "05", "june": "06", "july": "07", "august": "08", + "september": "09", "october": "10", "november": "11", "december": "12" + }; + date = date.toLowerCase().replace(/(st|nd|rd|th)/g, "").split(" "); + if (!(date[0] in months)) { + return String(new Date().valueOf()); + } + date[0] = months[date[0]]; + const formattedDate = `${date[2]}-${date[0]}-${date[1].padStart(2, "0")}`; // Format YYYY-MM-DD + return String(new Date(formattedDate).valueOf()); + } + + async getPopular(page) { + const baseUrl = new SharedPreferences().get("overrideBaseUrl1"); + const res = await new Client().get(`${baseUrl}/series?name=&status=-1&types=-1&order=rating&page=${page}`); + return this.mangaListFromPage(res); + } + + async getLatestUpdates(page) { + const baseUrl = new SharedPreferences().get("overrideBaseUrl1"); + const res = await new Client().get(`${baseUrl}/series?genres=&status=-1&types=-1&order=update&page=${page}`); + return this.mangaListFromPage(res); + } + async search(query, page, filters) { + const baseUrl = new SharedPreferences().get("overrideBaseUrl1"); + const res = await new Client().get(`${baseUrl}/series?name=${query}&page=${page}`); + return this.mangaListFromPage(res); + } + + async getDetail(url) { + const baseUrl = new SharedPreferences().get("overrideBaseUrl1"); + const res = await new Client().get(baseUrl + "/" + url); + const doc = new Document(res.body); + const imageUrl = doc.selectFirst("img[alt=poster]")?.getSrc; + const description = doc.selectFirst("span.font-medium.text-sm")?.text.trim(); + const author = doc.selectFirst("h3:contains('Author')").nextElementSibling.text.trim(); + const artist = doc.selectFirst("h3:contains('Artist')").nextElementSibling.text.trim(); + const status = this.toStatus(doc.selectFirst("h3:contains('Status')").nextElementSibling.text.trim()); + const genre = doc.select("div[class^=space] > div.flex > button.text-white") + .map((el) => el.text.trim()); + const chapters = []; + const chapterElements = doc.select("div.scrollbar-thumb-themecolor > div.group"); + for (const element of chapterElements) { + const url = element.selectFirst("a").getHref; + const chNumber = element.selectFirst("h3 > a").text; + const chTitle = element.select("h3 > a > span").map((span) => span.text.trim()).join(" ").trim(); + const name = chTitle == "" ? chNumber : `${chNumber} - ${chTitle}`; + + let dateUpload; + try { + const dateText = element.selectFirst("h3 + h3").text.trim(); + const cleanDateText = dateText.replace(/(\d+)(st|nd|rd|th)/, "$1"); + dateUpload = this.parseDate(cleanDateText); + } catch (_) { + dateUpload = null + } + chapters.push({ name, url, dateUpload }); + } + return { + imageUrl, + description, + genre, + author, + artist, + status, + chapters + }; + } + + + async getPageList(url) { + const baseUrl = new SharedPreferences().get("overrideBaseUrl1"); + const res = await new Client().get(baseUrl + "/series/" + url); + const scriptData = new Document(res.body).select("script:contains(self.__next_f.push)").map((e) => e.text.substringAfter("\"").substringBeforeLast("\"")).join(""); + console.log(scriptData); + const match = scriptData.match(/\\"pages\\":(\[.*?])/); + if (!match) { + throw new Error("Failed to find chapter pages"); + } + const pagesData = match[1]; + + const pageList = JSON.parse(pagesData.replace(/\\(.)/g, "$1")) + .sort((a, b) => a.order - b.order); + return pageList; + } + + getSourcePreferences() { + return [{ + "key": "overrideBaseUrl1", + "editTextPreference": { + "title": "Override BaseUrl", + "summary": "https://novelupdates.com", + "value": "https://novelupdates.com", + "dialogTitle": "Override BaseUrl", + "dialogMessage": "", + } + }]; + } + +} \ No newline at end of file