Skip to content

Add Konkon/Kuupress support - #2941

Open
MineRobber9000 wants to merge 7 commits into
dteviot:ExperimentalTabModefrom
MineRobber9000:konkon-kuupress
Open

Add Konkon/Kuupress support#2941
MineRobber9000 wants to merge 7 commits into
dteviot:ExperimentalTabModefrom
MineRobber9000:konkon-kuupress

Conversation

@MineRobber9000

@MineRobber9000 MineRobber9000 commented Aug 21, 2026

Copy link
Copy Markdown

Konkon and Kuupress are novel sharing sites from the team originally behind ZetroTranslation (shutting down at the end of this month). They share a similar backend, so I figured I'd PR in support for both of them at the same time.

Unfortunately, due to how their API authenticates requests, we can't actually get chapters that aren't completely unlocked to the public (basically, no Origin header, no user authentication, even if we have the user's konkon-/kuupress-session cookie). Still, being able to download all free chapters of a novel is better than nothing. So apparently I completely missed HttpClient.setDeclarativeNetRequestRules when I was looking at other parsers... that one's on me, lol. I can now confirm it works (at least, I was able to download a chapter I bought on Konkon; like I said, the two sites are extremely similar on the backend, so I believe it should also work on Kuupress).

One thing to note: currently, all Konkon/Kuupress novels trigger the WEBP "your ePub reader may not be able to render this" warning. This is because all covers are stored as WEBP on the backend (except the default covers, which are stored as JPG).

let data = await this.fetchCache.fetch(url);
// Store novel URL and title on parser (used in addFirstPageUrlToWebPages below)
this.novelUrl = this.siteUrl + "/read/" + data.data?.slug;
this.novelTitle = data.data?.title;

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this actually going to work if data.data is null? That will result in an undefined novelTitle.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I generally assume data.data exists, though I should definitely add a check for it after fetching the data. If the title or slug get moved, they will indeed be undefined. Should this raise an error instead?

Comment thread plugin/js/parsers/KonkonKuupressParser.js
Comment thread plugin/js/parsers/KonkonKuupressParser.js Outdated
Comment thread plugin/js/parsers/KonkonKuupressParser.js Outdated
Comment thread plugin/js/parsers/KonkonKuupressParser.js Outdated

@dteviot dteviot left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your hard work.
Fix the innerHTML issue and I'll happily accept.

Also makes sure that the error messages are always somewhat informative
as to what exactly is missing.
For chapter fetching and the novel description on the ToC page, I
ended up using `util.parseHtmlAndInsertIntoContent`, since it does
pretty much exactly what I want. As for extracting the description for
the metainfo, I ended up going with just plain `util.sanitize` and
returning the textContent.
@MineRobber9000
MineRobber9000 requested a review from dteviot August 22, 2026 05:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants