From c546dfd19a729f6439c96671439b2560f11ef032 Mon Sep 17 00:00:00 2001 From: Schnitzel5 Date: Mon, 5 May 2025 16:21:49 +0200 Subject: [PATCH] + --- javascript/icon/all.annasarchive.png | Bin 0 -> 12676 bytes javascript/novel/src/all/annasarchive.js | 135 +++++++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 javascript/icon/all.annasarchive.png create mode 100644 javascript/novel/src/all/annasarchive.js diff --git a/javascript/icon/all.annasarchive.png b/javascript/icon/all.annasarchive.png new file mode 100644 index 0000000000000000000000000000000000000000..c9173868fd143e4ec11a622d8cb14c4921806e18 GIT binary patch literal 12676 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"), "")); + const mangaElements = doc.select("a"); + const list = []; + for (const element of mangaElements) { + const name = element.selectFirst("h3").text; + const imageUrl = element.selectFirst("img").getSrc; + const link = element.getHref; + list.push({ name, imageUrl, link }); + } + const hasNextPage = true; + return { list: list, hasNextPage }; + } + + toStatus(status) { + if (status.includes("Ongoing")) return 0; + else if (status.includes("Completed")) return 1; + else if (status.includes("Hiatus")) return 2; + else if (status.includes("Dropped")) return 3; + else return 5; + } + + async getPopular(page) { + const res = await new Client().get( + `${this.source.baseUrl}/search?index=&page=${page}&q=&display=&ext=epub&src=lgli&sort=`, + this.headers + ); + return this.mangaListFromPage(res); + } + + async getLatestUpdates(page) { + const res = await new Client().get( + `${this.source.baseUrl}/search?index=&page=${page}&q=&display=&ext=epub&src=lgli&sort=newest`, + this.headers + ); + return this.mangaListFromPage(res); + } + + async search(query, page, filters) { + //const lang = this.source.lang != "all" ? `&lang=${this.source.lang}` : ""; + let url = `${this.source.baseUrl}/series-finder/?sf=1&sh=${query}&pg=${page}`; + + const res = await new Client().get(url, this.headers); + return this.mangaListFromPage(res); + } + + async getDetail(url) { + const client = new Client(); + const res = await client.get(url, this.headers); + const doc = new Document(res.body); + const imageUrl = doc.selectFirst(".wpb_wrapper img")?.getSrc; + const type = doc.selectFirst("#showtype")?.text.trim(); + const description = + doc.selectFirst("#editdescription")?.text.trim() + `\n\nType: ${type}`; + const author = doc + .select("#authtag") + .map((el) => el.text.trim()) + .join(", "); + const artist = doc + .select("#artiststag") + .map((el) => el.text.trim()) + .join(", "); + const status = this.toStatus(doc.selectFirst("#editstatus")?.text.trim()); + const genre = doc.select("#seriesgenre > a").map((el) => el.text.trim()); + + const chapters = []; + chapters.reverse(); + + return { + imageUrl, + description, + genre, + author, + artist, + status, + chapters, + }; + } + + async getHtmlContent(url) { + const client = await new Client(); + const res = await client.get(url, { + Priority: "u=0, i", + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36", + }); + return await this.cleanHtmlContent(res.body); + } + + async cleanHtmlContent(html) { + const client = await new Client(); + const doc = new Document(html); + const domain = html; + + return `

Domain not supported yet. Content might not load properly!

`; + } + + getFilterList() { + return []; + } + + getSourcePreferences() { + throw new Error("getSourcePreferences not implemented"); + } +}