diff --git a/icons/multisrc/readwn/wuxiav/icon.png b/icons/multisrc/readwn/wuxiav/icon.png new file mode 100644 index 0000000..60ca0c3 Binary files /dev/null and b/icons/multisrc/readwn/wuxiav/icon.png differ 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; }