diff --git a/package.json b/package.json index a75bac2b..d2b169ea 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,8 @@ { "name": "X2E4VXpZKv" }, { "name": "johnpyp", "email": "johnpyp.dev@gmail.com" }, { "name": "meson1271" }, - { "name": "AgatZan" } + { "name": "AgatZan" }, + { "name": "nothing0074", "email": "phong322010@proton.me" } ], "license": "GPL-3.0-only", "bugs": { diff --git a/plugin/js/parsers/LeafStudioParser.js b/plugin/js/parsers/LeafStudioParser.js new file mode 100644 index 00000000..b910d1cf --- /dev/null +++ b/plugin/js/parsers/LeafStudioParser.js @@ -0,0 +1,35 @@ +"use strict"; +parserFactory.register("leafstudio.site", () => new LeafStudioParser()); + +class LeafStudioParser extends Parser { + constructor() { + super(); + } + + async getChapterUrls(dom) { + let menu = dom.querySelector(".novel_index"); + return util.hyperlinksToChapterList(menu).reverse(); + } + + findContent(dom) { + return dom.querySelector(".small"); + } + + extractTitleImpl(dom) { + return dom.querySelector(".title"); + } + + // Remove unwanted elements from fetched content + removeUnwantedElementsFromContentElement(element) { + util.removeChildElementsMatchingSelector(element, "#font-options-bar, .confuse, .post-rating-wrapper, #donation-msg, .novel_nav_item, .text-center, .navigation"); + super.removeUnwantedElementsFromContentElement(element); + } + + extractDescription(dom) { + return dom.querySelector(".desc_div").textContent.trim(); + } + + findChapterTitle(dom) { + return dom.querySelector(".title"); + } +} diff --git a/plugin/popup.html b/plugin/popup.html index bb2f4ba1..b4bf7004 100644 --- a/plugin/popup.html +++ b/plugin/popup.html @@ -725,6 +725,7 @@