diff --git a/wip/wuxiaclick.js b/wip/wuxiaclick.js deleted file mode 100644 index 59ab3e28..00000000 --- a/wip/wuxiaclick.js +++ /dev/null @@ -1,150 +0,0 @@ -const mangayomiSources = [{ - "name": "WuxiaClick", - "lang": "en", - "baseUrl": "https://wuxia.click", - "apiUrl": "", - "iconUrl": - "https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/main/javascript/icon/en.wuxiaclick.png", - "typeSource": "single", - "itemType": 2, - "version": "0.0.1", - "dateFormat": "", - "dateFormatLocale": "", - "pkgPath": "novel/src/en/wuxiaclick.js", - "appMinVerReq": "0.4.0", - "isNsfw": false, - "hasCloudflare": false - }]; - - class DefaultExtension extends MProvider { - getHeaders(url) { - throw new Error("getHeaders not implemented"); - } - - mangaListFromPage(res) { - const doc = new Document(res.body); - const mangaElements = doc.select("div.mantine-grid-root > div.mantine-grid-col > div"); - const list = []; - for (const element of mangaElements) { - const name = element.selectFirst("a > div > div > div.mantine-Text-root")?.text.trim(); - const link = this.source.baseUrl + element.selectFirst("a").getHref; - const imageUrl = element.selectFirst("img").getSrc; - list.push({ name, imageUrl, link }); - } - const pagination = doc.select("button.mantine-y4zem1 > svg > path").map((el) => el.attr("d")); - const hasNextPage = pagination.length > 1 ? pagination[1].startsWith("M8") : false; - 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}/advance_search?order=-weekly_views&page=${page}`, - ); - return this.mangaListFromPage(res); - } - - async getLatestUpdates(page) { - const res = await new Client().get( - `${this.source.baseUrl}/advance_search?order=-created_at&page=${page}`, - ); - return this.mangaListFromPage(res); - } - - async search(query, page, filters) { - let url = `${this.source.baseUrl}/advance_search?order=&page=${page}&search=${encodeURI(query)}`; - const res = await new Client().get(url); - return this.mangaListFromPage(res); - } - - async getDetail(url) { - const client = new Client(); - const res = await client.get(url); - const doc = new Document(res.body); - const imageUrl = doc.selectFirst("figure > div > img")?.getSrc; - const description = doc.select("div.mantine-Spoiler-root > div > div > div.mantine-Text-root")?.text.trim(); - const author = doc.selectFirst("div.mantine-lqk3v2 > div")?.text.trim(); - const status = this.toStatus(doc.selectFirst("div.mantine-1uxmzbt > div.mantine-1huvzos")?.text.trim()); - const genre = doc.select("div.mantine-bl3g33 > div > a > div > div > span").map((el) => el.text.trim()); - - const chapterElements = doc.select("div.mantine-1x5ubwi > div"); - for (const el of chapterElements) { - let chapterName = el.selectFirst("div.mantine-Group-root > div > a > div > h4")?.text.trim(); - if (!chapterName) { - continue; - } - const chapterUrl = this.source.baseUrl + el.selectFirst("div.mantine-Group-root > div > a").getHref; - let dateUpload; - try { - dateUpload = this.parseDate(el.selectFirst("div > a > div > div > div.mantine-Text-root")?.text.trim()); - } catch (_) { - dateUpload = null; - } - chapters.push({ - name: chapterName, - url: chapterUrl, - dateUpload: dateUpload, - scanlator: null, - }); - } - - chapters.reverse(); - - return { - imageUrl, - description, - genre, - author, - artist, - status, - chapters, - }; - } - - async getHtmlContent(url) { - const client = await new Client(); - const res = await client.get(url); - return await this.cleanHtmlContent(res.body); - } - - async cleanHtmlContent(html) { - const doc = new Document(html); - const title = - doc.selectFirst("div.mantine-Center-root > h1.mantine-Title-root")?.text.trim() || - ""; - const content = doc.select("div.mantine-Container-root > div.mantine-Paper-root > div")[2]?.innerHtml; - return `

${title}



${content}`; - } - - getFilterList() { - return []; - } - - getSourcePreferences() { - throw new Error("getSourcePreferences not implemented"); - } - - 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(",", "").split(" "); - - if (!(date[0] in months)) { - return String(new Date().valueOf()) - } - - date[0] = months[date[0]]; - date = [date[2], date[0], date[1]]; - date = date.join("-"); - return String(new Date(date).valueOf()); - } - }