improvement [Novel Updates]: Added Filters (#1078)
* novel-updates: yoru * novel-updates: update raeitranslations * novel-updates: revert versions * novel-updates: update version Co-authored-by: Rajarshee Chatterjee <rajarshee.adm@gmail.com> * novel-updates: update filters * novel-updates: update filters * novel-updates: revert version * novel-updates: update popular novels * novel-updates: fix * novel-updates: added wetriedls --------- Co-authored-by: Rajarshee Chatterjee <rajarshee.adm@gmail.com>
This commit is contained in:
@@ -6,7 +6,7 @@ import { Plugin } from '@typings/plugin';
|
|||||||
class NovelUpdates implements Plugin.PluginBase {
|
class NovelUpdates implements Plugin.PluginBase {
|
||||||
id = 'novelupdates';
|
id = 'novelupdates';
|
||||||
name = 'Novel Updates';
|
name = 'Novel Updates';
|
||||||
version = '0.7.2';
|
version = '0.7.3';
|
||||||
icon = 'src/en/novelupdates/icon.png';
|
icon = 'src/en/novelupdates/icon.png';
|
||||||
customCSS = 'src/en/novelupdates/customCSS.css';
|
customCSS = 'src/en/novelupdates/customCSS.css';
|
||||||
site = 'https://www.novelupdates.com/';
|
site = 'https://www.novelupdates.com/';
|
||||||
@@ -48,45 +48,59 @@ class NovelUpdates implements Plugin.PluginBase {
|
|||||||
filters?.novelType.value.length ||
|
filters?.novelType.value.length ||
|
||||||
filters?.genres.value.include?.length ||
|
filters?.genres.value.include?.length ||
|
||||||
filters?.genres.value.exclude?.length ||
|
filters?.genres.value.exclude?.length ||
|
||||||
|
filters?.reading_lists.value.length ||
|
||||||
filters?.storyStatus.value !== ''
|
filters?.storyStatus.value !== ''
|
||||||
) {
|
) {
|
||||||
link += 'series-finder/?sf=1';
|
link += 'series-finder/?sf=1';
|
||||||
|
|
||||||
|
if (filters?.language.value.length) {
|
||||||
|
link += '&org=' + filters.language.value.join(',');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filters?.novelType.value.length) {
|
||||||
|
link += '&nt=' + filters.novelType.value.join(',');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filters?.genres.value.include?.length) {
|
||||||
|
link += '&gi=' + filters.genres.value.include.join(',');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filters?.genres.value.exclude?.length) {
|
||||||
|
link += '&ge=' + filters.genres.value.exclude.join(',');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
filters?.genres.value.include?.length ||
|
||||||
|
filters?.genres.value.exclude?.length
|
||||||
|
) {
|
||||||
|
link += '&mgi=' + filters.genre_operator.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filters?.reading_lists.value.length) {
|
||||||
|
link += '&hd=' + filters?.reading_lists.value.join(',');
|
||||||
|
link += '&mRLi=' + filters?.reading_list_operator.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filters?.storyStatus.value.length) {
|
||||||
|
link += '&ss=' + filters.storyStatus.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
link += '&sort=' + filters?.sort.value;
|
||||||
|
|
||||||
|
link += '&order=' + filters?.order.value;
|
||||||
} else if (showLatestNovels) {
|
} else if (showLatestNovels) {
|
||||||
link += 'latest-series/?st=1';
|
link += 'latest-series/?st=1';
|
||||||
} else {
|
} else {
|
||||||
link += 'series-ranking/?rank=week';
|
link += 'series-ranking/?rank=week';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filters?.language.value.length)
|
|
||||||
link += '&org=' + filters.language.value.join(',');
|
|
||||||
|
|
||||||
if (filters?.novelType.value.length)
|
|
||||||
link += '&nt=' + filters.novelType.value.join(',');
|
|
||||||
|
|
||||||
if (filters?.genres.value.include?.length)
|
|
||||||
link += '&gi=' + filters.genres.value.include.join(',');
|
|
||||||
|
|
||||||
if (filters?.genres.value.exclude?.length)
|
|
||||||
link += '&ge=' + filters.genres.value.exclude.join(',');
|
|
||||||
|
|
||||||
if (
|
|
||||||
filters?.genres.value.include?.length ||
|
|
||||||
filters?.genres.value.exclude?.length
|
|
||||||
)
|
|
||||||
link += '&mgi=' + filters.genre_operator.value;
|
|
||||||
|
|
||||||
if (filters?.storyStatus.value.length)
|
|
||||||
link += '&ss=' + filters.storyStatus.value;
|
|
||||||
|
|
||||||
link += '&sort=' + filters?.sort.value;
|
|
||||||
|
|
||||||
link += '&order=' + filters?.order.value;
|
|
||||||
|
|
||||||
link += '&pg=' + page;
|
link += '&pg=' + page;
|
||||||
|
|
||||||
const body = await fetchApi(link).then(result => result.text());
|
const result = await fetchApi(link);
|
||||||
|
const body = await result.text();
|
||||||
|
|
||||||
const loadedCheerio = parseHTML(body);
|
const loadedCheerio = parseHTML(body);
|
||||||
|
|
||||||
return this.parseNovels(loadedCheerio);
|
return this.parseNovels(loadedCheerio);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -551,6 +565,18 @@ class NovelUpdates implements Plugin.PluginBase {
|
|||||||
chapterText = `<h2>${chapterTitle}</h2><hr><br>${chapterContent}`;
|
chapterText = `<h2>${chapterTitle}</h2><hr><br>${chapterContent}`;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'wetriedtls':
|
||||||
|
const scriptContent_wetried =
|
||||||
|
loadedCheerio('script:contains("p dir=")').html() ||
|
||||||
|
loadedCheerio('script:contains("u003c")').html();
|
||||||
|
if (scriptContent_wetried) {
|
||||||
|
const jsonString_wetried = scriptContent_wetried.slice(
|
||||||
|
scriptContent_wetried.indexOf('.push(') + '.push('.length,
|
||||||
|
scriptContent_wetried.lastIndexOf(')'),
|
||||||
|
);
|
||||||
|
chapterText = JSON.parse(jsonString_wetried)[1];
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 'wuxiaworld':
|
case 'wuxiaworld':
|
||||||
bloatClasses = ['.MuiLink-root'];
|
bloatClasses = ['.MuiLink-root'];
|
||||||
bloatClasses.map(tag => loadedCheerio(tag).remove());
|
bloatClasses.map(tag => loadedCheerio(tag).remove());
|
||||||
@@ -565,6 +591,7 @@ class NovelUpdates implements Plugin.PluginBase {
|
|||||||
const link_yoru = `https://pxp-main-531j.onrender.com/api/v1/book_chapters/${chapterId_yoru}/content`;
|
const link_yoru = `https://pxp-main-531j.onrender.com/api/v1/book_chapters/${chapterId_yoru}/content`;
|
||||||
const json_yoru = await fetchApi(link_yoru).then(r => r.json());
|
const json_yoru = await fetchApi(link_yoru).then(r => r.json());
|
||||||
chapterText = await fetchApi(json_yoru).then(r => r.text());
|
chapterText = await fetchApi(json_yoru).then(r => r.text());
|
||||||
|
break;
|
||||||
case 'zetrotranslation':
|
case 'zetrotranslation':
|
||||||
bloatClasses = ['hr', 'p:contains("\u00a0")'];
|
bloatClasses = ['hr', 'p:contains("\u00a0")'];
|
||||||
bloatClasses.map(tag => loadedCheerio(tag).remove());
|
bloatClasses.map(tag => loadedCheerio(tag).remove());
|
||||||
@@ -824,7 +851,9 @@ class NovelUpdates implements Plugin.PluginBase {
|
|||||||
const url = `${this.site}series-finder/?sf=1&sh=${searchTerm}&sort=srank&order=asc&pg=${page}`;
|
const url = `${this.site}series-finder/?sf=1&sh=${searchTerm}&sort=srank&order=asc&pg=${page}`;
|
||||||
const result = await fetchApi(url);
|
const result = await fetchApi(url);
|
||||||
const body = await result.text();
|
const body = await result.text();
|
||||||
|
|
||||||
const loadedCheerio = parseHTML(body);
|
const loadedCheerio = parseHTML(body);
|
||||||
|
|
||||||
return this.parseNovels(loadedCheerio);
|
return this.parseNovels(loadedCheerio);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -890,6 +919,15 @@ class NovelUpdates implements Plugin.PluginBase {
|
|||||||
],
|
],
|
||||||
type: FilterTypes.CheckboxGroup,
|
type: FilterTypes.CheckboxGroup,
|
||||||
},
|
},
|
||||||
|
genre_operator: {
|
||||||
|
label: 'Genre (And/Or)',
|
||||||
|
value: 'and',
|
||||||
|
options: [
|
||||||
|
{ label: 'And', value: 'and' },
|
||||||
|
{ label: 'Or', value: 'or' },
|
||||||
|
],
|
||||||
|
type: FilterTypes.Picker,
|
||||||
|
},
|
||||||
genres: {
|
genres: {
|
||||||
label: 'Genres',
|
label: 'Genres',
|
||||||
type: FilterTypes.ExcludableCheckboxGroup,
|
type: FilterTypes.ExcludableCheckboxGroup,
|
||||||
@@ -935,15 +973,21 @@ class NovelUpdates implements Plugin.PluginBase {
|
|||||||
{ label: 'Yuri', value: '922' },
|
{ label: 'Yuri', value: '922' },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
genre_operator: {
|
reading_list_operator: {
|
||||||
label: 'Genre (AND/OR)',
|
label: 'Reading List (Include/Exclude)',
|
||||||
value: 'and',
|
value: 'include',
|
||||||
options: [
|
options: [
|
||||||
{ label: 'AND', value: 'and' },
|
{ label: 'Include', value: 'include' },
|
||||||
{ label: 'OR', value: 'or' },
|
{ label: 'Exclude', value: 'exclude' },
|
||||||
],
|
],
|
||||||
type: FilterTypes.Picker,
|
type: FilterTypes.Picker,
|
||||||
},
|
},
|
||||||
|
reading_lists: {
|
||||||
|
label: 'Reading Lists',
|
||||||
|
value: [],
|
||||||
|
options: [{ label: 'All Reading Lists', value: '-1' }],
|
||||||
|
type: FilterTypes.CheckboxGroup,
|
||||||
|
},
|
||||||
} satisfies Filters;
|
} satisfies Filters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user