Skip to content

Commit eb7a4d5

Browse files
authored
#2064 update kemono rule registration (#2065)
* Update Kemono rule registration Updated Kemono rule registration to look at site content instead of url.
1 parent 6e4adcc commit eb7a4d5

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

plugin/js/parsers/KemonopartyParser.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,27 @@
11
"use strict";
22

3-
parserFactory.register("kemono.su", () => new KemonopartyParser());
3+
parserFactory.registerRule(
4+
(url, dom) => KemonopartyParser.isKemono(dom),
5+
() => new KemonopartyParser()
6+
);
47

58
class KemonopartyParser extends Parser{
69
constructor() {
710
super();
811
}
12+
13+
static isKemono(dom) {
14+
return dom.querySelector("meta[name='og:title']").content == "Kemono"
15+
&& dom.querySelector("section.site-section div.card-list") != null;
16+
}
917

1018
async getChapterUrls(dom, chapterUrlsUI) {
1119
let chapters = [];
1220
let urlsOfTocPages = await this.getUrlsOfTocPages(dom);
1321
for(let url of urlsOfTocPages) {
1422
await this.rateLimitDelay();
1523
let json = (await HttpClient.fetchJson(url)).json;
24+
json.url = url;
1625
let partialList = this.extractPartialChapterList(json);
1726
chapterUrlsUI.showTocProgress(partialList);
1827
chapters = chapters.concat(partialList);
@@ -50,7 +59,7 @@ class KemonopartyParser extends Parser{
5059
urlbuilder.searchParams.delete(key);
5160
}
5261
let regex = new RegExp("/?$");
53-
urlbuilder.href = urlbuilder.href.replace("https://kemono.su", "https://kemono.su/api/v1").replace(regex, "/posts-legacy");
62+
urlbuilder.href = urlbuilder.href.replace(`https://${baseurl.hostname}`, `https://${baseurl.hostname}/api/v1`).replace(regex, "/posts-legacy");
5463

5564
for (const [key, value] of baseurl.searchParams.entries()) {
5665
urlbuilder.searchParams.set(key, value);
@@ -70,10 +79,11 @@ class KemonopartyParser extends Parser{
7079
extractPartialChapterList(data) {
7180
// get href from the dom, not the url of the page
7281
try {
82+
let url = new URL(data.url);
7383
let authorid = data.props.id;
7484
let ids = data.results.map(result => result.id);
7585
let titles = data.results.map(result => result.title);
76-
let urls = ids.map(id => `https://kemono.su/api/v1/patreon/user/${authorid}/post/${id}`);
86+
let urls = ids.map(id => `https://${url.hostname}/api/v1/patreon/user/${authorid}/post/${id}`);
7787
return urls.map((url, i) => ({
7888
sourceUrl: url,
7989
title: titles[i]

0 commit comments

Comments
 (0)