From d96843da3b88c810cd4c9092506251dc15a44785 Mon Sep 17 00:00:00 2001 From: nyagami Date: Sun, 28 Apr 2024 16:08:03 +0700 Subject: [PATCH] Fix plugins (#914) * fix: novel hall search * bump novel hall version * fix: storyseeding * bumps StorySeedling version * fix: ltnovel, fans mtl, fannovel domain * fix: types * added wuxiaV --- icons/multisrc/readwn/wuxiav/icon.png | Bin 0 -> 4129 bytes libs/fetch.ts | 2 +- plugins/english/StorySeedling.ts | 22 +++++++++++----------- plugins/english/novelhall.ts | 13 +++++++------ scripts/multisrc/readwn/sources.json | 26 ++++++++++++++++++++------ scripts/multisrc/readwn/template.ts | 8 +++++++- 6 files changed, 46 insertions(+), 25 deletions(-) create mode 100644 icons/multisrc/readwn/wuxiav/icon.png diff --git a/icons/multisrc/readwn/wuxiav/icon.png b/icons/multisrc/readwn/wuxiav/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..60ca0c3ad49abe50bbb063b6c7760f2086a31f29 GIT binary patch literal 4129 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 literal 0 HcmV?d00001 diff --git a/libs/fetch.ts b/libs/fetch.ts index 8e4675a..067d994 100644 --- a/libs/fetch.ts +++ b/libs/fetch.ts @@ -58,7 +58,7 @@ const makeInit = async (init?: FetchInit) => { */ export async function fetchApi(url: string, init?: FetchInit) { init = await makeInit(init); - // console.log(init.headers); + console.log(init.headers); // console.log(url, init); return await fetch(url, init as RequestInit); } diff --git a/plugins/english/StorySeedling.ts b/plugins/english/StorySeedling.ts index 9dd258f..fd42123 100644 --- a/plugins/english/StorySeedling.ts +++ b/plugins/english/StorySeedling.ts @@ -8,7 +8,7 @@ class StorySeedlingPlugin implements Plugin.PluginBase { name = 'StorySeedling'; icon = 'src/en/storyseedling/icon.png'; site = 'https://storyseedling.com/'; - version = '1.0.0'; + version = '1.0.1'; async popularNovels(pageNo: number): Promise { let novels: Plugin.NovelItem[] = []; @@ -25,11 +25,11 @@ class StorySeedlingPlugin implements Plugin.PluginBase { .replace("')", '') as string; var data = new FormData(); - data.set('search', ''); - data.set('orderBy', 'recent'); - data.set('curpage', pageNo.toString()); - data.set('post', postValue); - data.set('action', 'fetch_browse'); + data.append('search', ''); + data.append('orderBy', 'recent'); + data.append('curpage', pageNo.toString()); + data.append('post', postValue); + data.append('action', 'fetch_browse'); var response = await ( await fetchApi(url, { body: data, method: 'POST' }) @@ -135,11 +135,11 @@ class StorySeedlingPlugin implements Plugin.PluginBase { .replace("')", '') as string; var data = new FormData(); - data.set('search', searchTerm); - data.set('orderBy', 'recent'); - data.set('curpage', pageNo.toString()); - data.set('post', postValue); - data.set('action', 'fetch_browse'); + data.append('search', searchTerm); + data.append('orderBy', 'recent'); + data.append('curpage', pageNo.toString()); + data.append('post', postValue); + data.append('action', 'fetch_browse'); var response = await ( await fetchApi(url, { body: data, method: 'POST' }) diff --git a/plugins/english/novelhall.ts b/plugins/english/novelhall.ts index 9a0d3c4..1777efb 100644 --- a/plugins/english/novelhall.ts +++ b/plugins/english/novelhall.ts @@ -7,7 +7,7 @@ import { defaultCover } from '@libs/defaultCover'; class NovelHall implements Plugin.PluginBase { id = 'novelhall'; name = 'Novel Hall'; - version = '1.0.0'; + version = '1.0.1'; icon = 'src/en/novelhall/icon.png'; filters?: Filters | undefined; //TODO: Filters Requires hideOnSelect site = 'https://novelhall.com/'; @@ -104,19 +104,20 @@ class NovelHall implements Plugin.PluginBase { const novels: Plugin.NovelItem[] = []; - loadedCheerio('#article_list_content > li').each((idx, ele) => { + loadedCheerio('table tr').each((idx, ele) => { const novelName = loadedCheerio(ele) - .find('h3') + .find('td:nth-child(2)') .text() .replace(/\t+/g, '') .replace(/\n/g, ' '); - const novelCover = loadedCheerio(ele).find('img').attr('data-src'); - const novelUrl = loadedCheerio(ele).find('a').attr('href')?.slice(1); + const novelUrl = loadedCheerio(ele) + .find('td:nth-child(2) a') + .attr('href'); if (!novelUrl) return; const novel = { name: novelName, - cover: novelCover, + cover: defaultCover, path: novelUrl, }; diff --git a/scripts/multisrc/readwn/sources.json b/scripts/multisrc/readwn/sources.json index 3bc2ddb..3bbd588 100644 --- a/scripts/multisrc/readwn/sources.json +++ b/scripts/multisrc/readwn/sources.json @@ -11,22 +11,36 @@ }, { "id": "ltnovel", - "sourceSite": "https://www.ltnovel.com", - "sourceName": "Ltnovel" + "sourceSite": "https://www.ltnovels.com", + "sourceName": "Ltnovel", + "options": { + "versionIncrements": 1 + } }, { "id": "wuxiamtl", - "sourceSite": "https://www.fansmtl.com", - "sourceName": "Fans MTL" + "sourceSite": "https://www.fansmtl.org", + "sourceName": "Fans MTL", + "options": { + "versionIncrements": 1 + } }, { "id": "fannovel", - "sourceSite": "https://www.fannovel.com", - "sourceName": "FanNovel" + "sourceSite": "https://www.fannovels.org", + "sourceName": "FanNovel", + "options": { + "versionIncrements": 1 + } }, { "id": "wuxiaspace", "sourceSite": "https://www.wuxiaspace.com", "sourceName": "Wuxia Space" + }, + { + "id": "wuxiav", + "sourceSite": "https://www.wuxiav.com", + "sourceName": "WuxiaV" } ] diff --git a/scripts/multisrc/readwn/template.ts b/scripts/multisrc/readwn/template.ts index 61c9d06..c8de278 100644 --- a/scripts/multisrc/readwn/template.ts +++ b/scripts/multisrc/readwn/template.ts @@ -6,11 +6,16 @@ import { load as parseHTML } from 'cheerio'; import dayjs from 'dayjs'; import qs from 'qs'; +interface ReadwnOptions { + versionIncrements?: number; +} + export interface ReadwnMetadata { id: string; sourceSite: string; sourceName: string; filters?: any; + options?: ReadwnOptions; } class ReadwnPlugin implements Plugin.PluginBase { @@ -26,7 +31,8 @@ class ReadwnPlugin implements Plugin.PluginBase { this.name = metadata.sourceName; this.icon = `multisrc/readwn/${metadata.id.toLowerCase()}/icon.png`; this.site = metadata.sourceSite; - this.version = '1.0.1'; + const versionIncrements = metadata.options?.versionIncrements || 0; + this.version = `1.0.${1 + versionIncrements}`; this.filters = metadata.filters; }