feat: add fucknovelpia (#2294)
* feat: add fucknovelpia * Update plugins/english/fucknovelpia.ts Co-authored-by: K1ngfish3r <26593485+K1ngfish3r@users.noreply.github.com> * Apply reviewer feedback: merge genres into ExcludableCheckboxGroup * Fix: add missing encodeURIComponent --------- Co-authored-by: notnsas <ramapanjinararendra@gmail.com> Co-authored-by: K1ngfish3r <26593485+K1ngfish3r@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
cf37cb6464
commit
c4545b0780
@@ -0,0 +1,302 @@
|
|||||||
|
import { CheerioAPI, load as parseHTML } from 'cheerio';
|
||||||
|
import { Plugin } from '@/types/plugin';
|
||||||
|
import { defaultCover } from '@libs/defaultCover';
|
||||||
|
import { fetchApi } from '@libs/fetch';
|
||||||
|
import { Filters, FilterTypes } from '@libs/filterInputs';
|
||||||
|
|
||||||
|
class FuckNovelpia implements Plugin.PluginBase {
|
||||||
|
id = 'FuckNovelpia';
|
||||||
|
name = 'FuckNovelpia';
|
||||||
|
icon = 'src/en/fucknovelpia/icon.png';
|
||||||
|
site = 'https://fucknovelpia.com/';
|
||||||
|
version = '1.0.0';
|
||||||
|
|
||||||
|
// Returns false once the site has silently clamped us past the real last page.
|
||||||
|
hasRequestedPage(cheerio: CheerioAPI, requestedPage: number): boolean {
|
||||||
|
if (requestedPage <= 1) return true;
|
||||||
|
const activeText = cheerio('div.pagination a.active').first().text().trim();
|
||||||
|
const activePage = parseInt(activeText, 10);
|
||||||
|
// No pagination at all, or active page doesn't match what we asked for
|
||||||
|
// -> the site redirected us (usually back to page 1). Stop here.
|
||||||
|
return !isNaN(activePage) && activePage === requestedPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
parseNovelsList(cheerio: CheerioAPI): Plugin.NovelItem[] {
|
||||||
|
const novels: Plugin.NovelItem[] = [];
|
||||||
|
const seen = new Set<string>();
|
||||||
|
|
||||||
|
cheerio('div.grid a[href*="/novel/"]').each((i, el) => {
|
||||||
|
const $el = cheerio(el);
|
||||||
|
|
||||||
|
const href = $el.attr('href');
|
||||||
|
if (!href) return;
|
||||||
|
|
||||||
|
const path = href.replace(this.site, '').replace(/^\/+/, '');
|
||||||
|
if (!path.startsWith('novel/') || seen.has(path)) return;
|
||||||
|
|
||||||
|
const card = $el.closest('div, li, article');
|
||||||
|
const img =
|
||||||
|
$el.find('img').attr('src') ||
|
||||||
|
card.find('img').first().attr('src') ||
|
||||||
|
undefined;
|
||||||
|
|
||||||
|
const title =
|
||||||
|
card.find('h3, h2, .title, strong').first().text().trim() ||
|
||||||
|
$el.attr('title')?.trim() ||
|
||||||
|
$el.text().trim().split('\n')[0].trim();
|
||||||
|
|
||||||
|
if (!title) return;
|
||||||
|
|
||||||
|
seen.add(path);
|
||||||
|
novels.push({
|
||||||
|
name: title,
|
||||||
|
path,
|
||||||
|
cover: img || defaultCover,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return novels;
|
||||||
|
}
|
||||||
|
|
||||||
|
async popularNovels(
|
||||||
|
page: number,
|
||||||
|
{
|
||||||
|
showLatestNovels,
|
||||||
|
filters,
|
||||||
|
}: Plugin.PopularNovelsOptions<typeof this.filters>,
|
||||||
|
): Promise<Plugin.NovelItem[]> {
|
||||||
|
let link;
|
||||||
|
if (showLatestNovels) {
|
||||||
|
link = this.site + 'search.php?q=&sort=latest';
|
||||||
|
} else {
|
||||||
|
link = this.site + 'search.php' + '?q=&sort=popular';
|
||||||
|
link += `&sort=${encodeURIComponent(filters?.sort?.value ?? 'newest')}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (page > 1) {
|
||||||
|
link += '&page=' + page;
|
||||||
|
}
|
||||||
|
|
||||||
|
const genreIncludeParams = (filters?.genres?.value?.include ?? [])
|
||||||
|
.map(value => `&genres_include%5B%5D=${value}`)
|
||||||
|
.join('');
|
||||||
|
const genreExcludeParams = (filters?.genres?.value?.exclude ?? [])
|
||||||
|
.map(value => `&genres_exclude%5B%5D=${value}`)
|
||||||
|
.join('');
|
||||||
|
link +=
|
||||||
|
'&genre_mode=' +
|
||||||
|
filters.genres_include_operator.value +
|
||||||
|
genreIncludeParams +
|
||||||
|
genreExcludeParams;
|
||||||
|
|
||||||
|
const tagIncludeParams = (filters?.tags_include?.value ?? '')
|
||||||
|
.split(/[,\s]+/)
|
||||||
|
.map(tag => tag.trim())
|
||||||
|
.filter(Boolean)
|
||||||
|
.map(tag => `&tags_include%5B%5D=${encodeURIComponent(tag)}`)
|
||||||
|
.join('');
|
||||||
|
const tagExcludeParams = (filters?.tags_exclude?.value ?? '')
|
||||||
|
.split(/[,\s]+/)
|
||||||
|
.map(tag => tag.trim())
|
||||||
|
.filter(Boolean)
|
||||||
|
.map(tag => `&tags_exclude%5B%5D=${encodeURIComponent(tag)}`)
|
||||||
|
.join('');
|
||||||
|
link +=
|
||||||
|
'&tag_mode=' +
|
||||||
|
filters.tags_include_operator.value +
|
||||||
|
tagIncludeParams +
|
||||||
|
tagExcludeParams;
|
||||||
|
|
||||||
|
const result = await fetchApi(link);
|
||||||
|
const body = await result.text();
|
||||||
|
|
||||||
|
const loadedCheerio = parseHTML(body);
|
||||||
|
|
||||||
|
if (!this.hasRequestedPage(loadedCheerio, page)) return [];
|
||||||
|
return this.parseNovelsList(loadedCheerio);
|
||||||
|
}
|
||||||
|
|
||||||
|
async parseNovel(novelPath: string): Promise<Plugin.SourceNovel> {
|
||||||
|
const result = await fetchApi(this.site + novelPath);
|
||||||
|
const body = await result.text();
|
||||||
|
|
||||||
|
const loadedCheerio = parseHTML(body);
|
||||||
|
|
||||||
|
const infoMap: Record<string, string> = {};
|
||||||
|
loadedCheerio('li, dd, p').each((i, el) => {
|
||||||
|
const text = loadedCheerio(el).text().trim();
|
||||||
|
const match = text.match(/^([A-Za-z][A-Za-z ]{2,20}):\s*(.+)$/);
|
||||||
|
if (match && !infoMap[match[1].trim()]) {
|
||||||
|
infoMap[match[1].trim()] = match[2].trim();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const ogTitle =
|
||||||
|
loadedCheerio('meta[property="og:title"]').attr('content') || '';
|
||||||
|
const name =
|
||||||
|
loadedCheerio('h1').first().text().trim() || ogTitle.split('·')[0].trim();
|
||||||
|
|
||||||
|
const cover =
|
||||||
|
loadedCheerio('meta[property="og:image"]').attr('content') ||
|
||||||
|
defaultCover;
|
||||||
|
|
||||||
|
const summary =
|
||||||
|
loadedCheerio('meta[property="og:description"]').attr('content') || '';
|
||||||
|
|
||||||
|
const genres = loadedCheerio(
|
||||||
|
'a[href*="tags%5B"], a[href*="tags["], a[href*="genres%5B"], a[href*="genres["]',
|
||||||
|
)
|
||||||
|
.map((i, el) => loadedCheerio(el).text().trim())
|
||||||
|
.toArray()
|
||||||
|
.filter(Boolean)
|
||||||
|
.join(', ');
|
||||||
|
|
||||||
|
const novel: Plugin.SourceNovel = {
|
||||||
|
path: novelPath,
|
||||||
|
name: name || 'Untitled',
|
||||||
|
cover,
|
||||||
|
summary,
|
||||||
|
author: infoMap['Author'] || '',
|
||||||
|
genres,
|
||||||
|
chapters: [],
|
||||||
|
};
|
||||||
|
|
||||||
|
const rawStatus = infoMap['Status'] || '';
|
||||||
|
if (/ongoing/i.test(rawStatus)) {
|
||||||
|
novel.status = 'Ongoing';
|
||||||
|
} else if (/completed/i.test(rawStatus)) {
|
||||||
|
novel.status = 'Completed';
|
||||||
|
} else if (rawStatus) {
|
||||||
|
novel.status = rawStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
const chapters: Plugin.ChapterItem[] = [];
|
||||||
|
loadedCheerio(
|
||||||
|
'a[href*="chapter.php?hash="], a[href*="chapter.php?ch="]',
|
||||||
|
).each((i, el) => {
|
||||||
|
const $el = loadedCheerio(el);
|
||||||
|
const path = ($el.attr('href') || '')
|
||||||
|
.trim()
|
||||||
|
.replace(this.site, '')
|
||||||
|
.replace(/^\/+/, '');
|
||||||
|
const name = $el.text().trim();
|
||||||
|
if (!path || !name) return;
|
||||||
|
chapters.push({ name, path });
|
||||||
|
});
|
||||||
|
|
||||||
|
// Chapters on the novel page are already listed oldest -> newest.
|
||||||
|
novel.chapters = chapters;
|
||||||
|
|
||||||
|
return novel;
|
||||||
|
}
|
||||||
|
|
||||||
|
async parseChapter(chapterPath: string): Promise<string> {
|
||||||
|
const result = await fetchApi(this.site + chapterPath);
|
||||||
|
const body = await result.text();
|
||||||
|
const $ = parseHTML(body);
|
||||||
|
|
||||||
|
const chapter = $('.reader').first();
|
||||||
|
|
||||||
|
if (!chapter.length) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove things that aren't part of the chapter
|
||||||
|
chapter.find('.reader-nav').remove();
|
||||||
|
chapter.find('script').remove();
|
||||||
|
chapter.find('style').remove();
|
||||||
|
|
||||||
|
return chapter.html()?.replace(/ /g, ' ') ?? '';
|
||||||
|
}
|
||||||
|
|
||||||
|
async searchNovels(
|
||||||
|
searchTerm: string,
|
||||||
|
page: number,
|
||||||
|
): Promise<Plugin.NovelItem[]> {
|
||||||
|
let link = this.site + '?q=' + encodeURIComponent(searchTerm);
|
||||||
|
|
||||||
|
if (page > 1) {
|
||||||
|
link += '&page=' + page;
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = await fetchApi(link);
|
||||||
|
const body = await result.text();
|
||||||
|
const loadedCheerio = parseHTML(body);
|
||||||
|
|
||||||
|
if (!this.hasRequestedPage(loadedCheerio, page)) return [];
|
||||||
|
return this.parseNovelsList(loadedCheerio);
|
||||||
|
}
|
||||||
|
|
||||||
|
filters = {
|
||||||
|
sort: {
|
||||||
|
label: 'Sort',
|
||||||
|
value: 'newest',
|
||||||
|
options: [
|
||||||
|
{ label: 'Newest', value: 'newest' },
|
||||||
|
{ label: 'Popular', value: 'popular' },
|
||||||
|
{ label: 'Oldest', value: 'oldest' },
|
||||||
|
{ label: 'Title A-Z', value: 'title' },
|
||||||
|
{ label: 'Year (Descending)', value: 'year_desc' },
|
||||||
|
{ label: 'Year (Ascending)', value: 'year_asc' },
|
||||||
|
],
|
||||||
|
type: FilterTypes.Picker,
|
||||||
|
},
|
||||||
|
genres_include_operator: {
|
||||||
|
label: 'Include Genres',
|
||||||
|
value: 'and',
|
||||||
|
options: [
|
||||||
|
{ label: 'AND', value: 'and' },
|
||||||
|
{ label: 'OR', value: 'or' },
|
||||||
|
],
|
||||||
|
type: FilterTypes.Picker,
|
||||||
|
},
|
||||||
|
genres: {
|
||||||
|
label: 'Genres',
|
||||||
|
value: {
|
||||||
|
include: [],
|
||||||
|
exclude: [],
|
||||||
|
},
|
||||||
|
options: [
|
||||||
|
{ label: 'Academy', value: '1' },
|
||||||
|
{ label: 'Action', value: '2' },
|
||||||
|
{ label: 'Adventure', value: '3' },
|
||||||
|
{ label: 'Fantasy', value: '4' },
|
||||||
|
{ label: 'Horror', value: '5' },
|
||||||
|
{ label: 'Mystery', value: '6' },
|
||||||
|
{ label: 'Romance', value: '7' },
|
||||||
|
{ label: 'School', value: '8' },
|
||||||
|
{ label: 'Martial', value: '9' },
|
||||||
|
{ label: 'Smut', value: '10' },
|
||||||
|
{ label: 'Adult', value: '11' },
|
||||||
|
{ label: 'Harem', value: '12' },
|
||||||
|
{ label: 'Historical', value: '13' },
|
||||||
|
{ label: 'Sci-Fi', value: '14' },
|
||||||
|
{ label: 'Slice of Life', value: '15' },
|
||||||
|
{ label: 'Sports', value: '16' },
|
||||||
|
{ label: 'Uncategorized', value: '17' },
|
||||||
|
],
|
||||||
|
type: FilterTypes.ExcludableCheckboxGroup,
|
||||||
|
},
|
||||||
|
tags_include_operator: {
|
||||||
|
label: 'Include Tags',
|
||||||
|
value: 'and',
|
||||||
|
options: [
|
||||||
|
{ label: 'AND', value: 'and' },
|
||||||
|
{ label: 'OR', value: 'or' },
|
||||||
|
],
|
||||||
|
type: FilterTypes.Picker,
|
||||||
|
},
|
||||||
|
tags_include: {
|
||||||
|
label: 'Tags Include',
|
||||||
|
value: '',
|
||||||
|
type: FilterTypes.TextInput,
|
||||||
|
},
|
||||||
|
tags_exclude: {
|
||||||
|
label: 'Tags Exclude',
|
||||||
|
value: '',
|
||||||
|
type: FilterTypes.TextInput,
|
||||||
|
},
|
||||||
|
} satisfies Filters;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default new FuckNovelpia();
|
||||||
+200
-198
@@ -53,204 +53,205 @@ import p_50 from '@plugins/english/FirstKissNovel[madara]';
|
|||||||
import p_51 from '@plugins/english/Foxaholic[madara]';
|
import p_51 from '@plugins/english/Foxaholic[madara]';
|
||||||
import p_52 from '@plugins/english/foxteller';
|
import p_52 from '@plugins/english/foxteller';
|
||||||
import p_53 from '@plugins/english/FreeWebNovel[readnovelfull]';
|
import p_53 from '@plugins/english/FreeWebNovel[readnovelfull]';
|
||||||
import p_54 from '@plugins/english/GalaxyTranslations[madara]';
|
import p_54 from '@plugins/english/fucknovelpia';
|
||||||
import p_55 from '@plugins/english/genesis';
|
import p_55 from '@plugins/english/GalaxyTranslations[madara]';
|
||||||
import p_56 from '@plugins/english/Guavaread[madara]';
|
import p_56 from '@plugins/english/genesis';
|
||||||
import p_57 from '@plugins/english/HiraethTranslation[madara]';
|
import p_57 from '@plugins/english/Guavaread[madara]';
|
||||||
import p_58 from '@plugins/english/HotNovelPub[hotnovelpub]';
|
import p_58 from '@plugins/english/HiraethTranslation[madara]';
|
||||||
import p_59 from '@plugins/english/HyacinthinBloom[lightnovelwp]';
|
import p_59 from '@plugins/english/HotNovelPub[hotnovelpub]';
|
||||||
import p_60 from '@plugins/english/indraTranslations';
|
import p_60 from '@plugins/english/HyacinthinBloom[lightnovelwp]';
|
||||||
import p_61 from '@plugins/english/inkitt';
|
import p_61 from '@plugins/english/indraTranslations';
|
||||||
import p_62 from '@plugins/english/inoveltranslation';
|
import p_62 from '@plugins/english/inkitt';
|
||||||
import p_63 from '@plugins/english/Ippotranslations[lightnovelwp]';
|
import p_63 from '@plugins/english/inoveltranslation';
|
||||||
import p_64 from '@plugins/english/KDTNovels[lightnovelwp]';
|
import p_64 from '@plugins/english/Ippotranslations[lightnovelwp]';
|
||||||
import p_65 from '@plugins/english/KeopiTranslations[lightnovelwp]';
|
import p_65 from '@plugins/english/KDTNovels[lightnovelwp]';
|
||||||
import p_66 from '@plugins/english/KnoxT[lightnovelwp]';
|
import p_66 from '@plugins/english/KeopiTranslations[lightnovelwp]';
|
||||||
import p_67 from '@plugins/english/LazyGirlTranslations[lightnovelwp]';
|
import p_67 from '@plugins/english/KnoxT[lightnovelwp]';
|
||||||
import p_68 from '@plugins/english/leafstudio';
|
import p_68 from '@plugins/english/LazyGirlTranslations[lightnovelwp]';
|
||||||
import p_69 from '@plugins/english/LibRead[readnovelfull]';
|
import p_69 from '@plugins/english/leafstudio';
|
||||||
import p_70 from '@plugins/english/LightNovelCave[lightnovelworld]';
|
import p_70 from '@plugins/english/LibRead[readnovelfull]';
|
||||||
import p_71 from '@plugins/english/LightNovelHeaven[madara]';
|
import p_71 from '@plugins/english/LightNovelCave[lightnovelworld]';
|
||||||
import p_72 from '@plugins/english/LightNovelPlus[readnovelfull]';
|
import p_72 from '@plugins/english/LightNovelHeaven[madara]';
|
||||||
import p_73 from '@plugins/english/LightNovelPubVip[lightnovelworld]';
|
import p_73 from '@plugins/english/LightNovelPlus[readnovelfull]';
|
||||||
import p_74 from '@plugins/english/lightnoveltranslation';
|
import p_74 from '@plugins/english/LightNovelPubVip[lightnovelworld]';
|
||||||
import p_75 from '@plugins/english/LightNovelUpdates[madara]';
|
import p_75 from '@plugins/english/lightnoveltranslation';
|
||||||
import p_76 from '@plugins/english/LilyontheValley[fictioneer]';
|
import p_76 from '@plugins/english/LightNovelUpdates[madara]';
|
||||||
import p_77 from '@plugins/english/lnmtl';
|
import p_77 from '@plugins/english/LilyontheValley[fictioneer]';
|
||||||
import p_78 from '@plugins/english/lnori';
|
import p_78 from '@plugins/english/lnmtl';
|
||||||
import p_79 from '@plugins/english/Ltnovel[readwn]';
|
import p_79 from '@plugins/english/lnori';
|
||||||
import p_80 from '@plugins/english/LulloBox[madara]';
|
import p_80 from '@plugins/english/Ltnovel[readwn]';
|
||||||
import p_81 from '@plugins/english/LunarLetters[madara]';
|
import p_81 from '@plugins/english/LulloBox[madara]';
|
||||||
import p_82 from '@plugins/english/Meownovel[madara]';
|
import p_82 from '@plugins/english/LunarLetters[madara]';
|
||||||
import p_83 from '@plugins/english/MoonlightNovels[lightnovelwp]';
|
import p_83 from '@plugins/english/Meownovel[madara]';
|
||||||
import p_84 from '@plugins/english/MostNovel[madara]';
|
import p_84 from '@plugins/english/MoonlightNovels[lightnovelwp]';
|
||||||
import p_85 from '@plugins/english/MTLNovel[madara]';
|
import p_85 from '@plugins/english/MostNovel[madara]';
|
||||||
import p_86 from '@plugins/english/MTLNovel[mtlnovel]';
|
import p_86 from '@plugins/english/MTLNovel[madara]';
|
||||||
import p_87 from '@plugins/english/mvlempyr';
|
import p_87 from '@plugins/english/MTLNovel[mtlnovel]';
|
||||||
import p_88 from '@plugins/english/MysticalSeries[madara]';
|
import p_88 from '@plugins/english/mvlempyr';
|
||||||
import p_89 from '@plugins/english/NeoSekaiTranslations[madara]';
|
import p_89 from '@plugins/english/MysticalSeries[madara]';
|
||||||
import p_90 from '@plugins/english/NitroManga[madara]';
|
import p_90 from '@plugins/english/NeoSekaiTranslations[madara]';
|
||||||
import p_91 from '@plugins/english/NobleMTL[lightnovelwp]';
|
import p_91 from '@plugins/english/NitroManga[madara]';
|
||||||
import p_92 from '@plugins/english/NoiceTranslations[madara]';
|
import p_92 from '@plugins/english/NobleMTL[lightnovelwp]';
|
||||||
import p_93 from '@plugins/english/novelarrow';
|
import p_93 from '@plugins/english/NoiceTranslations[madara]';
|
||||||
import p_94 from '@plugins/english/NovelBin[readnovelfull]';
|
import p_94 from '@plugins/english/novelarrow';
|
||||||
import p_95 from '@plugins/english/novelbuddy';
|
import p_95 from '@plugins/english/NovelBin[readnovelfull]';
|
||||||
import p_96 from '@plugins/english/NovelCool[novelcool]';
|
import p_96 from '@plugins/english/novelbuddy';
|
||||||
import p_97 from '@plugins/english/novelfire';
|
import p_97 from '@plugins/english/NovelCool[novelcool]';
|
||||||
import p_98 from '@plugins/english/NovelFull[readnovelfull]';
|
import p_98 from '@plugins/english/novelfire';
|
||||||
import p_99 from '@plugins/english/novelhall';
|
import p_99 from '@plugins/english/NovelFull[readnovelfull]';
|
||||||
import p_100 from '@plugins/english/novelhi';
|
import p_100 from '@plugins/english/novelhall';
|
||||||
import p_101 from '@plugins/english/novelight';
|
import p_101 from '@plugins/english/novelhi';
|
||||||
import p_102 from '@plugins/english/NovelLib[fictioneer]';
|
import p_102 from '@plugins/english/novelight';
|
||||||
import p_103 from '@plugins/english/NovelMultiverse[madara]';
|
import p_103 from '@plugins/english/NovelLib[fictioneer]';
|
||||||
import p_104 from '@plugins/english/NovelNinja[madara]';
|
import p_104 from '@plugins/english/NovelMultiverse[madara]';
|
||||||
import p_105 from '@plugins/english/NovelOnline';
|
import p_105 from '@plugins/english/NovelNinja[madara]';
|
||||||
import p_106 from '@plugins/english/novelrest';
|
import p_106 from '@plugins/english/NovelOnline';
|
||||||
import p_107 from '@plugins/english/NovelsKnight[lightnovelwp]';
|
import p_107 from '@plugins/english/novelrest';
|
||||||
import p_108 from '@plugins/english/NovelTranslate[madara]';
|
import p_108 from '@plugins/english/NovelsKnight[lightnovelwp]';
|
||||||
import p_109 from '@plugins/english/novelupdates';
|
import p_109 from '@plugins/english/NovelTranslate[madara]';
|
||||||
import p_110 from '@plugins/english/PandaMachineTranslations[lightnovelwp]';
|
import p_110 from '@plugins/english/novelupdates';
|
||||||
import p_111 from '@plugins/english/PastelTales[madara]';
|
import p_111 from '@plugins/english/PandaMachineTranslations[lightnovelwp]';
|
||||||
import p_112 from '@plugins/english/pawread';
|
import p_112 from '@plugins/english/PastelTales[madara]';
|
||||||
import p_113 from '@plugins/english/PenguinSquad[fictioneer]';
|
import p_113 from '@plugins/english/pawread';
|
||||||
import p_114 from '@plugins/english/Prizma[fictioneer]';
|
import p_114 from '@plugins/english/PenguinSquad[fictioneer]';
|
||||||
import p_115 from '@plugins/english/rainofsnow';
|
import p_115 from '@plugins/english/Prizma[fictioneer]';
|
||||||
import p_116 from '@plugins/english/Ranobes[ranobes]';
|
import p_116 from '@plugins/english/rainofsnow';
|
||||||
import p_117 from '@plugins/english/Ranovel[madara]';
|
import p_117 from '@plugins/english/Ranobes[ranobes]';
|
||||||
import p_118 from '@plugins/english/ReadFanfic[madara]';
|
import p_118 from '@plugins/english/Ranovel[madara]';
|
||||||
import p_119 from '@plugins/english/readfrom';
|
import p_119 from '@plugins/english/ReadFanfic[madara]';
|
||||||
import p_120 from '@plugins/english/ReadNovelFull[readnovelfull]';
|
import p_120 from '@plugins/english/readfrom';
|
||||||
import p_121 from '@plugins/english/relibrary';
|
import p_121 from '@plugins/english/ReadNovelFull[readnovelfull]';
|
||||||
import p_122 from '@plugins/english/RequiemTranslations[lightnovelwp]';
|
import p_122 from '@plugins/english/relibrary';
|
||||||
import p_123 from '@plugins/english/royalroad';
|
import p_123 from '@plugins/english/RequiemTranslations[lightnovelwp]';
|
||||||
import p_124 from '@plugins/english/SalmonLatte[madara]';
|
import p_124 from '@plugins/english/royalroad';
|
||||||
import p_125 from '@plugins/english/scribblehub';
|
import p_125 from '@plugins/english/SalmonLatte[madara]';
|
||||||
import p_126 from '@plugins/english/SleepyTranslations[madara]';
|
import p_126 from '@plugins/english/scribblehub';
|
||||||
import p_127 from '@plugins/english/SonicMTL[madara]';
|
import p_127 from '@plugins/english/SleepyTranslations[madara]';
|
||||||
import p_128 from '@plugins/english/SrankManga[madara]';
|
import p_128 from '@plugins/english/SonicMTL[madara]';
|
||||||
import p_129 from '@plugins/english/StorySeedling';
|
import p_129 from '@plugins/english/SrankManga[madara]';
|
||||||
import p_130 from '@plugins/english/SweetEscape[madara]';
|
import p_130 from '@plugins/english/StorySeedling';
|
||||||
import p_131 from '@plugins/english/SystemTranslation[lightnovelwp]';
|
import p_131 from '@plugins/english/SweetEscape[madara]';
|
||||||
import p_132 from '@plugins/english/TranslatinOtaku[madara]';
|
import p_132 from '@plugins/english/SystemTranslation[lightnovelwp]';
|
||||||
import p_133 from '@plugins/english/TranslationWeaver[lightnovelwp]';
|
import p_133 from '@plugins/english/TranslatinOtaku[madara]';
|
||||||
import p_134 from '@plugins/english/UniversalNovel[lightnovelwp]';
|
import p_134 from '@plugins/english/TranslationWeaver[lightnovelwp]';
|
||||||
import p_135 from '@plugins/english/VandyTranslate[lightnovelwp]';
|
import p_135 from '@plugins/english/UniversalNovel[lightnovelwp]';
|
||||||
import p_136 from '@plugins/english/VioletLily[madara]';
|
import p_136 from '@plugins/english/VandyTranslate[lightnovelwp]';
|
||||||
import p_137 from '@plugins/english/vynovel';
|
import p_137 from '@plugins/english/VioletLily[madara]';
|
||||||
import p_138 from '@plugins/english/wct';
|
import p_138 from '@plugins/english/vynovel';
|
||||||
import p_139 from '@plugins/english/webnovel';
|
import p_139 from '@plugins/english/wct';
|
||||||
import p_140 from '@plugins/english/WebNovelLover[madara]';
|
import p_140 from '@plugins/english/webnovel';
|
||||||
import p_141 from '@plugins/english/WebNovelPub[lightnovelworld]';
|
import p_141 from '@plugins/english/WebNovelLover[madara]';
|
||||||
import p_142 from '@plugins/english/WebNovelTranslation[madara]';
|
import p_142 from '@plugins/english/WebNovelPub[lightnovelworld]';
|
||||||
import p_143 from '@plugins/english/WhiteMoonlightNovels[lightnovelwp]';
|
import p_143 from '@plugins/english/WebNovelTranslation[madara]';
|
||||||
import p_144 from '@plugins/english/WooksTeahouse[madara]';
|
import p_144 from '@plugins/english/WhiteMoonlightNovels[lightnovelwp]';
|
||||||
import p_145 from '@plugins/english/WordExcerpt[madara]';
|
import p_145 from '@plugins/english/WooksTeahouse[madara]';
|
||||||
import p_146 from '@plugins/english/wtrlab';
|
import p_146 from '@plugins/english/WordExcerpt[madara]';
|
||||||
import p_147 from '@plugins/english/Wuxiabox[readwn]';
|
import p_147 from '@plugins/english/wtrlab';
|
||||||
import p_148 from '@plugins/english/Wuxiafox[readwn]';
|
import p_148 from '@plugins/english/Wuxiabox[readwn]';
|
||||||
import p_149 from '@plugins/english/WuxiaSpace[readwn]';
|
import p_149 from '@plugins/english/Wuxiafox[readwn]';
|
||||||
import p_150 from '@plugins/english/WuxiaV[readwn]';
|
import p_150 from '@plugins/english/WuxiaSpace[readwn]';
|
||||||
import p_151 from '@plugins/english/wuxiaworld';
|
import p_151 from '@plugins/english/WuxiaV[readwn]';
|
||||||
import p_152 from '@plugins/english/WuxiaWorldSite[madara]';
|
import p_152 from '@plugins/english/wuxiaworld';
|
||||||
import p_153 from '@plugins/english/ZetroTranslation[madara]';
|
import p_153 from '@plugins/english/WuxiaWorldSite[madara]';
|
||||||
import p_154 from '@plugins/french/chireads';
|
import p_154 from '@plugins/english/ZetroTranslation[madara]';
|
||||||
import p_155 from '@plugins/french/harkeneliwood';
|
import p_155 from '@plugins/french/chireads';
|
||||||
import p_156 from '@plugins/french/kisswood';
|
import p_156 from '@plugins/french/harkeneliwood';
|
||||||
import p_157 from '@plugins/french/LighNovelFR[lightnovelwp]';
|
import p_157 from '@plugins/french/kisswood';
|
||||||
import p_158 from '@plugins/french/MassNovel[madara]';
|
import p_158 from '@plugins/french/LighNovelFR[lightnovelwp]';
|
||||||
import p_159 from '@plugins/french/MTLNovel(FR)[mtlnovel]';
|
import p_159 from '@plugins/french/MassNovel[madara]';
|
||||||
import p_160 from '@plugins/french/noveldeglace';
|
import p_160 from '@plugins/french/MTLNovel(FR)[mtlnovel]';
|
||||||
import p_161 from '@plugins/french/novelfrance';
|
import p_161 from '@plugins/french/noveldeglace';
|
||||||
import p_162 from '@plugins/french/novhell';
|
import p_162 from '@plugins/french/novelfrance';
|
||||||
import p_163 from '@plugins/french/rezerowebnovelfr';
|
import p_163 from '@plugins/french/novhell';
|
||||||
import p_164 from '@plugins/french/warriorlegendtrad';
|
import p_164 from '@plugins/french/rezerowebnovelfr';
|
||||||
import p_165 from '@plugins/french/WorldNovel[madara]';
|
import p_165 from '@plugins/french/warriorlegendtrad';
|
||||||
import p_166 from '@plugins/french/wuxialnscantrad';
|
import p_166 from '@plugins/french/WorldNovel[madara]';
|
||||||
import p_167 from '@plugins/french/xiaowaz';
|
import p_167 from '@plugins/french/wuxialnscantrad';
|
||||||
import p_168 from '@plugins/indonesian/BacaLightNovel[lightnovelwp]';
|
import p_168 from '@plugins/french/xiaowaz';
|
||||||
import p_169 from '@plugins/indonesian/indowebnovel';
|
import p_169 from '@plugins/indonesian/BacaLightNovel[lightnovelwp]';
|
||||||
import p_170 from '@plugins/indonesian/MeioNovel[madara]';
|
import p_170 from '@plugins/indonesian/indowebnovel';
|
||||||
import p_171 from '@plugins/indonesian/MTLNovel(ID)[mtlnovel]';
|
import p_171 from '@plugins/indonesian/MeioNovel[madara]';
|
||||||
import p_172 from '@plugins/indonesian/NovelBookID[madara]';
|
import p_172 from '@plugins/indonesian/MTLNovel(ID)[mtlnovel]';
|
||||||
import p_173 from '@plugins/indonesian/sakuranovel';
|
import p_173 from '@plugins/indonesian/NovelBookID[madara]';
|
||||||
import p_174 from '@plugins/indonesian/SekteNovel[lightnovelwp]';
|
import p_174 from '@plugins/indonesian/sakuranovel';
|
||||||
import p_175 from '@plugins/indonesian/Vanovel[madara]';
|
import p_175 from '@plugins/indonesian/SekteNovel[lightnovelwp]';
|
||||||
import p_176 from '@plugins/indonesian/WBNovel[madara]';
|
import p_176 from '@plugins/indonesian/Vanovel[madara]';
|
||||||
import p_177 from '@plugins/japanese/kakuyomu';
|
import p_177 from '@plugins/indonesian/WBNovel[madara]';
|
||||||
import p_178 from '@plugins/japanese/Syosetu';
|
import p_178 from '@plugins/japanese/kakuyomu';
|
||||||
import p_179 from '@plugins/korean/Agitoon';
|
import p_179 from '@plugins/japanese/Syosetu';
|
||||||
import p_180 from '@plugins/korean/FortuneEternal[madara]';
|
import p_180 from '@plugins/korean/Agitoon';
|
||||||
import p_181 from '@plugins/multi/komga';
|
import p_181 from '@plugins/korean/FortuneEternal[madara]';
|
||||||
import p_182 from '@plugins/polish/novelki';
|
import p_182 from '@plugins/multi/komga';
|
||||||
import p_183 from '@plugins/portuguese/BetterNovels[lightnovelwp]';
|
import p_183 from '@plugins/polish/novelki';
|
||||||
import p_184 from '@plugins/portuguese/blogdoamonnovels';
|
import p_184 from '@plugins/portuguese/BetterNovels[lightnovelwp]';
|
||||||
import p_185 from '@plugins/portuguese/CentralNovel[lightnovelwp]';
|
import p_185 from '@plugins/portuguese/blogdoamonnovels';
|
||||||
import p_186 from '@plugins/portuguese/illusia';
|
import p_186 from '@plugins/portuguese/CentralNovel[lightnovelwp]';
|
||||||
import p_187 from '@plugins/portuguese/Kiniga[madara]';
|
import p_187 from '@plugins/portuguese/illusia';
|
||||||
import p_188 from '@plugins/portuguese/LaNovels[hotnovelpub]';
|
import p_188 from '@plugins/portuguese/Kiniga[madara]';
|
||||||
import p_189 from '@plugins/portuguese/LightNovelBrasil[lightnovelwp]';
|
import p_189 from '@plugins/portuguese/LaNovels[hotnovelpub]';
|
||||||
import p_190 from '@plugins/portuguese/MTLNovel(PT)[mtlnovel]';
|
import p_190 from '@plugins/portuguese/LightNovelBrasil[lightnovelwp]';
|
||||||
import p_191 from '@plugins/portuguese/novelmania';
|
import p_191 from '@plugins/portuguese/MTLNovel(PT)[mtlnovel]';
|
||||||
import p_192 from '@plugins/portuguese/tsundoku';
|
import p_192 from '@plugins/portuguese/novelmania';
|
||||||
import p_193 from '@plugins/russian/authortoday';
|
import p_193 from '@plugins/portuguese/tsundoku';
|
||||||
import p_194 from '@plugins/russian/Bllate[rulate]';
|
import p_194 from '@plugins/russian/authortoday';
|
||||||
import p_195 from '@plugins/russian/Bookhamster[ifreedom]';
|
import p_195 from '@plugins/russian/Bllate[rulate]';
|
||||||
import p_196 from '@plugins/russian/bookriver';
|
import p_196 from '@plugins/russian/Bookhamster[ifreedom]';
|
||||||
import p_197 from '@plugins/russian/Erolate[rulate]';
|
import p_197 from '@plugins/russian/bookriver';
|
||||||
import p_198 from '@plugins/russian/EzNovels[hotnovelpub]';
|
import p_198 from '@plugins/russian/Erolate[rulate]';
|
||||||
import p_199 from '@plugins/russian/ficbook';
|
import p_199 from '@plugins/russian/EzNovels[hotnovelpub]';
|
||||||
import p_200 from '@plugins/russian/jaomix';
|
import p_200 from '@plugins/russian/ficbook';
|
||||||
import p_201 from '@plugins/russian/MTLNovel(RU)[mtlnovel]';
|
import p_201 from '@plugins/russian/jaomix';
|
||||||
import p_202 from '@plugins/russian/neobook';
|
import p_202 from '@plugins/russian/MTLNovel(RU)[mtlnovel]';
|
||||||
import p_203 from '@plugins/russian/NovelCool(RU)[novelcool]';
|
import p_203 from '@plugins/russian/neobook';
|
||||||
import p_204 from '@plugins/russian/novelTL';
|
import p_204 from '@plugins/russian/NovelCool(RU)[novelcool]';
|
||||||
import p_205 from '@plugins/russian/ranobehub';
|
import p_205 from '@plugins/russian/novelTL';
|
||||||
import p_206 from '@plugins/russian/ranobelib';
|
import p_206 from '@plugins/russian/ranobehub';
|
||||||
import p_207 from '@plugins/russian/ranoberf';
|
import p_207 from '@plugins/russian/ranobelib';
|
||||||
import p_208 from '@plugins/russian/Ranobes(RU)[ranobes]';
|
import p_208 from '@plugins/russian/ranoberf';
|
||||||
import p_209 from '@plugins/russian/renovels';
|
import p_209 from '@plugins/russian/Ranobes(RU)[ranobes]';
|
||||||
import p_210 from '@plugins/russian/Rulate[rulate]';
|
import p_210 from '@plugins/russian/renovels';
|
||||||
import p_211 from '@plugins/russian/topliba';
|
import p_211 from '@plugins/russian/Rulate[rulate]';
|
||||||
import p_212 from '@plugins/russian/zelluloza';
|
import p_212 from '@plugins/russian/topliba';
|
||||||
import p_213 from '@plugins/russian/СвободныйМирРанобэ[ifreedom]';
|
import p_213 from '@plugins/russian/zelluloza';
|
||||||
import p_214 from '@plugins/spanish/AllNovelRead[lightnovelwp]';
|
import p_214 from '@plugins/russian/СвободныйМирРанобэ[ifreedom]';
|
||||||
import p_215 from '@plugins/spanish/AnimesHoy12[madara]';
|
import p_215 from '@plugins/spanish/AllNovelRead[lightnovelwp]';
|
||||||
import p_216 from '@plugins/spanish/hasutl';
|
import p_216 from '@plugins/spanish/AnimesHoy12[madara]';
|
||||||
import p_217 from '@plugins/spanish/LightNovelDaily[hotnovelpub]';
|
import p_217 from '@plugins/spanish/hasutl';
|
||||||
import p_218 from '@plugins/spanish/MTLNovel(ES)[mtlnovel]';
|
import p_218 from '@plugins/spanish/LightNovelDaily[hotnovelpub]';
|
||||||
import p_219 from '@plugins/spanish/NOVA';
|
import p_219 from '@plugins/spanish/MTLNovel(ES)[mtlnovel]';
|
||||||
import p_220 from '@plugins/spanish/novelasligera';
|
import p_220 from '@plugins/spanish/NOVA';
|
||||||
import p_221 from '@plugins/spanish/novelawuxia';
|
import p_221 from '@plugins/spanish/novelasligera';
|
||||||
import p_222 from '@plugins/spanish/novelyra';
|
import p_222 from '@plugins/spanish/novelawuxia';
|
||||||
import p_223 from '@plugins/spanish/oasistranslations';
|
import p_223 from '@plugins/spanish/novelyra';
|
||||||
import p_224 from '@plugins/spanish/PanchoTranslations[madara]';
|
import p_224 from '@plugins/spanish/oasistranslations';
|
||||||
import p_225 from '@plugins/spanish/skynovels';
|
import p_225 from '@plugins/spanish/PanchoTranslations[madara]';
|
||||||
import p_226 from '@plugins/spanish/TC&Sega[lightnovelwp]';
|
import p_226 from '@plugins/spanish/skynovels';
|
||||||
import p_227 from '@plugins/spanish/TraduccionesAmistosas[madara]';
|
import p_227 from '@plugins/spanish/TC&Sega[lightnovelwp]';
|
||||||
import p_228 from '@plugins/spanish/tunovelaligera';
|
import p_228 from '@plugins/spanish/TraduccionesAmistosas[madara]';
|
||||||
import p_229 from '@plugins/spanish/yukitls';
|
import p_229 from '@plugins/spanish/tunovelaligera';
|
||||||
import p_230 from '@plugins/thai/NovelLucky[madara]';
|
import p_230 from '@plugins/spanish/yukitls';
|
||||||
import p_231 from '@plugins/thai/NovelPDF[madara]';
|
import p_231 from '@plugins/thai/NovelLucky[madara]';
|
||||||
import p_232 from '@plugins/turkish/ArazNovel[madara]';
|
import p_232 from '@plugins/thai/NovelPDF[madara]';
|
||||||
import p_233 from '@plugins/turkish/EKTAPLAR[madara]';
|
import p_233 from '@plugins/turkish/ArazNovel[madara]';
|
||||||
import p_234 from '@plugins/turkish/epiknovel';
|
import p_234 from '@plugins/turkish/EKTAPLAR[madara]';
|
||||||
import p_235 from '@plugins/turkish/kakikata[madara]';
|
import p_235 from '@plugins/turkish/epiknovel';
|
||||||
import p_236 from '@plugins/turkish/KodeksLibrary[lightnovelwp]';
|
import p_236 from '@plugins/turkish/kakikata[madara]';
|
||||||
import p_237 from '@plugins/turkish/MangaTR';
|
import p_237 from '@plugins/turkish/KodeksLibrary[lightnovelwp]';
|
||||||
import p_238 from '@plugins/turkish/NABSCANS[madara]';
|
import p_238 from '@plugins/turkish/MangaTR';
|
||||||
import p_239 from '@plugins/turkish/Namevt[lightnovelwp]';
|
import p_239 from '@plugins/turkish/NABSCANS[madara]';
|
||||||
import p_240 from '@plugins/turkish/Noveloku[madara]';
|
import p_240 from '@plugins/turkish/Namevt[lightnovelwp]';
|
||||||
import p_241 from '@plugins/turkish/NovelTR[lightnovelwp]';
|
import p_241 from '@plugins/turkish/Noveloku[madara]';
|
||||||
import p_242 from '@plugins/turkish/RagnarScans[madara]';
|
import p_242 from '@plugins/turkish/NovelTR[lightnovelwp]';
|
||||||
import p_243 from '@plugins/turkish/ThNovels[hotnovelpub]';
|
import p_243 from '@plugins/turkish/RagnarScans[madara]';
|
||||||
import p_244 from '@plugins/turkish/TurkceLightNovels[madara]';
|
import p_244 from '@plugins/turkish/ThNovels[hotnovelpub]';
|
||||||
import p_245 from '@plugins/turkish/WebNovelOku[madara]';
|
import p_245 from '@plugins/turkish/TurkceLightNovels[madara]';
|
||||||
import p_246 from '@plugins/ukrainian/bakainua';
|
import p_246 from '@plugins/turkish/WebNovelOku[madara]';
|
||||||
import p_247 from '@plugins/ukrainian/smakolykytl';
|
import p_247 from '@plugins/ukrainian/bakainua';
|
||||||
import p_248 from '@plugins/vietnamese/lightnovelvn';
|
import p_248 from '@plugins/ukrainian/smakolykytl';
|
||||||
import p_249 from '@plugins/vietnamese/LNHako';
|
import p_249 from '@plugins/vietnamese/lightnovelvn';
|
||||||
import p_250 from '@plugins/vietnamese/nettruyen';
|
import p_250 from '@plugins/vietnamese/LNHako';
|
||||||
import p_251 from '@plugins/vietnamese/truyenss';
|
import p_251 from '@plugins/vietnamese/nettruyen';
|
||||||
|
import p_252 from '@plugins/vietnamese/truyenss';
|
||||||
|
|
||||||
const PLUGINS: Plugin.PluginBase[] = [
|
const PLUGINS: Plugin.PluginBase[] = [
|
||||||
p_0,
|
p_0,
|
||||||
@@ -505,5 +506,6 @@ const PLUGINS: Plugin.PluginBase[] = [
|
|||||||
p_249,
|
p_249,
|
||||||
p_250,
|
p_250,
|
||||||
p_251,
|
p_251,
|
||||||
|
p_252,
|
||||||
];
|
];
|
||||||
export default PLUGINS;
|
export default PLUGINS;
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
Reference in New Issue
Block a user