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:
isrealhamumu-star
2026-07-12 01:44:23 +07:00
committed by GitHub
parent cf37cb6464
commit c4545b0780
3 changed files with 502 additions and 198 deletions
+302
View File
@@ -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(/&nbsp;/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
View File
@@ -53,204 +53,205 @@ import p_50 from '@plugins/english/FirstKissNovel[madara]';
import p_51 from '@plugins/english/Foxaholic[madara]';
import p_52 from '@plugins/english/foxteller';
import p_53 from '@plugins/english/FreeWebNovel[readnovelfull]';
import p_54 from '@plugins/english/GalaxyTranslations[madara]';
import p_55 from '@plugins/english/genesis';
import p_56 from '@plugins/english/Guavaread[madara]';
import p_57 from '@plugins/english/HiraethTranslation[madara]';
import p_58 from '@plugins/english/HotNovelPub[hotnovelpub]';
import p_59 from '@plugins/english/HyacinthinBloom[lightnovelwp]';
import p_60 from '@plugins/english/indraTranslations';
import p_61 from '@plugins/english/inkitt';
import p_62 from '@plugins/english/inoveltranslation';
import p_63 from '@plugins/english/Ippotranslations[lightnovelwp]';
import p_64 from '@plugins/english/KDTNovels[lightnovelwp]';
import p_65 from '@plugins/english/KeopiTranslations[lightnovelwp]';
import p_66 from '@plugins/english/KnoxT[lightnovelwp]';
import p_67 from '@plugins/english/LazyGirlTranslations[lightnovelwp]';
import p_68 from '@plugins/english/leafstudio';
import p_69 from '@plugins/english/LibRead[readnovelfull]';
import p_70 from '@plugins/english/LightNovelCave[lightnovelworld]';
import p_71 from '@plugins/english/LightNovelHeaven[madara]';
import p_72 from '@plugins/english/LightNovelPlus[readnovelfull]';
import p_73 from '@plugins/english/LightNovelPubVip[lightnovelworld]';
import p_74 from '@plugins/english/lightnoveltranslation';
import p_75 from '@plugins/english/LightNovelUpdates[madara]';
import p_76 from '@plugins/english/LilyontheValley[fictioneer]';
import p_77 from '@plugins/english/lnmtl';
import p_78 from '@plugins/english/lnori';
import p_79 from '@plugins/english/Ltnovel[readwn]';
import p_80 from '@plugins/english/LulloBox[madara]';
import p_81 from '@plugins/english/LunarLetters[madara]';
import p_82 from '@plugins/english/Meownovel[madara]';
import p_83 from '@plugins/english/MoonlightNovels[lightnovelwp]';
import p_84 from '@plugins/english/MostNovel[madara]';
import p_85 from '@plugins/english/MTLNovel[madara]';
import p_86 from '@plugins/english/MTLNovel[mtlnovel]';
import p_87 from '@plugins/english/mvlempyr';
import p_88 from '@plugins/english/MysticalSeries[madara]';
import p_89 from '@plugins/english/NeoSekaiTranslations[madara]';
import p_90 from '@plugins/english/NitroManga[madara]';
import p_91 from '@plugins/english/NobleMTL[lightnovelwp]';
import p_92 from '@plugins/english/NoiceTranslations[madara]';
import p_93 from '@plugins/english/novelarrow';
import p_94 from '@plugins/english/NovelBin[readnovelfull]';
import p_95 from '@plugins/english/novelbuddy';
import p_96 from '@plugins/english/NovelCool[novelcool]';
import p_97 from '@plugins/english/novelfire';
import p_98 from '@plugins/english/NovelFull[readnovelfull]';
import p_99 from '@plugins/english/novelhall';
import p_100 from '@plugins/english/novelhi';
import p_101 from '@plugins/english/novelight';
import p_102 from '@plugins/english/NovelLib[fictioneer]';
import p_103 from '@plugins/english/NovelMultiverse[madara]';
import p_104 from '@plugins/english/NovelNinja[madara]';
import p_105 from '@plugins/english/NovelOnline';
import p_106 from '@plugins/english/novelrest';
import p_107 from '@plugins/english/NovelsKnight[lightnovelwp]';
import p_108 from '@plugins/english/NovelTranslate[madara]';
import p_109 from '@plugins/english/novelupdates';
import p_110 from '@plugins/english/PandaMachineTranslations[lightnovelwp]';
import p_111 from '@plugins/english/PastelTales[madara]';
import p_112 from '@plugins/english/pawread';
import p_113 from '@plugins/english/PenguinSquad[fictioneer]';
import p_114 from '@plugins/english/Prizma[fictioneer]';
import p_115 from '@plugins/english/rainofsnow';
import p_116 from '@plugins/english/Ranobes[ranobes]';
import p_117 from '@plugins/english/Ranovel[madara]';
import p_118 from '@plugins/english/ReadFanfic[madara]';
import p_119 from '@plugins/english/readfrom';
import p_120 from '@plugins/english/ReadNovelFull[readnovelfull]';
import p_121 from '@plugins/english/relibrary';
import p_122 from '@plugins/english/RequiemTranslations[lightnovelwp]';
import p_123 from '@plugins/english/royalroad';
import p_124 from '@plugins/english/SalmonLatte[madara]';
import p_125 from '@plugins/english/scribblehub';
import p_126 from '@plugins/english/SleepyTranslations[madara]';
import p_127 from '@plugins/english/SonicMTL[madara]';
import p_128 from '@plugins/english/SrankManga[madara]';
import p_129 from '@plugins/english/StorySeedling';
import p_130 from '@plugins/english/SweetEscape[madara]';
import p_131 from '@plugins/english/SystemTranslation[lightnovelwp]';
import p_132 from '@plugins/english/TranslatinOtaku[madara]';
import p_133 from '@plugins/english/TranslationWeaver[lightnovelwp]';
import p_134 from '@plugins/english/UniversalNovel[lightnovelwp]';
import p_135 from '@plugins/english/VandyTranslate[lightnovelwp]';
import p_136 from '@plugins/english/VioletLily[madara]';
import p_137 from '@plugins/english/vynovel';
import p_138 from '@plugins/english/wct';
import p_139 from '@plugins/english/webnovel';
import p_140 from '@plugins/english/WebNovelLover[madara]';
import p_141 from '@plugins/english/WebNovelPub[lightnovelworld]';
import p_142 from '@plugins/english/WebNovelTranslation[madara]';
import p_143 from '@plugins/english/WhiteMoonlightNovels[lightnovelwp]';
import p_144 from '@plugins/english/WooksTeahouse[madara]';
import p_145 from '@plugins/english/WordExcerpt[madara]';
import p_146 from '@plugins/english/wtrlab';
import p_147 from '@plugins/english/Wuxiabox[readwn]';
import p_148 from '@plugins/english/Wuxiafox[readwn]';
import p_149 from '@plugins/english/WuxiaSpace[readwn]';
import p_150 from '@plugins/english/WuxiaV[readwn]';
import p_151 from '@plugins/english/wuxiaworld';
import p_152 from '@plugins/english/WuxiaWorldSite[madara]';
import p_153 from '@plugins/english/ZetroTranslation[madara]';
import p_154 from '@plugins/french/chireads';
import p_155 from '@plugins/french/harkeneliwood';
import p_156 from '@plugins/french/kisswood';
import p_157 from '@plugins/french/LighNovelFR[lightnovelwp]';
import p_158 from '@plugins/french/MassNovel[madara]';
import p_159 from '@plugins/french/MTLNovel(FR)[mtlnovel]';
import p_160 from '@plugins/french/noveldeglace';
import p_161 from '@plugins/french/novelfrance';
import p_162 from '@plugins/french/novhell';
import p_163 from '@plugins/french/rezerowebnovelfr';
import p_164 from '@plugins/french/warriorlegendtrad';
import p_165 from '@plugins/french/WorldNovel[madara]';
import p_166 from '@plugins/french/wuxialnscantrad';
import p_167 from '@plugins/french/xiaowaz';
import p_168 from '@plugins/indonesian/BacaLightNovel[lightnovelwp]';
import p_169 from '@plugins/indonesian/indowebnovel';
import p_170 from '@plugins/indonesian/MeioNovel[madara]';
import p_171 from '@plugins/indonesian/MTLNovel(ID)[mtlnovel]';
import p_172 from '@plugins/indonesian/NovelBookID[madara]';
import p_173 from '@plugins/indonesian/sakuranovel';
import p_174 from '@plugins/indonesian/SekteNovel[lightnovelwp]';
import p_175 from '@plugins/indonesian/Vanovel[madara]';
import p_176 from '@plugins/indonesian/WBNovel[madara]';
import p_177 from '@plugins/japanese/kakuyomu';
import p_178 from '@plugins/japanese/Syosetu';
import p_179 from '@plugins/korean/Agitoon';
import p_180 from '@plugins/korean/FortuneEternal[madara]';
import p_181 from '@plugins/multi/komga';
import p_182 from '@plugins/polish/novelki';
import p_183 from '@plugins/portuguese/BetterNovels[lightnovelwp]';
import p_184 from '@plugins/portuguese/blogdoamonnovels';
import p_185 from '@plugins/portuguese/CentralNovel[lightnovelwp]';
import p_186 from '@plugins/portuguese/illusia';
import p_187 from '@plugins/portuguese/Kiniga[madara]';
import p_188 from '@plugins/portuguese/LaNovels[hotnovelpub]';
import p_189 from '@plugins/portuguese/LightNovelBrasil[lightnovelwp]';
import p_190 from '@plugins/portuguese/MTLNovel(PT)[mtlnovel]';
import p_191 from '@plugins/portuguese/novelmania';
import p_192 from '@plugins/portuguese/tsundoku';
import p_193 from '@plugins/russian/authortoday';
import p_194 from '@plugins/russian/Bllate[rulate]';
import p_195 from '@plugins/russian/Bookhamster[ifreedom]';
import p_196 from '@plugins/russian/bookriver';
import p_197 from '@plugins/russian/Erolate[rulate]';
import p_198 from '@plugins/russian/EzNovels[hotnovelpub]';
import p_199 from '@plugins/russian/ficbook';
import p_200 from '@plugins/russian/jaomix';
import p_201 from '@plugins/russian/MTLNovel(RU)[mtlnovel]';
import p_202 from '@plugins/russian/neobook';
import p_203 from '@plugins/russian/NovelCool(RU)[novelcool]';
import p_204 from '@plugins/russian/novelTL';
import p_205 from '@plugins/russian/ranobehub';
import p_206 from '@plugins/russian/ranobelib';
import p_207 from '@plugins/russian/ranoberf';
import p_208 from '@plugins/russian/Ranobes(RU)[ranobes]';
import p_209 from '@plugins/russian/renovels';
import p_210 from '@plugins/russian/Rulate[rulate]';
import p_211 from '@plugins/russian/topliba';
import p_212 from '@plugins/russian/zelluloza';
import p_213 from '@plugins/russian/СвободныйМирРанобэ[ifreedom]';
import p_214 from '@plugins/spanish/AllNovelRead[lightnovelwp]';
import p_215 from '@plugins/spanish/AnimesHoy12[madara]';
import p_216 from '@plugins/spanish/hasutl';
import p_217 from '@plugins/spanish/LightNovelDaily[hotnovelpub]';
import p_218 from '@plugins/spanish/MTLNovel(ES)[mtlnovel]';
import p_219 from '@plugins/spanish/NOVA';
import p_220 from '@plugins/spanish/novelasligera';
import p_221 from '@plugins/spanish/novelawuxia';
import p_222 from '@plugins/spanish/novelyra';
import p_223 from '@plugins/spanish/oasistranslations';
import p_224 from '@plugins/spanish/PanchoTranslations[madara]';
import p_225 from '@plugins/spanish/skynovels';
import p_226 from '@plugins/spanish/TC&Sega[lightnovelwp]';
import p_227 from '@plugins/spanish/TraduccionesAmistosas[madara]';
import p_228 from '@plugins/spanish/tunovelaligera';
import p_229 from '@plugins/spanish/yukitls';
import p_230 from '@plugins/thai/NovelLucky[madara]';
import p_231 from '@plugins/thai/NovelPDF[madara]';
import p_232 from '@plugins/turkish/ArazNovel[madara]';
import p_233 from '@plugins/turkish/EKTAPLAR[madara]';
import p_234 from '@plugins/turkish/epiknovel';
import p_235 from '@plugins/turkish/kakikata[madara]';
import p_236 from '@plugins/turkish/KodeksLibrary[lightnovelwp]';
import p_237 from '@plugins/turkish/MangaTR';
import p_238 from '@plugins/turkish/NABSCANS[madara]';
import p_239 from '@plugins/turkish/Namevt[lightnovelwp]';
import p_240 from '@plugins/turkish/Noveloku[madara]';
import p_241 from '@plugins/turkish/NovelTR[lightnovelwp]';
import p_242 from '@plugins/turkish/RagnarScans[madara]';
import p_243 from '@plugins/turkish/ThNovels[hotnovelpub]';
import p_244 from '@plugins/turkish/TurkceLightNovels[madara]';
import p_245 from '@plugins/turkish/WebNovelOku[madara]';
import p_246 from '@plugins/ukrainian/bakainua';
import p_247 from '@plugins/ukrainian/smakolykytl';
import p_248 from '@plugins/vietnamese/lightnovelvn';
import p_249 from '@plugins/vietnamese/LNHako';
import p_250 from '@plugins/vietnamese/nettruyen';
import p_251 from '@plugins/vietnamese/truyenss';
import p_54 from '@plugins/english/fucknovelpia';
import p_55 from '@plugins/english/GalaxyTranslations[madara]';
import p_56 from '@plugins/english/genesis';
import p_57 from '@plugins/english/Guavaread[madara]';
import p_58 from '@plugins/english/HiraethTranslation[madara]';
import p_59 from '@plugins/english/HotNovelPub[hotnovelpub]';
import p_60 from '@plugins/english/HyacinthinBloom[lightnovelwp]';
import p_61 from '@plugins/english/indraTranslations';
import p_62 from '@plugins/english/inkitt';
import p_63 from '@plugins/english/inoveltranslation';
import p_64 from '@plugins/english/Ippotranslations[lightnovelwp]';
import p_65 from '@plugins/english/KDTNovels[lightnovelwp]';
import p_66 from '@plugins/english/KeopiTranslations[lightnovelwp]';
import p_67 from '@plugins/english/KnoxT[lightnovelwp]';
import p_68 from '@plugins/english/LazyGirlTranslations[lightnovelwp]';
import p_69 from '@plugins/english/leafstudio';
import p_70 from '@plugins/english/LibRead[readnovelfull]';
import p_71 from '@plugins/english/LightNovelCave[lightnovelworld]';
import p_72 from '@plugins/english/LightNovelHeaven[madara]';
import p_73 from '@plugins/english/LightNovelPlus[readnovelfull]';
import p_74 from '@plugins/english/LightNovelPubVip[lightnovelworld]';
import p_75 from '@plugins/english/lightnoveltranslation';
import p_76 from '@plugins/english/LightNovelUpdates[madara]';
import p_77 from '@plugins/english/LilyontheValley[fictioneer]';
import p_78 from '@plugins/english/lnmtl';
import p_79 from '@plugins/english/lnori';
import p_80 from '@plugins/english/Ltnovel[readwn]';
import p_81 from '@plugins/english/LulloBox[madara]';
import p_82 from '@plugins/english/LunarLetters[madara]';
import p_83 from '@plugins/english/Meownovel[madara]';
import p_84 from '@plugins/english/MoonlightNovels[lightnovelwp]';
import p_85 from '@plugins/english/MostNovel[madara]';
import p_86 from '@plugins/english/MTLNovel[madara]';
import p_87 from '@plugins/english/MTLNovel[mtlnovel]';
import p_88 from '@plugins/english/mvlempyr';
import p_89 from '@plugins/english/MysticalSeries[madara]';
import p_90 from '@plugins/english/NeoSekaiTranslations[madara]';
import p_91 from '@plugins/english/NitroManga[madara]';
import p_92 from '@plugins/english/NobleMTL[lightnovelwp]';
import p_93 from '@plugins/english/NoiceTranslations[madara]';
import p_94 from '@plugins/english/novelarrow';
import p_95 from '@plugins/english/NovelBin[readnovelfull]';
import p_96 from '@plugins/english/novelbuddy';
import p_97 from '@plugins/english/NovelCool[novelcool]';
import p_98 from '@plugins/english/novelfire';
import p_99 from '@plugins/english/NovelFull[readnovelfull]';
import p_100 from '@plugins/english/novelhall';
import p_101 from '@plugins/english/novelhi';
import p_102 from '@plugins/english/novelight';
import p_103 from '@plugins/english/NovelLib[fictioneer]';
import p_104 from '@plugins/english/NovelMultiverse[madara]';
import p_105 from '@plugins/english/NovelNinja[madara]';
import p_106 from '@plugins/english/NovelOnline';
import p_107 from '@plugins/english/novelrest';
import p_108 from '@plugins/english/NovelsKnight[lightnovelwp]';
import p_109 from '@plugins/english/NovelTranslate[madara]';
import p_110 from '@plugins/english/novelupdates';
import p_111 from '@plugins/english/PandaMachineTranslations[lightnovelwp]';
import p_112 from '@plugins/english/PastelTales[madara]';
import p_113 from '@plugins/english/pawread';
import p_114 from '@plugins/english/PenguinSquad[fictioneer]';
import p_115 from '@plugins/english/Prizma[fictioneer]';
import p_116 from '@plugins/english/rainofsnow';
import p_117 from '@plugins/english/Ranobes[ranobes]';
import p_118 from '@plugins/english/Ranovel[madara]';
import p_119 from '@plugins/english/ReadFanfic[madara]';
import p_120 from '@plugins/english/readfrom';
import p_121 from '@plugins/english/ReadNovelFull[readnovelfull]';
import p_122 from '@plugins/english/relibrary';
import p_123 from '@plugins/english/RequiemTranslations[lightnovelwp]';
import p_124 from '@plugins/english/royalroad';
import p_125 from '@plugins/english/SalmonLatte[madara]';
import p_126 from '@plugins/english/scribblehub';
import p_127 from '@plugins/english/SleepyTranslations[madara]';
import p_128 from '@plugins/english/SonicMTL[madara]';
import p_129 from '@plugins/english/SrankManga[madara]';
import p_130 from '@plugins/english/StorySeedling';
import p_131 from '@plugins/english/SweetEscape[madara]';
import p_132 from '@plugins/english/SystemTranslation[lightnovelwp]';
import p_133 from '@plugins/english/TranslatinOtaku[madara]';
import p_134 from '@plugins/english/TranslationWeaver[lightnovelwp]';
import p_135 from '@plugins/english/UniversalNovel[lightnovelwp]';
import p_136 from '@plugins/english/VandyTranslate[lightnovelwp]';
import p_137 from '@plugins/english/VioletLily[madara]';
import p_138 from '@plugins/english/vynovel';
import p_139 from '@plugins/english/wct';
import p_140 from '@plugins/english/webnovel';
import p_141 from '@plugins/english/WebNovelLover[madara]';
import p_142 from '@plugins/english/WebNovelPub[lightnovelworld]';
import p_143 from '@plugins/english/WebNovelTranslation[madara]';
import p_144 from '@plugins/english/WhiteMoonlightNovels[lightnovelwp]';
import p_145 from '@plugins/english/WooksTeahouse[madara]';
import p_146 from '@plugins/english/WordExcerpt[madara]';
import p_147 from '@plugins/english/wtrlab';
import p_148 from '@plugins/english/Wuxiabox[readwn]';
import p_149 from '@plugins/english/Wuxiafox[readwn]';
import p_150 from '@plugins/english/WuxiaSpace[readwn]';
import p_151 from '@plugins/english/WuxiaV[readwn]';
import p_152 from '@plugins/english/wuxiaworld';
import p_153 from '@plugins/english/WuxiaWorldSite[madara]';
import p_154 from '@plugins/english/ZetroTranslation[madara]';
import p_155 from '@plugins/french/chireads';
import p_156 from '@plugins/french/harkeneliwood';
import p_157 from '@plugins/french/kisswood';
import p_158 from '@plugins/french/LighNovelFR[lightnovelwp]';
import p_159 from '@plugins/french/MassNovel[madara]';
import p_160 from '@plugins/french/MTLNovel(FR)[mtlnovel]';
import p_161 from '@plugins/french/noveldeglace';
import p_162 from '@plugins/french/novelfrance';
import p_163 from '@plugins/french/novhell';
import p_164 from '@plugins/french/rezerowebnovelfr';
import p_165 from '@plugins/french/warriorlegendtrad';
import p_166 from '@plugins/french/WorldNovel[madara]';
import p_167 from '@plugins/french/wuxialnscantrad';
import p_168 from '@plugins/french/xiaowaz';
import p_169 from '@plugins/indonesian/BacaLightNovel[lightnovelwp]';
import p_170 from '@plugins/indonesian/indowebnovel';
import p_171 from '@plugins/indonesian/MeioNovel[madara]';
import p_172 from '@plugins/indonesian/MTLNovel(ID)[mtlnovel]';
import p_173 from '@plugins/indonesian/NovelBookID[madara]';
import p_174 from '@plugins/indonesian/sakuranovel';
import p_175 from '@plugins/indonesian/SekteNovel[lightnovelwp]';
import p_176 from '@plugins/indonesian/Vanovel[madara]';
import p_177 from '@plugins/indonesian/WBNovel[madara]';
import p_178 from '@plugins/japanese/kakuyomu';
import p_179 from '@plugins/japanese/Syosetu';
import p_180 from '@plugins/korean/Agitoon';
import p_181 from '@plugins/korean/FortuneEternal[madara]';
import p_182 from '@plugins/multi/komga';
import p_183 from '@plugins/polish/novelki';
import p_184 from '@plugins/portuguese/BetterNovels[lightnovelwp]';
import p_185 from '@plugins/portuguese/blogdoamonnovels';
import p_186 from '@plugins/portuguese/CentralNovel[lightnovelwp]';
import p_187 from '@plugins/portuguese/illusia';
import p_188 from '@plugins/portuguese/Kiniga[madara]';
import p_189 from '@plugins/portuguese/LaNovels[hotnovelpub]';
import p_190 from '@plugins/portuguese/LightNovelBrasil[lightnovelwp]';
import p_191 from '@plugins/portuguese/MTLNovel(PT)[mtlnovel]';
import p_192 from '@plugins/portuguese/novelmania';
import p_193 from '@plugins/portuguese/tsundoku';
import p_194 from '@plugins/russian/authortoday';
import p_195 from '@plugins/russian/Bllate[rulate]';
import p_196 from '@plugins/russian/Bookhamster[ifreedom]';
import p_197 from '@plugins/russian/bookriver';
import p_198 from '@plugins/russian/Erolate[rulate]';
import p_199 from '@plugins/russian/EzNovels[hotnovelpub]';
import p_200 from '@plugins/russian/ficbook';
import p_201 from '@plugins/russian/jaomix';
import p_202 from '@plugins/russian/MTLNovel(RU)[mtlnovel]';
import p_203 from '@plugins/russian/neobook';
import p_204 from '@plugins/russian/NovelCool(RU)[novelcool]';
import p_205 from '@plugins/russian/novelTL';
import p_206 from '@plugins/russian/ranobehub';
import p_207 from '@plugins/russian/ranobelib';
import p_208 from '@plugins/russian/ranoberf';
import p_209 from '@plugins/russian/Ranobes(RU)[ranobes]';
import p_210 from '@plugins/russian/renovels';
import p_211 from '@plugins/russian/Rulate[rulate]';
import p_212 from '@plugins/russian/topliba';
import p_213 from '@plugins/russian/zelluloza';
import p_214 from '@plugins/russian/СвободныйМирРанобэ[ifreedom]';
import p_215 from '@plugins/spanish/AllNovelRead[lightnovelwp]';
import p_216 from '@plugins/spanish/AnimesHoy12[madara]';
import p_217 from '@plugins/spanish/hasutl';
import p_218 from '@plugins/spanish/LightNovelDaily[hotnovelpub]';
import p_219 from '@plugins/spanish/MTLNovel(ES)[mtlnovel]';
import p_220 from '@plugins/spanish/NOVA';
import p_221 from '@plugins/spanish/novelasligera';
import p_222 from '@plugins/spanish/novelawuxia';
import p_223 from '@plugins/spanish/novelyra';
import p_224 from '@plugins/spanish/oasistranslations';
import p_225 from '@plugins/spanish/PanchoTranslations[madara]';
import p_226 from '@plugins/spanish/skynovels';
import p_227 from '@plugins/spanish/TC&Sega[lightnovelwp]';
import p_228 from '@plugins/spanish/TraduccionesAmistosas[madara]';
import p_229 from '@plugins/spanish/tunovelaligera';
import p_230 from '@plugins/spanish/yukitls';
import p_231 from '@plugins/thai/NovelLucky[madara]';
import p_232 from '@plugins/thai/NovelPDF[madara]';
import p_233 from '@plugins/turkish/ArazNovel[madara]';
import p_234 from '@plugins/turkish/EKTAPLAR[madara]';
import p_235 from '@plugins/turkish/epiknovel';
import p_236 from '@plugins/turkish/kakikata[madara]';
import p_237 from '@plugins/turkish/KodeksLibrary[lightnovelwp]';
import p_238 from '@plugins/turkish/MangaTR';
import p_239 from '@plugins/turkish/NABSCANS[madara]';
import p_240 from '@plugins/turkish/Namevt[lightnovelwp]';
import p_241 from '@plugins/turkish/Noveloku[madara]';
import p_242 from '@plugins/turkish/NovelTR[lightnovelwp]';
import p_243 from '@plugins/turkish/RagnarScans[madara]';
import p_244 from '@plugins/turkish/ThNovels[hotnovelpub]';
import p_245 from '@plugins/turkish/TurkceLightNovels[madara]';
import p_246 from '@plugins/turkish/WebNovelOku[madara]';
import p_247 from '@plugins/ukrainian/bakainua';
import p_248 from '@plugins/ukrainian/smakolykytl';
import p_249 from '@plugins/vietnamese/lightnovelvn';
import p_250 from '@plugins/vietnamese/LNHako';
import p_251 from '@plugins/vietnamese/nettruyen';
import p_252 from '@plugins/vietnamese/truyenss';
const PLUGINS: Plugin.PluginBase[] = [
p_0,
@@ -505,5 +506,6 @@ const PLUGINS: Plugin.PluginBase[] = [
p_249,
p_250,
p_251,
p_252,
];
export default PLUGINS;