From f4c38f6252f0dea500ac05d9cbf9b34bad4516ff Mon Sep 17 00:00:00 2001 From: notnsas Date: Fri, 10 Jul 2026 02:54:41 +0700 Subject: [PATCH] feat: add fucknovelpia --- plugins/english/fucknovelpia.ts | 323 +++++++++++++++++ plugins/index.ts | 398 +++++++++++---------- public/static/src/en/fucknovelpia/icon.png | Bin 0 -> 24553 bytes 3 files changed, 523 insertions(+), 198 deletions(-) create mode 100644 plugins/english/fucknovelpia.ts create mode 100644 public/static/src/en/fucknovelpia/icon.png diff --git a/plugins/english/fucknovelpia.ts b/plugins/english/fucknovelpia.ts new file mode 100644 index 000000000..4384ed50b --- /dev/null +++ b/plugins/english/fucknovelpia.ts @@ -0,0 +1,323 @@ +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(); + + 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, + ): Promise { + 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_include?.value + .map(value => `&genres_include%5B%5D=${value}`) + .join(''); + const genreExcludeParams = filters?.genres_exclude?.value + .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 { + const result = await fetchApi(this.site + novelPath); + const body = await result.text(); + + const loadedCheerio = parseHTML(body); + + const infoMap: Record = {}; + 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 { + 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 { + let link = this.site + '?q=' + searchTerm.replace(/ /g, '+'); + + 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_include: { + label: 'Genres Include', + value: [], + 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.CheckboxGroup, + }, + genres_exclude: { + label: 'Genres Exclude', + value: [], + 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.CheckboxGroup, + }, + 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(); diff --git a/plugins/index.ts b/plugins/index.ts index 448606c58..6f75ee2b6 100644 --- a/plugins/index.ts +++ b/plugins/index.ts @@ -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; diff --git a/public/static/src/en/fucknovelpia/icon.png b/public/static/src/en/fucknovelpia/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..23f31ba1f276a80535322ddc702616c3a50276a3 GIT binary patch literal 24553 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