From 37f083d4e8045b6938b11aae7b229f813201b7cc Mon Sep 17 00:00:00 2001 From: maforn Date: Fri, 25 Oct 2024 23:07:54 +0200 Subject: [PATCH] Added MTLNovels support --- package.json | 3 +- .../{MtlnovelParser.js => MtlnovelsParser.js} | 42 +++++++++---------- plugin/popup.html | 2 +- readme.md | 1 + 4 files changed, 23 insertions(+), 25 deletions(-) rename plugin/js/parsers/{MtlnovelParser.js => MtlnovelsParser.js} (61%) diff --git a/package.json b/package.json index f46b08df..c3b2ff1d 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,8 @@ { "name": "nozwock"}, { "name": "Darthagnon"}, { "name": "LucasFreitaslpf1"}, - { "name": "Jemeni11"} + { "name": "Jemeni11"}, + { "name": "maforn"} ], "license": "GPL-3.0-only", "bugs": { diff --git a/plugin/js/parsers/MtlnovelParser.js b/plugin/js/parsers/MtlnovelsParser.js similarity index 61% rename from plugin/js/parsers/MtlnovelParser.js rename to plugin/js/parsers/MtlnovelsParser.js index 89b45d73..19a9cafa 100644 --- a/plugin/js/parsers/MtlnovelParser.js +++ b/plugin/js/parsers/MtlnovelsParser.js @@ -1,11 +1,16 @@ "use strict"; -parserFactory.register("mtlnovel.com", () => new MtlnovelParser()); +parserFactory.register("mtlnovels.com", () => new MtlnovelsParser()); +parserFactory.register("mtlnovel.com", () => new MtlnovelsParser()); +parserFactory.registerUrlRule( + url => (util.extractHostName(url).endsWith(".mtlnovels.com")), + () => new MtlnovelsParser() +); parserFactory.registerUrlRule( url => (util.extractHostName(url).endsWith(".mtlnovel.com")), - () => new MtlnovelParser() + () => new MtlnovelsParser() ); -class MtlnovelParser extends Parser{ +class MtlnovelsParser extends Parser{ constructor() { super(); } @@ -15,27 +20,18 @@ class MtlnovelParser extends Parser{ document.getElementById("removeOriginalRow").hidden = false; } - async getChapterUrls(dom, chapterUrlsUI) { - let tocUrls = [...dom.querySelectorAll("#panelchapterlist amp-list")] - .map(e => e.getAttribute("src")); - let chapters = []; - for (let tocUrl of tocUrls) { - let json = (await HttpClient.fetchJson(tocUrl)).json; - let partialList = this.chaptersFromJson(json); - chapterUrlsUI.showTocProgress(partialList); - chapters = chapters.concat(partialList); - } - return chapters; - }; + async getChapterUrls(dom) { + const tocUrl = dom.querySelector("#panelchapterlist > a").href - chaptersFromJson(json) { - return json.items.map( - i => ({ - title: i.no + " " + i.title, - sourceUrl: i.permalink - }) - ) - } + const chapterDom = (await HttpClient.fetchHtml(tocUrl)).responseXML; + + return [...chapterDom.querySelectorAll(".ch-list > p > a")] + .map(a => ({ + title: a.textContent.trim(), + sourceUrl: a.href + })) + .reverse(); + }; findContent(dom) { return dom.querySelector("div.single-page"); diff --git a/plugin/popup.html b/plugin/popup.html index bce3e0ac..92d6b5e8 100644 --- a/plugin/popup.html +++ b/plugin/popup.html @@ -661,7 +661,7 @@

Instructions

- + diff --git a/readme.md b/readme.md index d52c5e7a..eb2442f8 100644 --- a/readme.md +++ b/readme.md @@ -774,6 +774,7 @@ Don't forget to give the project a star! Thanks again!
  • Darthagnon
  • LucasFreitaslpf1
  • Jemeni11
  • +
  • maforn