From 16893152dc4040d0a04ae7b789abf1be0f9beb5e Mon Sep 17 00:00:00 2001 From: D3ICIDE <183315953+D3ICIDE@users.noreply.github.com> Date: Thu, 8 Oct 2026 16:10:54 +0530 Subject: [PATCH 1/6] added imagesReferer to AllNovelFull --- plugins/multisrc/readnovelfull/sources.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/multisrc/readnovelfull/sources.json b/plugins/multisrc/readnovelfull/sources.json index 31189bf08..850fdc6d2 100644 --- a/plugins/multisrc/readnovelfull/sources.json +++ b/plugins/multisrc/readnovelfull/sources.json @@ -67,7 +67,9 @@ "options": { "latestPage": "latest-release-novel", "searchPage": "search", - "chapterListing": "ajax-chapter-option" + "imageReferer": true, + "chapterListing": "ajax-chapter-option", + "versionIncrements": 1 } }, { From 7c98d366f03ec5a65f726a7a1f2c42aac6e50c7a Mon Sep 17 00:00:00 2001 From: D3ICIDE <183315953+D3ICIDE@users.noreply.github.com> Date: Thu, 8 Oct 2026 16:42:32 +0530 Subject: [PATCH 2/6] test --- plugins/multisrc/readnovelfull/template.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/multisrc/readnovelfull/template.ts b/plugins/multisrc/readnovelfull/template.ts index f1e9a76bb..1fa429bbf 100644 --- a/plugins/multisrc/readnovelfull/template.ts +++ b/plugins/multisrc/readnovelfull/template.ts @@ -46,6 +46,7 @@ export class ReadNovelFullPlugin implements Plugin.PluginBase { options: ReadNovelFullOptions; filters?: Filters | undefined; imageRequestInit?: Plugin.ImageRequestInit; + debugCalls = 0; constructor(metadata: ReadNovelFullMetadata) { this.id = metadata.id; @@ -366,7 +367,14 @@ export class ReadNovelFullPlugin implements Plugin.PluginBase { ); } const html = await result.text(); - return this.parseNovels(html); + const novels = this.parseNovels(html); + this.debugCalls = (this.debugCalls || 0) + 1; + novels.push({ + name: `DEBUG page ${pageNo} call #${this.debugCalls}`, + path: `debug-${pageNo}-${this.debugCalls}`, + cover: '', + }); + return novels; } async parseNovel(novelPath: string): Promise { From d9b62ffae0b0e1a0541fa5b02e3aef9923f1536c Mon Sep 17 00:00:00 2001 From: D3ICIDE <183315953+D3ICIDE@users.noreply.github.com> Date: Thu, 8 Oct 2026 16:51:37 +0530 Subject: [PATCH 3/6] test --- plugins/multisrc/readnovelfull/sources.json | 2 +- plugins/multisrc/readnovelfull/template.ts | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/plugins/multisrc/readnovelfull/sources.json b/plugins/multisrc/readnovelfull/sources.json index 850fdc6d2..d2eea9fc5 100644 --- a/plugins/multisrc/readnovelfull/sources.json +++ b/plugins/multisrc/readnovelfull/sources.json @@ -69,7 +69,7 @@ "searchPage": "search", "imageReferer": true, "chapterListing": "ajax-chapter-option", - "versionIncrements": 1 + "versionIncrements": 2 } }, { diff --git a/plugins/multisrc/readnovelfull/template.ts b/plugins/multisrc/readnovelfull/template.ts index 1fa429bbf..5b27691d3 100644 --- a/plugins/multisrc/readnovelfull/template.ts +++ b/plugins/multisrc/readnovelfull/template.ts @@ -47,6 +47,7 @@ export class ReadNovelFullPlugin implements Plugin.PluginBase { filters?: Filters | undefined; imageRequestInit?: Plugin.ImageRequestInit; debugCalls = 0; + private seenPaths = new Set(); constructor(metadata: ReadNovelFullMetadata) { this.id = metadata.id; @@ -366,11 +367,16 @@ export class ReadNovelFullPlugin implements Plugin.PluginBase { `Could not reach site (${result.status}: ${result.statusText}) try to open in webview.`, ); } + //replace const html = await result.text(); + if (pageNo === 1) this.seenPaths.clear(); const novels = this.parseNovels(html); - this.debugCalls = (this.debugCalls || 0) + 1; + const unique = new Set(novels.map(n => n.path)).size; + const seenBefore = novels.filter(n => this.seenPaths.has(n.path)).length; + novels.forEach(n => this.seenPaths.add(n.path)); + this.debugCalls++; novels.push({ - name: `DEBUG page ${pageNo} call #${this.debugCalls}`, + name: `DEBUG p${pageNo} n=${novels.length} uniq=${unique} seen=${seenBefore}`, path: `debug-${pageNo}-${this.debugCalls}`, cover: '', }); From 8f17bdaca0bea1ecf701672fd204800c2dd352e5 Mon Sep 17 00:00:00 2001 From: D3ICIDE <183315953+D3ICIDE@users.noreply.github.com> Date: Thu, 8 Oct 2026 16:51:49 +0530 Subject: [PATCH 4/6] test --- plugins/multisrc/readnovelfull/sources.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/multisrc/readnovelfull/sources.json b/plugins/multisrc/readnovelfull/sources.json index d2eea9fc5..d85703a53 100644 --- a/plugins/multisrc/readnovelfull/sources.json +++ b/plugins/multisrc/readnovelfull/sources.json @@ -69,7 +69,7 @@ "searchPage": "search", "imageReferer": true, "chapterListing": "ajax-chapter-option", - "versionIncrements": 2 + "versionIncrements": 3 } }, { From 26e7d0dbf941b88d5fdb97def6a9e422a94f4152 Mon Sep 17 00:00:00 2001 From: D3ICIDE <183315953+D3ICIDE@users.noreply.github.com> Date: Thu, 8 Oct 2026 17:14:15 +0530 Subject: [PATCH 5/6] test --- plugins/multisrc/readnovelfull/sources.json | 3 ++- plugins/multisrc/readnovelfull/template.ts | 28 ++++++++------------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/plugins/multisrc/readnovelfull/sources.json b/plugins/multisrc/readnovelfull/sources.json index d85703a53..66f887fc5 100644 --- a/plugins/multisrc/readnovelfull/sources.json +++ b/plugins/multisrc/readnovelfull/sources.json @@ -69,7 +69,8 @@ "searchPage": "search", "imageReferer": true, "chapterListing": "ajax-chapter-option", - "versionIncrements": 3 + "versionIncrements": 4, + "listClass": "fwn-archive-main" } }, { diff --git a/plugins/multisrc/readnovelfull/template.ts b/plugins/multisrc/readnovelfull/template.ts index 5b27691d3..24aa4b262 100644 --- a/plugins/multisrc/readnovelfull/template.ts +++ b/plugins/multisrc/readnovelfull/template.ts @@ -27,6 +27,7 @@ type ReadNovelFullOptions = { customJs?: string; chapterListPaginated?: boolean; imageReferer?: boolean; + listClass?: string; }; export type ReadNovelFullMetadata = { @@ -46,8 +47,6 @@ export class ReadNovelFullPlugin implements Plugin.PluginBase { options: ReadNovelFullOptions; filters?: Filters | undefined; imageRequestInit?: Plugin.ImageRequestInit; - debugCalls = 0; - private seenPaths = new Set(); constructor(metadata: ReadNovelFullMetadata) { this.id = metadata.id; @@ -79,6 +78,13 @@ export class ReadNovelFullPlugin implements Plugin.PluginBase { let tempNovel: Partial = {}; let depth: number; + const { listClass } = this.options; + const isListStart = (cls?: string) => { + if (!cls) return false; + if (listClass) return cls.split(/\s+/).includes(listClass); + return cls.includes('archive') || cls === 'col-content'; // legacy behaviour + }; + const stateStack: ParsingState[] = [ParsingState.Idle]; const currentState = () => stateStack[stateStack.length - 1]; const pushState = (state: ParsingState) => stateStack.push(state); @@ -89,8 +95,8 @@ export class ReadNovelFullPlugin implements Plugin.PluginBase { onopentag: (name, attribs) => { const state = currentState(); if ( - attribs.class?.includes('archive') || - attribs.class === 'col-content' + isListStart(attribs.class) && + (!listClass || state === ParsingState.Idle) ) { pushState(ParsingState.NovelList); depth = 0; @@ -367,20 +373,8 @@ export class ReadNovelFullPlugin implements Plugin.PluginBase { `Could not reach site (${result.status}: ${result.statusText}) try to open in webview.`, ); } - //replace const html = await result.text(); - if (pageNo === 1) this.seenPaths.clear(); - const novels = this.parseNovels(html); - const unique = new Set(novels.map(n => n.path)).size; - const seenBefore = novels.filter(n => this.seenPaths.has(n.path)).length; - novels.forEach(n => this.seenPaths.add(n.path)); - this.debugCalls++; - novels.push({ - name: `DEBUG p${pageNo} n=${novels.length} uniq=${unique} seen=${seenBefore}`, - path: `debug-${pageNo}-${this.debugCalls}`, - cover: '', - }); - return novels; + return this.parseNovels(html); } async parseNovel(novelPath: string): Promise { From 9ad65c9704336c5f5877e763da3357becc869bbc Mon Sep 17 00:00:00 2001 From: D3ICIDE <183315953+D3ICIDE@users.noreply.github.com> Date: Thu, 8 Oct 2026 17:25:33 +0530 Subject: [PATCH 6/6] cleanup --- plugins/multisrc/readnovelfull/sources.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/multisrc/readnovelfull/sources.json b/plugins/multisrc/readnovelfull/sources.json index 66f887fc5..78712f436 100644 --- a/plugins/multisrc/readnovelfull/sources.json +++ b/plugins/multisrc/readnovelfull/sources.json @@ -67,9 +67,8 @@ "options": { "latestPage": "latest-release-novel", "searchPage": "search", - "imageReferer": true, "chapterListing": "ajax-chapter-option", - "versionIncrements": 4, + "versionIncrements": 1, "listClass": "fwn-archive-main" } },