From 81dc5f52a1abd4d3e012586692ab333e6c5dc1fb Mon Sep 17 00:00:00 2001 From: Rider21 <58046032+Rider21@users.noreply.github.com> Date: Mon, 19 Jan 2026 22:14:32 +0300 Subject: [PATCH 1/3] update --- plugins/index.ts | 490 ++++++++++++-------------- plugins/multisrc/ifreedom/template.ts | 418 ++++++++++++++-------- 2 files changed, 505 insertions(+), 403 deletions(-) diff --git a/plugins/index.ts b/plugins/index.ts index c98be3157..4152a37f8 100644 --- a/plugins/index.ts +++ b/plugins/index.ts @@ -1,255 +1,238 @@ import { Plugin } from '@/types/plugin'; import p_0 from '@plugins/arabic/ArNovel[madara]'; import p_1 from '@plugins/arabic/Azora[madara]'; -import p_2 from '@plugins/arabic/FreeKolNovel[lightnovelwp]'; -import p_3 from '@plugins/arabic/HizoManga[madara]'; -import p_4 from '@plugins/arabic/KolNovel[lightnovelwp]'; -import p_5 from '@plugins/arabic/Novel4Up[madara]'; -import p_6 from '@plugins/arabic/NovelsParadise[lightnovelwp]'; -import p_7 from '@plugins/arabic/Olaoecyou[madara]'; -import p_8 from '@plugins/arabic/Riwyat[madara]'; -import p_9 from '@plugins/arabic/dilartube'; -import p_10 from '@plugins/arabic/rewayatclub'; +import p_2 from '@plugins/arabic/dilartube'; +import p_3 from '@plugins/arabic/FreeKolNovel[lightnovelwp]'; +import p_4 from '@plugins/arabic/HizoManga[madara]'; +import p_5 from '@plugins/arabic/KolNovel[lightnovelwp]'; +import p_6 from '@plugins/arabic/Novel4Up[madara]'; +import p_7 from '@plugins/arabic/NovelsParadise[lightnovelwp]'; +import p_8 from '@plugins/arabic/Olaoecyou[madara]'; +import p_9 from '@plugins/arabic/rewayatclub'; +import p_10 from '@plugins/arabic/Riwyat[madara]'; import p_11 from '@plugins/arabic/sunovels'; import p_12 from '@plugins/chinese/69shu'; -import p_13 from '@plugins/chinese/Quanben'; -import p_14 from '@plugins/chinese/ixdzs8'; -import p_15 from '@plugins/chinese/linovel'; -import p_16 from '@plugins/chinese/linovelib'; -import p_17 from '@plugins/chinese/linovelib_tw'; -import p_18 from '@plugins/chinese/novel543'; +import p_13 from '@plugins/chinese/ixdzs8'; +import p_14 from '@plugins/chinese/linovel'; +import p_15 from '@plugins/chinese/linovelib'; +import p_16 from '@plugins/chinese/linovelib_tw'; +import p_17 from '@plugins/chinese/novel543'; +import p_18 from '@plugins/chinese/Quanben'; import p_19 from '@plugins/english/AllNovelFull[readnovelfull]'; import p_20 from '@plugins/english/AllNovel[readnovelfull]'; -import p_21 from '@plugins/english/ArcaneTranslations[lightnovelwp]'; -import p_22 from '@plugins/english/BelleReservoir[madara]'; -import p_23 from '@plugins/english/BoxNovel[readnovelfull]'; -import p_24 from '@plugins/english/CPUnovel[lightnovelwp]'; -import p_25 from '@plugins/english/CitrusAurora[madara]'; -import p_26 from '@plugins/english/CoralBoutique[madara]'; -import p_27 from '@plugins/english/DaoNovel[madara]'; -import p_28 from '@plugins/english/DaoTranslate[lightnovelwp]'; -import p_29 from '@plugins/english/DaoistQuest[fictioneer]'; -import p_30 from '@plugins/english/DearestRosalie[fictioneer]'; -import p_31 from '@plugins/english/DragonTea[madara]'; -import p_32 from '@plugins/english/Dragonholic[madara]'; -import p_33 from '@plugins/english/DuskBlossoms[madara]'; -import p_34 from '@plugins/english/ElloTL[lightnovelwp]'; -import p_35 from '@plugins/english/Eternalune[madara]'; -import p_36 from '@plugins/english/EtudeTranslations[madara]'; -import p_37 from '@plugins/english/FanNovel[readwn]'; -import p_38 from '@plugins/english/FansMTL[readwn]'; -import p_39 from '@plugins/english/FansTranslations[madara]'; -import p_40 from '@plugins/english/FirstKissNovel[madara]'; -import p_41 from '@plugins/english/Foxaholic[madara]'; -import p_42 from '@plugins/english/FreeWebNovel[readnovelfull]'; -import p_43 from '@plugins/english/GalaxyTranslations[madara]'; -import p_44 from '@plugins/english/Guavaread[madara]'; -import p_45 from '@plugins/english/HiraethTranslation[madara]'; -import p_46 from '@plugins/english/HotNovelPub[hotnovelpub]'; -import p_47 from '@plugins/english/Ippotranslations[lightnovelwp]'; -import p_48 from '@plugins/english/KeopiTranslations[lightnovelwp]'; -import p_49 from '@plugins/english/KnoxT[lightnovelwp]'; -import p_50 from '@plugins/english/LazyGirlTranslations[lightnovelwp]'; -import p_51 from '@plugins/english/LibRead[readnovelfull]'; -import p_52 from '@plugins/english/LightNovelCave[lightnovelworld]'; -import p_53 from '@plugins/english/LightNovelHeaven[madara]'; -import p_54 from '@plugins/english/LightNovelPlus[readnovelfull]'; -import p_55 from '@plugins/english/LightNovelPubVip[lightnovelworld]'; -import p_56 from '@plugins/english/LightNovelUpdates[madara]'; -import p_57 from '@plugins/english/LightNovelWord[lightnovelworld]'; -import p_58 from '@plugins/english/LilyontheValley[fictioneer]'; -import p_59 from '@plugins/english/Ltnovel[readwn]'; -import p_60 from '@plugins/english/LunarLetters[madara]'; -import p_61 from '@plugins/english/MTLNovel[madara]'; -import p_62 from '@plugins/english/MTLNovel[mtlnovel]'; -import p_63 from '@plugins/english/Meownovel[madara]'; -import p_64 from '@plugins/english/MoonlightNovels[lightnovelwp]'; -import p_65 from '@plugins/english/MostNovel[madara]'; -import p_66 from '@plugins/english/MysticalSeries[madara]'; -import p_67 from '@plugins/english/NeoSekaiTranslations[madara]'; -import p_68 from '@plugins/english/NitroManga[madara]'; -import p_69 from '@plugins/english/NobleMTL[lightnovelwp]'; -import p_70 from '@plugins/english/NoiceTranslations[madara]'; -import p_71 from '@plugins/english/NovelBin[readnovelfull]'; -import p_72 from '@plugins/english/NovelCool[novelcool]'; -import p_73 from '@plugins/english/NovelFull[readnovelfull]'; -import p_74 from '@plugins/english/NovelLib[fictioneer]'; -import p_75 from '@plugins/english/NovelMultiverse[madara]'; -import p_76 from '@plugins/english/NovelOnline'; -import p_77 from '@plugins/english/NovelTranslate[madara]'; -import p_78 from '@plugins/english/NovelsKnight[lightnovelwp]'; -import p_79 from '@plugins/english/PandaMachineTranslations[lightnovelwp]'; -import p_80 from '@plugins/english/PastelTales[madara]'; -import p_81 from '@plugins/english/PenguinSquad[fictioneer]'; -import p_82 from '@plugins/english/Prizma[fictioneer]'; -import p_83 from '@plugins/english/Ranobes[ranobes]'; -import p_84 from '@plugins/english/Ranovel[madara]'; -import p_85 from '@plugins/english/ReadFanfic[madara]'; -import p_86 from '@plugins/english/ReadNovelFull[readnovelfull]'; -import p_87 from '@plugins/english/RequiemTranslations[lightnovelwp]'; -import p_88 from '@plugins/english/SalmonLatte[madara]'; -import p_89 from '@plugins/english/SleepyTranslations[madara]'; -import p_90 from '@plugins/english/SonicMTL[madara]'; -import p_91 from '@plugins/english/SrankManga[madara]'; -import p_92 from '@plugins/english/StorySeedling'; -import p_93 from '@plugins/english/SweetEscape[madara]'; -import p_94 from '@plugins/english/SystemTranslation[lightnovelwp]'; -import p_95 from '@plugins/english/TranslatinOtaku[madara]'; -import p_96 from '@plugins/english/TranslationWeaver[lightnovelwp]'; -import p_97 from '@plugins/english/UniversalNovel[lightnovelwp]'; -import p_98 from '@plugins/english/VandyTranslate[lightnovelwp]'; -import p_99 from '@plugins/english/VioletLily[madara]'; -import p_100 from '@plugins/english/WebNovelLover[madara]'; -import p_101 from '@plugins/english/WebNovelPub[lightnovelworld]'; -import p_102 from '@plugins/english/WebNovelTranslation[madara]'; -import p_103 from '@plugins/english/WhiteMoonlightNovels[lightnovelwp]'; -import p_104 from '@plugins/english/WooksTeahouse[madara]'; -import p_105 from '@plugins/english/WordExcerpt[madara]'; -import p_106 from '@plugins/english/WuxiaSpace[readwn]'; -import p_107 from '@plugins/english/WuxiaV[readwn]'; -import p_108 from '@plugins/english/WuxiaWorldSite[madara]'; -import p_109 from '@plugins/english/Wuxiabox[readwn]'; -import p_110 from '@plugins/english/Wuxiafox[readwn]'; -import p_111 from '@plugins/english/ZetroTranslation[madara]'; -import p_112 from '@plugins/english/ao3'; -import p_113 from '@plugins/english/bestlightnovel'; -import p_114 from '@plugins/english/chrysanthemumgarden'; -import p_115 from '@plugins/english/crimsonscrolls'; -import p_116 from '@plugins/english/divinedaolibrary'; -import p_117 from '@plugins/english/dreambigtl'; -import p_118 from '@plugins/english/earlynovel'; -import p_119 from '@plugins/english/faqwikius'; -import p_120 from '@plugins/english/fenrirrealm'; -import p_121 from '@plugins/english/fictionzone'; -import p_122 from '@plugins/english/foxteller'; -import p_123 from '@plugins/english/genesis'; -import p_124 from '@plugins/english/inkitt'; -import p_125 from '@plugins/english/kdtnovels'; -import p_126 from '@plugins/english/leafstudio'; -import p_127 from '@plugins/english/lightnovelpub'; -import p_128 from '@plugins/english/lightnoveltranslation'; -import p_129 from '@plugins/english/lnmtl'; -import p_130 from '@plugins/english/mtlreader'; -import p_131 from '@plugins/english/mvlempyr'; -import p_132 from '@plugins/english/novelbuddy'; -import p_133 from '@plugins/english/novelfire.paged'; -import p_134 from '@plugins/english/novelfire'; -import p_135 from '@plugins/english/novelhall'; -import p_136 from '@plugins/english/novelight'; -import p_137 from '@plugins/english/novelupdates'; -import p_138 from '@plugins/english/pawread'; -import p_139 from '@plugins/english/rainofsnow'; -import p_140 from '@plugins/english/readfrom'; -import p_141 from '@plugins/english/readlitenovel'; -import p_142 from '@plugins/english/reaperscans'; -import p_143 from '@plugins/english/relibrary'; -import p_144 from '@plugins/english/royalroad'; -import p_145 from '@plugins/english/scribblehub'; -import p_146 from '@plugins/english/vynovel'; -import p_147 from '@plugins/english/webnovel'; -import p_148 from '@plugins/english/wtrlab'; -import p_149 from '@plugins/english/wuxiaworld'; -import p_150 from '@plugins/french/LighNovelFR[lightnovelwp]'; -import p_151 from '@plugins/french/MTLNovel(FR)[mtlnovel]'; -import p_152 from '@plugins/french/MassNovel[madara]'; -import p_153 from '@plugins/french/WorldNovel[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/noveldeglace'; -import p_158 from '@plugins/french/novhell'; -import p_159 from '@plugins/french/phenixscans'; -import p_160 from '@plugins/french/warriorlegendtrad'; -import p_161 from '@plugins/french/wuxialnscantrad'; -import p_162 from '@plugins/french/xiaowaz'; -import p_163 from '@plugins/indonesian/BacaLightNovel[lightnovelwp]'; -import p_164 from '@plugins/indonesian/MTLNovel(ID)[mtlnovel]'; -import p_165 from '@plugins/indonesian/MeioNovel[madara]'; -import p_166 from '@plugins/indonesian/NovelBookID[madara]'; -import p_167 from '@plugins/indonesian/Risenovel[madara]'; -import p_168 from '@plugins/indonesian/SekteNovel[lightnovelwp]'; -import p_169 from '@plugins/indonesian/Vanovel[madara]'; -import p_170 from '@plugins/indonesian/WBNovel[madara]'; -import p_171 from '@plugins/indonesian/indowebnovel'; -import p_172 from '@plugins/indonesian/novelringan'; -import p_173 from '@plugins/indonesian/sakuranovel'; -import p_174 from '@plugins/japanese/Syosetu'; -import p_175 from '@plugins/japanese/kakuyomu'; -import p_176 from '@plugins/korean/Agitoon'; -import p_177 from '@plugins/korean/FortuneEternal[madara]'; -import p_178 from '@plugins/multi/komga'; -import p_179 from '@plugins/polish/novelki'; -import p_180 from '@plugins/portuguese/BetterNovels[lightnovelwp]'; -import p_181 from '@plugins/portuguese/CentralNovel[lightnovelwp]'; -import p_182 from '@plugins/portuguese/Kiniga[madara]'; -import p_183 from '@plugins/portuguese/LaNovels[hotnovelpub]'; -import p_184 from '@plugins/portuguese/LightNovelBrasil[lightnovelwp]'; -import p_185 from '@plugins/portuguese/MTLNovel(PT)[mtlnovel]'; -import p_186 from '@plugins/portuguese/blogdoamonnovels'; -import p_187 from '@plugins/portuguese/novelmania'; -import p_188 from '@plugins/portuguese/tsundoku'; -import p_189 from '@plugins/russian/Bookhamster[ifreedom]'; -import p_190 from '@plugins/russian/Erolate[rulate]'; -import p_191 from '@plugins/russian/EzNovels[hotnovelpub]'; -import p_192 from '@plugins/russian/LitSpace'; -import p_193 from '@plugins/russian/MTLNovel(RU)[mtlnovel]'; -import p_194 from '@plugins/russian/NovelCool(RU)[novelcool]'; -import p_195 from '@plugins/russian/Ranobes(RU)[ranobes]'; -import p_196 from '@plugins/russian/Rulate[rulate]'; -import p_197 from '@plugins/russian/authortoday'; -import p_198 from '@plugins/russian/bookriver'; -import p_199 from '@plugins/russian/ficbook'; -import p_200 from '@plugins/russian/jaomix'; -import p_201 from '@plugins/russian/neobook'; -import p_202 from '@plugins/russian/novelOvh'; -import p_203 from '@plugins/russian/novelTL'; -import p_204 from '@plugins/russian/ranobehub'; -import p_205 from '@plugins/russian/ranobelib'; -import p_206 from '@plugins/russian/ranoberf'; -import p_207 from '@plugins/russian/renovels'; -import p_208 from '@plugins/russian/ruvers'; -import p_209 from '@plugins/russian/topliba'; -import p_210 from '@plugins/russian/zelluloza'; -import p_211 from '@plugins/russian/СвободныйМирРанобэ[ifreedom]'; -import p_212 from '@plugins/spanish/AllNovelRead[lightnovelwp]'; -import p_213 from '@plugins/spanish/AnimesHoy12[madara]'; -import p_214 from '@plugins/spanish/LightNovelDaily[hotnovelpub]'; -import p_215 from '@plugins/spanish/MTLNovel(ES)[mtlnovel]'; -import p_216 from '@plugins/spanish/PanchoTranslations[madara]'; -import p_217 from '@plugins/spanish/TC&Sega[lightnovelwp]'; -import p_218 from '@plugins/spanish/TraduccionesAmistosas[madara]'; -import p_219 from '@plugins/spanish/hasutl'; -import p_220 from '@plugins/spanish/novelasligera'; -import p_221 from '@plugins/spanish/novelawuxia'; -import p_222 from '@plugins/spanish/oasistranslations'; -import p_223 from '@plugins/spanish/skynovels'; -import p_224 from '@plugins/spanish/tunovelaligera'; -import p_225 from '@plugins/spanish/yukitls'; -import p_226 from '@plugins/thai/NovelLucky[madara]'; -import p_227 from '@plugins/thai/NovelPDF[madara]'; -import p_228 from '@plugins/turkish/ArazNovel[madara]'; -import p_229 from '@plugins/turkish/EKTAPLAR[madara]'; -import p_230 from '@plugins/turkish/KodeksLibrary[lightnovelwp]'; -import p_231 from '@plugins/turkish/MangaTR'; -import p_232 from '@plugins/turkish/NABSCANS[madara]'; -import p_233 from '@plugins/turkish/Namevt[lightnovelwp]'; -import p_234 from '@plugins/turkish/NovelTR[lightnovelwp]'; -import p_235 from '@plugins/turkish/Noveloku[madara]'; -import p_236 from '@plugins/turkish/RagnarScans[madara]'; -import p_237 from '@plugins/turkish/ThNovels[hotnovelpub]'; -import p_238 from '@plugins/turkish/TurkceLightNovels[madara]'; -import p_239 from '@plugins/turkish/WebNovelOku[madara]'; -import p_240 from '@plugins/turkish/epiknovel'; -import p_241 from '@plugins/turkish/kakikata[madara]'; -import p_242 from '@plugins/ukrainian/bakainua'; -import p_243 from '@plugins/ukrainian/smakolykytl'; -import p_244 from '@plugins/ukrainian/uaranobeclub'; -import p_245 from '@plugins/vietnamese/LNHako'; -import p_246 from '@plugins/vietnamese/Truyenconect'; -import p_247 from '@plugins/vietnamese/lightnovelvn'; -import p_248 from '@plugins/vietnamese/nettruyen'; -import p_249 from '@plugins/vietnamese/truyenchu'; -import p_250 from '@plugins/vietnamese/truyenfull'; +import p_21 from '@plugins/english/ao3'; +import p_22 from '@plugins/english/ArcaneTranslations[lightnovelwp]'; +import p_23 from '@plugins/english/BelleReservoir[madara]'; +import p_24 from '@plugins/english/BoxNovel[readnovelfull]'; +import p_25 from '@plugins/english/chrysanthemumgarden'; +import p_26 from '@plugins/english/CitrusAurora[madara]'; +import p_27 from '@plugins/english/CoralBoutique[madara]'; +import p_28 from '@plugins/english/CPUnovel[lightnovelwp]'; +import p_29 from '@plugins/english/crimsonscrolls'; +import p_30 from '@plugins/english/DaoistQuest[fictioneer]'; +import p_31 from '@plugins/english/DaoNovel[madara]'; +import p_32 from '@plugins/english/DaoTranslate[lightnovelwp]'; +import p_33 from '@plugins/english/DearestRosalie[fictioneer]'; +import p_34 from '@plugins/english/divinedaolibrary'; +import p_35 from '@plugins/english/Dragonholic[madara]'; +import p_36 from '@plugins/english/DragonTea[madara]'; +import p_37 from '@plugins/english/dreambigtl'; +import p_38 from '@plugins/english/DuskBlossoms[madara]'; +import p_39 from '@plugins/english/ElloTL[lightnovelwp]'; +import p_40 from '@plugins/english/Eternalune[madara]'; +import p_41 from '@plugins/english/EtudeTranslations[madara]'; +import p_42 from '@plugins/english/FanNovel[readwn]'; +import p_43 from '@plugins/english/FansMTL[readwn]'; +import p_44 from '@plugins/english/FansTranslations[madara]'; +import p_45 from '@plugins/english/faqwikius'; +import p_46 from '@plugins/english/fenrirrealm'; +import p_47 from '@plugins/english/fictionzone'; +import p_48 from '@plugins/english/FirstKissNovel[madara]'; +import p_49 from '@plugins/english/Foxaholic[madara]'; +import p_50 from '@plugins/english/foxteller'; +import p_51 from '@plugins/english/FreeWebNovel[readnovelfull]'; +import p_52 from '@plugins/english/GalaxyTranslations[madara]'; +import p_53 from '@plugins/english/genesis'; +import p_54 from '@plugins/english/Guavaread[madara]'; +import p_55 from '@plugins/english/HiraethTranslation[madara]'; +import p_56 from '@plugins/english/HotNovelPub[hotnovelpub]'; +import p_57 from '@plugins/english/inkitt'; +import p_58 from '@plugins/english/Ippotranslations[lightnovelwp]'; +import p_59 from '@plugins/english/KDTNovels[lightnovelwp]'; +import p_60 from '@plugins/english/KeopiTranslations[lightnovelwp]'; +import p_61 from '@plugins/english/KnoxT[lightnovelwp]'; +import p_62 from '@plugins/english/LazyGirlTranslations[lightnovelwp]'; +import p_63 from '@plugins/english/leafstudio'; +import p_64 from '@plugins/english/LibRead[readnovelfull]'; +import p_65 from '@plugins/english/LightNovelCave[lightnovelworld]'; +import p_66 from '@plugins/english/LightNovelHeaven[madara]'; +import p_67 from '@plugins/english/LightNovelPlus[readnovelfull]'; +import p_68 from '@plugins/english/LightNovelPubVip[lightnovelworld]'; +import p_69 from '@plugins/english/lightnoveltranslation'; +import p_70 from '@plugins/english/LightNovelUpdates[madara]'; +import p_71 from '@plugins/english/LilyontheValley[fictioneer]'; +import p_72 from '@plugins/english/lnmtl'; +import p_73 from '@plugins/english/Ltnovel[readwn]'; +import p_74 from '@plugins/english/LunarLetters[madara]'; +import p_75 from '@plugins/english/Meownovel[madara]'; +import p_76 from '@plugins/english/MoonlightNovels[lightnovelwp]'; +import p_77 from '@plugins/english/MostNovel[madara]'; +import p_78 from '@plugins/english/MTLNovel[madara]'; +import p_79 from '@plugins/english/MTLNovel[mtlnovel]'; +import p_80 from '@plugins/english/mtlreader'; +import p_81 from '@plugins/english/mvlempyr'; +import p_82 from '@plugins/english/MysticalSeries[madara]'; +import p_83 from '@plugins/english/NeoSekaiTranslations[madara]'; +import p_84 from '@plugins/english/NitroManga[madara]'; +import p_85 from '@plugins/english/NobleMTL[lightnovelwp]'; +import p_86 from '@plugins/english/NoiceTranslations[madara]'; +import p_87 from '@plugins/english/NovelBin[readnovelfull]'; +import p_88 from '@plugins/english/novelbuddy'; +import p_89 from '@plugins/english/NovelCool[novelcool]'; +import p_90 from '@plugins/english/novelfire'; +import p_91 from '@plugins/english/NovelFull[readnovelfull]'; +import p_92 from '@plugins/english/novelhall'; +import p_93 from '@plugins/english/novelight'; +import p_94 from '@plugins/english/NovelLib[fictioneer]'; +import p_95 from '@plugins/english/NovelMultiverse[madara]'; +import p_96 from '@plugins/english/NovelOnline'; +import p_97 from '@plugins/english/NovelsKnight[lightnovelwp]'; +import p_98 from '@plugins/english/NovelTranslate[madara]'; +import p_99 from '@plugins/english/novelupdates'; +import p_100 from '@plugins/english/PandaMachineTranslations[lightnovelwp]'; +import p_101 from '@plugins/english/PastelTales[madara]'; +import p_102 from '@plugins/english/pawread'; +import p_103 from '@plugins/english/PenguinSquad[fictioneer]'; +import p_104 from '@plugins/english/Prizma[fictioneer]'; +import p_105 from '@plugins/english/rainofsnow'; +import p_106 from '@plugins/english/Ranobes[ranobes]'; +import p_107 from '@plugins/english/Ranovel[madara]'; +import p_108 from '@plugins/english/ReadFanfic[madara]'; +import p_109 from '@plugins/english/readfrom'; +import p_110 from '@plugins/english/ReadNovelFull[readnovelfull]'; +import p_111 from '@plugins/english/relibrary'; +import p_112 from '@plugins/english/RequiemTranslations[lightnovelwp]'; +import p_113 from '@plugins/english/royalroad'; +import p_114 from '@plugins/english/SalmonLatte[madara]'; +import p_115 from '@plugins/english/scribblehub'; +import p_116 from '@plugins/english/SleepyTranslations[madara]'; +import p_117 from '@plugins/english/SonicMTL[madara]'; +import p_118 from '@plugins/english/SrankManga[madara]'; +import p_119 from '@plugins/english/StorySeedling'; +import p_120 from '@plugins/english/SweetEscape[madara]'; +import p_121 from '@plugins/english/SystemTranslation[lightnovelwp]'; +import p_122 from '@plugins/english/TranslatinOtaku[madara]'; +import p_123 from '@plugins/english/TranslationWeaver[lightnovelwp]'; +import p_124 from '@plugins/english/UniversalNovel[lightnovelwp]'; +import p_125 from '@plugins/english/VandyTranslate[lightnovelwp]'; +import p_126 from '@plugins/english/VioletLily[madara]'; +import p_127 from '@plugins/english/vynovel'; +import p_128 from '@plugins/english/webnovel'; +import p_129 from '@plugins/english/WebNovelLover[madara]'; +import p_130 from '@plugins/english/WebNovelPub[lightnovelworld]'; +import p_131 from '@plugins/english/WebNovelTranslation[madara]'; +import p_132 from '@plugins/english/WhiteMoonlightNovels[lightnovelwp]'; +import p_133 from '@plugins/english/WooksTeahouse[madara]'; +import p_134 from '@plugins/english/WordExcerpt[madara]'; +import p_135 from '@plugins/english/wtrlab'; +import p_136 from '@plugins/english/Wuxiabox[readwn]'; +import p_137 from '@plugins/english/Wuxiafox[readwn]'; +import p_138 from '@plugins/english/WuxiaSpace[readwn]'; +import p_139 from '@plugins/english/WuxiaV[readwn]'; +import p_140 from '@plugins/english/wuxiaworld'; +import p_141 from '@plugins/english/WuxiaWorldSite[madara]'; +import p_142 from '@plugins/english/ZetroTranslation[madara]'; +import p_143 from '@plugins/french/chireads'; +import p_144 from '@plugins/french/harkeneliwood'; +import p_145 from '@plugins/french/kisswood'; +import p_146 from '@plugins/french/LighNovelFR[lightnovelwp]'; +import p_147 from '@plugins/french/MassNovel[madara]'; +import p_148 from '@plugins/french/MTLNovel(FR)[mtlnovel]'; +import p_149 from '@plugins/french/noveldeglace'; +import p_150 from '@plugins/french/novhell'; +import p_151 from '@plugins/french/warriorlegendtrad'; +import p_152 from '@plugins/french/WorldNovel[madara]'; +import p_153 from '@plugins/french/wuxialnscantrad'; +import p_154 from '@plugins/french/xiaowaz'; +import p_155 from '@plugins/indonesian/BacaLightNovel[lightnovelwp]'; +import p_156 from '@plugins/indonesian/indowebnovel'; +import p_157 from '@plugins/indonesian/MeioNovel[madara]'; +import p_158 from '@plugins/indonesian/MTLNovel(ID)[mtlnovel]'; +import p_159 from '@plugins/indonesian/NovelBookID[madara]'; +import p_160 from '@plugins/indonesian/sakuranovel'; +import p_161 from '@plugins/indonesian/SekteNovel[lightnovelwp]'; +import p_162 from '@plugins/indonesian/Vanovel[madara]'; +import p_163 from '@plugins/indonesian/WBNovel[madara]'; +import p_164 from '@plugins/japanese/kakuyomu'; +import p_165 from '@plugins/japanese/Syosetu'; +import p_166 from '@plugins/korean/Agitoon'; +import p_167 from '@plugins/korean/FortuneEternal[madara]'; +import p_168 from '@plugins/multi/komga'; +import p_169 from '@plugins/polish/novelki'; +import p_170 from '@plugins/portuguese/BetterNovels[lightnovelwp]'; +import p_171 from '@plugins/portuguese/blogdoamonnovels'; +import p_172 from '@plugins/portuguese/CentralNovel[lightnovelwp]'; +import p_173 from '@plugins/portuguese/Kiniga[madara]'; +import p_174 from '@plugins/portuguese/LaNovels[hotnovelpub]'; +import p_175 from '@plugins/portuguese/LightNovelBrasil[lightnovelwp]'; +import p_176 from '@plugins/portuguese/MTLNovel(PT)[mtlnovel]'; +import p_177 from '@plugins/portuguese/novelmania'; +import p_178 from '@plugins/portuguese/tsundoku'; +import p_179 from '@plugins/russian/authortoday'; +import p_180 from '@plugins/russian/Bookhamster[ifreedom]'; +import p_181 from '@plugins/russian/bookriver'; +import p_182 from '@plugins/russian/Erolate[rulate]'; +import p_183 from '@plugins/russian/EzNovels[hotnovelpub]'; +import p_184 from '@plugins/russian/ficbook'; +import p_185 from '@plugins/russian/jaomix'; +import p_186 from '@plugins/russian/MTLNovel(RU)[mtlnovel]'; +import p_187 from '@plugins/russian/neobook'; +import p_188 from '@plugins/russian/NovelCool(RU)[novelcool]'; +import p_189 from '@plugins/russian/novelTL'; +import p_190 from '@plugins/russian/ranobehub'; +import p_191 from '@plugins/russian/ranobelib'; +import p_192 from '@plugins/russian/ranoberf'; +import p_193 from '@plugins/russian/Ranobes(RU)[ranobes]'; +import p_194 from '@plugins/russian/renovels'; +import p_195 from '@plugins/russian/Rulate[rulate]'; +import p_196 from '@plugins/russian/topliba'; +import p_197 from '@plugins/russian/zelluloza'; +import p_198 from '@plugins/russian/СвободныйМирРанобэ[ifreedom]'; +import p_199 from '@plugins/spanish/AllNovelRead[lightnovelwp]'; +import p_200 from '@plugins/spanish/AnimesHoy12[madara]'; +import p_201 from '@plugins/spanish/hasutl'; +import p_202 from '@plugins/spanish/LightNovelDaily[hotnovelpub]'; +import p_203 from '@plugins/spanish/MTLNovel(ES)[mtlnovel]'; +import p_204 from '@plugins/spanish/novelasligera'; +import p_205 from '@plugins/spanish/novelawuxia'; +import p_206 from '@plugins/spanish/oasistranslations'; +import p_207 from '@plugins/spanish/PanchoTranslations[madara]'; +import p_208 from '@plugins/spanish/skynovels'; +import p_209 from '@plugins/spanish/TC&Sega[lightnovelwp]'; +import p_210 from '@plugins/spanish/TraduccionesAmistosas[madara]'; +import p_211 from '@plugins/spanish/tunovelaligera'; +import p_212 from '@plugins/spanish/yukitls'; +import p_213 from '@plugins/thai/NovelLucky[madara]'; +import p_214 from '@plugins/thai/NovelPDF[madara]'; +import p_215 from '@plugins/turkish/ArazNovel[madara]'; +import p_216 from '@plugins/turkish/EKTAPLAR[madara]'; +import p_217 from '@plugins/turkish/epiknovel'; +import p_218 from '@plugins/turkish/kakikata[madara]'; +import p_219 from '@plugins/turkish/KodeksLibrary[lightnovelwp]'; +import p_220 from '@plugins/turkish/MangaTR'; +import p_221 from '@plugins/turkish/NABSCANS[madara]'; +import p_222 from '@plugins/turkish/Namevt[lightnovelwp]'; +import p_223 from '@plugins/turkish/Noveloku[madara]'; +import p_224 from '@plugins/turkish/NovelTR[lightnovelwp]'; +import p_225 from '@plugins/turkish/RagnarScans[madara]'; +import p_226 from '@plugins/turkish/ThNovels[hotnovelpub]'; +import p_227 from '@plugins/turkish/TurkceLightNovels[madara]'; +import p_228 from '@plugins/turkish/WebNovelOku[madara]'; +import p_229 from '@plugins/ukrainian/bakainua'; +import p_230 from '@plugins/ukrainian/smakolykytl'; +import p_231 from '@plugins/vietnamese/lightnovelvn'; +import p_232 from '@plugins/vietnamese/LNHako'; +import p_233 from '@plugins/vietnamese/nettruyen'; const PLUGINS: Plugin.PluginBase[] = [ p_0, @@ -486,22 +469,5 @@ const PLUGINS: Plugin.PluginBase[] = [ p_231, p_232, p_233, - p_234, - p_235, - p_236, - p_237, - p_238, - p_239, - p_240, - p_241, - p_242, - p_243, - p_244, - p_245, - p_246, - p_247, - p_248, - p_249, - p_250, ]; export default PLUGINS; diff --git a/plugins/multisrc/ifreedom/template.ts b/plugins/multisrc/ifreedom/template.ts index 27f705434..887b0a940 100644 --- a/plugins/multisrc/ifreedom/template.ts +++ b/plugins/multisrc/ifreedom/template.ts @@ -2,7 +2,7 @@ import { fetchApi } from '@libs/fetch'; import { Filters, FilterTypes } from '@libs/filterInputs'; import { Plugin } from '@/types/plugin'; import { NovelStatus } from '@libs/novelStatus'; -import { load as parseHTML } from 'cheerio'; +import { Parser } from 'htmlparser2'; import dayjs from 'dayjs'; export type IfreedomMetadata = { @@ -25,10 +25,55 @@ class IfreedomPlugin implements Plugin.PluginBase { this.name = metadata.sourceName; this.icon = `multisrc/ifreedom/${metadata.id.toLowerCase()}/icon.png`; this.site = metadata.sourceSite; - this.version = '1.0.2'; + this.version = '1.1.0'; this.filters = metadata.filters; } + parseNovels(url: string) { + return fetchApi(url) + .then(res => res.text()) + .then(html => { + const novels: Plugin.NovelItem[] = []; + let tempNovel = {} as Plugin.NovelItem; + let isInsideNovelCard = false; + const site = this.site; + + const parser = new Parser({ + onopentag(name, attribs) { + const className = attribs['class'] || ''; + if ( + name === 'div' && + (className.includes('one-book-home') || + className.includes('item-book-slide')) + ) { + isInsideNovelCard = true; + } + + if (isInsideNovelCard) { + if (name === 'img') { + tempNovel.cover = attribs['src']; + if (attribs['alt']) tempNovel.name = attribs['alt']; + } + if (name === 'a' && attribs['href']) { + tempNovel.path = attribs['href'].replace(site, ''); + if (attribs['title']) tempNovel.name = attribs['title']; + } + } + }, + onclosetag(name) { + if (name === 'div' && isInsideNovelCard) { + isInsideNovelCard = false; + if (tempNovel.path) novels.push(tempNovel); + tempNovel = {} as Plugin.NovelItem; + } + }, + }); + parser.write(html); + parser.end(); + return novels; + }); + } + async popularNovels( page: number, { @@ -36,101 +81,185 @@ class IfreedomPlugin implements Plugin.PluginBase { showLatestNovels, }: Plugin.PopularNovelsOptions, ): Promise { - let url = - this.site + - '/vse-knigi/?sort=' + - (showLatestNovels - ? 'По дате обновления' - : filters?.sort?.value || 'По рейтингу'); + let url = `${this.site}/vse-knigi/?sort=${showLatestNovels ? 'По дате обновления' : filters?.sort?.value || 'По рейтингу'}`; Object.entries(filters || {}).forEach(([type, { value }]) => { - if (value instanceof Array && value.length) { - url += '&' + type + '[]=' + value.join('&' + type + '[]='); + if (Array.isArray(value) && value.length) { + url += `&${type}[]=${value.join(`&${type}[]=`)}`; } }); - url += '&bpage=' + page; - - const body = await fetchApi(url).then(res => res.text()); - const loadedCheerio = parseHTML(body); - - const novels: Plugin.NovelItem[] = loadedCheerio( - 'div.one-book-home > div.img-home a', - ) - .map((index, element) => ({ - name: loadedCheerio(element).attr('title') || '', - cover: loadedCheerio(element).find('img').attr('src'), - path: - loadedCheerio(element).attr('href')?.replace?.(this.site, '') || '', - })) - .get() - .filter(novel => novel.name && novel.path); - - return novels; + url += `&bpage=${page}`; + return this.parseNovels(url); } async parseNovel(novelPath: string): Promise { - const body = await fetchApi(this.site + novelPath).then(res => res.text()); - const loadedCheerio = parseHTML(body); + const html = await fetchApi(this.site + novelPath).then(res => res.text()); const novel: Plugin.SourceNovel = { path: novelPath, - name: loadedCheerio('.entry-title').text(), - cover: loadedCheerio('.img-ranobe > img').attr('src'), - summary: loadedCheerio('meta[name="description"]').attr('content'), + name: '', + author: '', + summary: '', + status: NovelStatus.Unknown, }; + const chapters: Plugin.ChapterItem[] = []; + const genres: string[] = []; + const site = this.site; - loadedCheerio('div.data-ranobe').each(function () { - switch (loadedCheerio(this).find('b').text()) { - case 'Автор': - novel.author = loadedCheerio(this) - .find('div.data-value') - .text() - .trim(); - break; - case 'Жанры': - novel.genres = loadedCheerio('div.data-value > a') - .map((index, element) => loadedCheerio(element).text()?.trim()) - .get() - .join(','); - break; - case 'Статус книги': - novel.status = loadedCheerio('div.data-value') - .text() - .includes('активен') - ? NovelStatus.Ongoing - : NovelStatus.Completed; - break; - } - }); + let isReadingName = false; + let isReadingSummary = false; + let isCoverContainer = false; - if (novel.author == 'Не указан') delete novel.author; + let metaContext: 'author' | 'status' | 'genre' | null = null; + let isMetaRow = false; + let isMetaValue = false; - const chapters: Plugin.ChapterItem[] = []; - const totalChapters = loadedCheerio('div.li-ranobe').length; - - loadedCheerio('div.li-ranobe').each((chapterIndex, element) => { - const name = loadedCheerio(element).find('a').text(); - const url = loadedCheerio(element).find('a').attr('href'); - if ( - !loadedCheerio(element).find('label.buy-ranobe').length && - name && - url - ) { - const releaseDate = loadedCheerio(element) - .find('div.li-col2-ranobe') - .text() - .trim(); - - chapters.push({ - name, - path: url.replace(this.site, ''), - releaseTime: this.parseDate(releaseDate), - chapterNumber: totalChapters - chapterIndex, - }); - } + let isInsideChapterRow = false; + let isReadingChapterName = false; + let isReadingChapterDate = false; + let tempChapter = {} as Plugin.ChapterItem; + + const parser = new Parser({ + onopentag(name, attribs) { + const className = attribs['class'] || ''; + + if (name === 'h1') isReadingName = true; + + if (name === 'div') { + if ( + className.includes('block-book-slide-img') || + className.includes('img-ranobe') + ) { + isCoverContainer = true; + } + if ( + className === 'descr-ranobe' || + (className === 'active' && attribs['data-name'] === 'Описание') + ) { + isReadingSummary = true; + } + } + if (name === 'img' && isCoverContainer && !novel.cover) { + novel.cover = attribs['src']; + } + + if (name === 'div') { + if (className.includes('data-ranobe')) { + isMetaRow = true; + metaContext = null; + } + if (className.includes('data-value')) { + isMetaValue = true; + } + + if (className.includes('book-info-list')) { + isMetaRow = true; + metaContext = null; + } + if (className.includes('genreslist')) { + metaContext = 'genre'; + } + } + + if (isMetaRow) { + if (name === 'span') { + if ( + className.includes('dashicons-book') && + !className.includes('book-alt') + ) + metaContext = 'genre'; + else if (className.includes('admin-users')) metaContext = 'author'; + else if (className.includes('megaphone')) metaContext = 'status'; + } + if (name === 'svg') { + if (className.includes('icon-tabler-tag')) metaContext = 'genre'; + else if ( + className.includes('mood-edit') || + className.includes('icon-tabler-user') + ) + metaContext = 'author'; + else if ( + className.includes('chart-infographic') || + className.includes('megaphone') + ) + metaContext = 'status'; + } + } + + if ( + name === 'div' && + (className === 'li-ranobe' || className === 'chapterinfo') + ) { + isInsideChapterRow = true; + } + if (name === 'a' && isInsideChapterRow) { + tempChapter.path = attribs['href'].replace(site, ''); + isReadingChapterName = true; + } + if ( + (name === 'div' || name === 'span') && + (className === 'li-col2-ranobe' || className === 'timechapter') + ) { + isReadingChapterDate = true; + } + }, + ontext(data) { + const text = data.trim(); + if (!text) return; + + if (isReadingName) novel.name = text.replace(/®/g, '').trim(); + if (isReadingSummary) novel.summary += text + '\n'; + + if (metaContext) { + const shouldRead = isMetaValue || (isMetaRow && !isMetaValue); + + if (shouldRead) { + if (metaContext === 'author') { + if ( + text !== 'Автор' && + text !== 'Переводчик' && + text !== 'Не указан' && + !text.includes('Просмотров') + ) { + novel.author = text; + } + } else if (metaContext === 'status') { + if (!text.includes('Статус')) novel.status = parseStatus(text); + } else if (metaContext === 'genre') { + if (text !== ',' && text !== 'Жанры') genres.push(text); + } + } + } + + if (isReadingChapterName) tempChapter.name = text; + if (isReadingChapterDate) tempChapter.releaseTime = parseDate(text); + }, + onclosetag(name) { + if (name === 'h1') isReadingName = false; + if (name === 'div') { + if (isReadingSummary) isReadingSummary = false; + if (isCoverContainer) isCoverContainer = false; + if (isMetaValue) isMetaValue = false; + } + + if (name === 'a') isReadingChapterName = false; + + if ((name === 'div' || name === 'span') && isReadingChapterDate) { + isReadingChapterDate = false; + if (tempChapter.path) { + chapters.push(tempChapter); + } + tempChapter = {} as Plugin.ChapterItem; + isInsideChapterRow = false; + } + }, }); + parser.write(html); + parser.end(); + + novel.genres = genres.join(','); novel.chapters = chapters.reverse(); return novel; } @@ -139,22 +268,35 @@ class IfreedomPlugin implements Plugin.PluginBase { const body = await fetchApi(this.site + chapterPath).then(res => res.text(), ); - let chapterText = - body.match(/
' + : '
'; + const endTag = + this.id === 'bookhamster' + ? '' + : '
'; + + const chapterStart = body.indexOf(startTag); + if (chapterStart === -1) return ''; + + const chapterEnd = body.indexOf(endTag, chapterStart); + let chapterText = body.slice( + chapterStart, + chapterEnd !== -1 ? chapterEnd : undefined, + ); + chapterText = chapterText.replace(/]*>[\s\S]*?<\/script>/gim, ''); if (chapterText.includes(' { + chapterText = chapterText.replace(/srcset="([^"]+)"/g, (match, src) => { if (!src) return match; - const bestlink = src + const bestLink = src .split(' ') - .filter((url: string) => url.startsWith('http')) + .filter((s: string) => s.startsWith('http')) .pop(); - - if (bestlink) { - return `src="${bestlink}"`; - } - return match; + return bestLink ? `src="${bestLink}"` : match; }); } @@ -163,60 +305,54 @@ class IfreedomPlugin implements Plugin.PluginBase { async searchNovels( searchTerm: string, - page: number | undefined = 1, + page: number = 1, ): Promise { - const url = - this.site + - '/vse-knigi/?searchname=' + - encodeURIComponent(searchTerm) + - '&bpage=' + - page; - const result = await fetchApi(url).then(res => res.text()); - const loadedCheerio = parseHTML(result); - - const novels: Plugin.NovelItem[] = loadedCheerio( - 'div.one-book-home > div.img-home a', - ) - .map((index, element) => ({ - name: loadedCheerio(element).attr('title') || '', - cover: loadedCheerio(element).find('img').attr('src'), - path: - loadedCheerio(element).attr('href')?.replace?.(this.site, '') || '', - })) - .get() - .filter(novel => novel.name && novel.path); - - return novels; + const url = `${this.site}/vse-knigi/?searchname=${encodeURIComponent(searchTerm)}&bpage=${page}`; + return this.parseNovels(url); } +} - parseDate = (dateString: string | undefined = '') => { - const months: Record = { - января: 1, - февраля: 2, - марта: 3, - апреля: 4, - мая: 5, - июня: 6, - июля: 7, - августа: 8, - сентября: 9, - октября: 10, - ноября: 11, - декабря: 12, - }; +function parseStatus(statusString: string): NovelStatus { + const s = statusString.toLowerCase().trim(); + switch (s) { + case 'Перевод активен': + return NovelStatus.Ongoing; + case 'Произведение завершено': + return NovelStatus.Completed; + case 'приостановлен': + return NovelStatus.OnHiatus; + default: + return NovelStatus.Unknown; + } +} - if (dateString.includes('.')) { - const [day, month, year] = dateString.split('.'); - if (day && month && year) { - return dayjs(year + '-' + month + '-' + day).format('LL'); - } - } else if (dateString.includes(' ')) { - const [day, month] = dateString.split(' '); - if (day && months[month]) { - const year = new Date().getFullYear(); - return dayjs(year + '-' + months[month] + '-' + day).format('LL'); - } - } - return dateString || null; +function parseDate(dateString: string = ''): string | null { + const months: Record = { + января: 1, + февраля: 2, + марта: 3, + апреля: 4, + мая: 5, + июня: 6, + июля: 7, + августа: 8, + сентября: 9, + октября: 10, + ноября: 11, + декабря: 12, }; + + if (dateString.includes('.')) { + const [day, month, year] = dateString.split('.'); + if (day && month && year) { + return dayjs(year + '-' + month + '-' + day).format('LL'); + } + } else if (dateString.includes(' ')) { + const [day, month] = dateString.split(' '); + if (day && months[month]) { + const year = new Date().getFullYear(); + return dayjs(year + '-' + months[month] + '-' + day).format('LL'); + } + } + return dateString || null; } From 12de868e82ef9f72a59e0c649260781486f461f5 Mon Sep 17 00:00:00 2001 From: Rider21 <58046032+Rider21@users.noreply.github.com> Date: Tue, 20 Jan 2026 13:05:06 +0300 Subject: [PATCH 2/3] fix --- plugins/index.ts | 490 ++++++++++++++------------ plugins/multisrc/ifreedom/template.ts | 59 +++- 2 files changed, 307 insertions(+), 242 deletions(-) diff --git a/plugins/index.ts b/plugins/index.ts index 4152a37f8..c98be3157 100644 --- a/plugins/index.ts +++ b/plugins/index.ts @@ -1,238 +1,255 @@ import { Plugin } from '@/types/plugin'; import p_0 from '@plugins/arabic/ArNovel[madara]'; import p_1 from '@plugins/arabic/Azora[madara]'; -import p_2 from '@plugins/arabic/dilartube'; -import p_3 from '@plugins/arabic/FreeKolNovel[lightnovelwp]'; -import p_4 from '@plugins/arabic/HizoManga[madara]'; -import p_5 from '@plugins/arabic/KolNovel[lightnovelwp]'; -import p_6 from '@plugins/arabic/Novel4Up[madara]'; -import p_7 from '@plugins/arabic/NovelsParadise[lightnovelwp]'; -import p_8 from '@plugins/arabic/Olaoecyou[madara]'; -import p_9 from '@plugins/arabic/rewayatclub'; -import p_10 from '@plugins/arabic/Riwyat[madara]'; +import p_2 from '@plugins/arabic/FreeKolNovel[lightnovelwp]'; +import p_3 from '@plugins/arabic/HizoManga[madara]'; +import p_4 from '@plugins/arabic/KolNovel[lightnovelwp]'; +import p_5 from '@plugins/arabic/Novel4Up[madara]'; +import p_6 from '@plugins/arabic/NovelsParadise[lightnovelwp]'; +import p_7 from '@plugins/arabic/Olaoecyou[madara]'; +import p_8 from '@plugins/arabic/Riwyat[madara]'; +import p_9 from '@plugins/arabic/dilartube'; +import p_10 from '@plugins/arabic/rewayatclub'; import p_11 from '@plugins/arabic/sunovels'; import p_12 from '@plugins/chinese/69shu'; -import p_13 from '@plugins/chinese/ixdzs8'; -import p_14 from '@plugins/chinese/linovel'; -import p_15 from '@plugins/chinese/linovelib'; -import p_16 from '@plugins/chinese/linovelib_tw'; -import p_17 from '@plugins/chinese/novel543'; -import p_18 from '@plugins/chinese/Quanben'; +import p_13 from '@plugins/chinese/Quanben'; +import p_14 from '@plugins/chinese/ixdzs8'; +import p_15 from '@plugins/chinese/linovel'; +import p_16 from '@plugins/chinese/linovelib'; +import p_17 from '@plugins/chinese/linovelib_tw'; +import p_18 from '@plugins/chinese/novel543'; import p_19 from '@plugins/english/AllNovelFull[readnovelfull]'; import p_20 from '@plugins/english/AllNovel[readnovelfull]'; -import p_21 from '@plugins/english/ao3'; -import p_22 from '@plugins/english/ArcaneTranslations[lightnovelwp]'; -import p_23 from '@plugins/english/BelleReservoir[madara]'; -import p_24 from '@plugins/english/BoxNovel[readnovelfull]'; -import p_25 from '@plugins/english/chrysanthemumgarden'; -import p_26 from '@plugins/english/CitrusAurora[madara]'; -import p_27 from '@plugins/english/CoralBoutique[madara]'; -import p_28 from '@plugins/english/CPUnovel[lightnovelwp]'; -import p_29 from '@plugins/english/crimsonscrolls'; -import p_30 from '@plugins/english/DaoistQuest[fictioneer]'; -import p_31 from '@plugins/english/DaoNovel[madara]'; -import p_32 from '@plugins/english/DaoTranslate[lightnovelwp]'; -import p_33 from '@plugins/english/DearestRosalie[fictioneer]'; -import p_34 from '@plugins/english/divinedaolibrary'; -import p_35 from '@plugins/english/Dragonholic[madara]'; -import p_36 from '@plugins/english/DragonTea[madara]'; -import p_37 from '@plugins/english/dreambigtl'; -import p_38 from '@plugins/english/DuskBlossoms[madara]'; -import p_39 from '@plugins/english/ElloTL[lightnovelwp]'; -import p_40 from '@plugins/english/Eternalune[madara]'; -import p_41 from '@plugins/english/EtudeTranslations[madara]'; -import p_42 from '@plugins/english/FanNovel[readwn]'; -import p_43 from '@plugins/english/FansMTL[readwn]'; -import p_44 from '@plugins/english/FansTranslations[madara]'; -import p_45 from '@plugins/english/faqwikius'; -import p_46 from '@plugins/english/fenrirrealm'; -import p_47 from '@plugins/english/fictionzone'; -import p_48 from '@plugins/english/FirstKissNovel[madara]'; -import p_49 from '@plugins/english/Foxaholic[madara]'; -import p_50 from '@plugins/english/foxteller'; -import p_51 from '@plugins/english/FreeWebNovel[readnovelfull]'; -import p_52 from '@plugins/english/GalaxyTranslations[madara]'; -import p_53 from '@plugins/english/genesis'; -import p_54 from '@plugins/english/Guavaread[madara]'; -import p_55 from '@plugins/english/HiraethTranslation[madara]'; -import p_56 from '@plugins/english/HotNovelPub[hotnovelpub]'; -import p_57 from '@plugins/english/inkitt'; -import p_58 from '@plugins/english/Ippotranslations[lightnovelwp]'; -import p_59 from '@plugins/english/KDTNovels[lightnovelwp]'; -import p_60 from '@plugins/english/KeopiTranslations[lightnovelwp]'; -import p_61 from '@plugins/english/KnoxT[lightnovelwp]'; -import p_62 from '@plugins/english/LazyGirlTranslations[lightnovelwp]'; -import p_63 from '@plugins/english/leafstudio'; -import p_64 from '@plugins/english/LibRead[readnovelfull]'; -import p_65 from '@plugins/english/LightNovelCave[lightnovelworld]'; -import p_66 from '@plugins/english/LightNovelHeaven[madara]'; -import p_67 from '@plugins/english/LightNovelPlus[readnovelfull]'; -import p_68 from '@plugins/english/LightNovelPubVip[lightnovelworld]'; -import p_69 from '@plugins/english/lightnoveltranslation'; -import p_70 from '@plugins/english/LightNovelUpdates[madara]'; -import p_71 from '@plugins/english/LilyontheValley[fictioneer]'; -import p_72 from '@plugins/english/lnmtl'; -import p_73 from '@plugins/english/Ltnovel[readwn]'; -import p_74 from '@plugins/english/LunarLetters[madara]'; -import p_75 from '@plugins/english/Meownovel[madara]'; -import p_76 from '@plugins/english/MoonlightNovels[lightnovelwp]'; -import p_77 from '@plugins/english/MostNovel[madara]'; -import p_78 from '@plugins/english/MTLNovel[madara]'; -import p_79 from '@plugins/english/MTLNovel[mtlnovel]'; -import p_80 from '@plugins/english/mtlreader'; -import p_81 from '@plugins/english/mvlempyr'; -import p_82 from '@plugins/english/MysticalSeries[madara]'; -import p_83 from '@plugins/english/NeoSekaiTranslations[madara]'; -import p_84 from '@plugins/english/NitroManga[madara]'; -import p_85 from '@plugins/english/NobleMTL[lightnovelwp]'; -import p_86 from '@plugins/english/NoiceTranslations[madara]'; -import p_87 from '@plugins/english/NovelBin[readnovelfull]'; -import p_88 from '@plugins/english/novelbuddy'; -import p_89 from '@plugins/english/NovelCool[novelcool]'; -import p_90 from '@plugins/english/novelfire'; -import p_91 from '@plugins/english/NovelFull[readnovelfull]'; -import p_92 from '@plugins/english/novelhall'; -import p_93 from '@plugins/english/novelight'; -import p_94 from '@plugins/english/NovelLib[fictioneer]'; -import p_95 from '@plugins/english/NovelMultiverse[madara]'; -import p_96 from '@plugins/english/NovelOnline'; -import p_97 from '@plugins/english/NovelsKnight[lightnovelwp]'; -import p_98 from '@plugins/english/NovelTranslate[madara]'; -import p_99 from '@plugins/english/novelupdates'; -import p_100 from '@plugins/english/PandaMachineTranslations[lightnovelwp]'; -import p_101 from '@plugins/english/PastelTales[madara]'; -import p_102 from '@plugins/english/pawread'; -import p_103 from '@plugins/english/PenguinSquad[fictioneer]'; -import p_104 from '@plugins/english/Prizma[fictioneer]'; -import p_105 from '@plugins/english/rainofsnow'; -import p_106 from '@plugins/english/Ranobes[ranobes]'; -import p_107 from '@plugins/english/Ranovel[madara]'; -import p_108 from '@plugins/english/ReadFanfic[madara]'; -import p_109 from '@plugins/english/readfrom'; -import p_110 from '@plugins/english/ReadNovelFull[readnovelfull]'; -import p_111 from '@plugins/english/relibrary'; -import p_112 from '@plugins/english/RequiemTranslations[lightnovelwp]'; -import p_113 from '@plugins/english/royalroad'; -import p_114 from '@plugins/english/SalmonLatte[madara]'; -import p_115 from '@plugins/english/scribblehub'; -import p_116 from '@plugins/english/SleepyTranslations[madara]'; -import p_117 from '@plugins/english/SonicMTL[madara]'; -import p_118 from '@plugins/english/SrankManga[madara]'; -import p_119 from '@plugins/english/StorySeedling'; -import p_120 from '@plugins/english/SweetEscape[madara]'; -import p_121 from '@plugins/english/SystemTranslation[lightnovelwp]'; -import p_122 from '@plugins/english/TranslatinOtaku[madara]'; -import p_123 from '@plugins/english/TranslationWeaver[lightnovelwp]'; -import p_124 from '@plugins/english/UniversalNovel[lightnovelwp]'; -import p_125 from '@plugins/english/VandyTranslate[lightnovelwp]'; -import p_126 from '@plugins/english/VioletLily[madara]'; -import p_127 from '@plugins/english/vynovel'; -import p_128 from '@plugins/english/webnovel'; -import p_129 from '@plugins/english/WebNovelLover[madara]'; -import p_130 from '@plugins/english/WebNovelPub[lightnovelworld]'; -import p_131 from '@plugins/english/WebNovelTranslation[madara]'; -import p_132 from '@plugins/english/WhiteMoonlightNovels[lightnovelwp]'; -import p_133 from '@plugins/english/WooksTeahouse[madara]'; -import p_134 from '@plugins/english/WordExcerpt[madara]'; -import p_135 from '@plugins/english/wtrlab'; -import p_136 from '@plugins/english/Wuxiabox[readwn]'; -import p_137 from '@plugins/english/Wuxiafox[readwn]'; -import p_138 from '@plugins/english/WuxiaSpace[readwn]'; -import p_139 from '@plugins/english/WuxiaV[readwn]'; -import p_140 from '@plugins/english/wuxiaworld'; -import p_141 from '@plugins/english/WuxiaWorldSite[madara]'; -import p_142 from '@plugins/english/ZetroTranslation[madara]'; -import p_143 from '@plugins/french/chireads'; -import p_144 from '@plugins/french/harkeneliwood'; -import p_145 from '@plugins/french/kisswood'; -import p_146 from '@plugins/french/LighNovelFR[lightnovelwp]'; -import p_147 from '@plugins/french/MassNovel[madara]'; -import p_148 from '@plugins/french/MTLNovel(FR)[mtlnovel]'; -import p_149 from '@plugins/french/noveldeglace'; -import p_150 from '@plugins/french/novhell'; -import p_151 from '@plugins/french/warriorlegendtrad'; -import p_152 from '@plugins/french/WorldNovel[madara]'; -import p_153 from '@plugins/french/wuxialnscantrad'; -import p_154 from '@plugins/french/xiaowaz'; -import p_155 from '@plugins/indonesian/BacaLightNovel[lightnovelwp]'; -import p_156 from '@plugins/indonesian/indowebnovel'; -import p_157 from '@plugins/indonesian/MeioNovel[madara]'; -import p_158 from '@plugins/indonesian/MTLNovel(ID)[mtlnovel]'; -import p_159 from '@plugins/indonesian/NovelBookID[madara]'; -import p_160 from '@plugins/indonesian/sakuranovel'; -import p_161 from '@plugins/indonesian/SekteNovel[lightnovelwp]'; -import p_162 from '@plugins/indonesian/Vanovel[madara]'; -import p_163 from '@plugins/indonesian/WBNovel[madara]'; -import p_164 from '@plugins/japanese/kakuyomu'; -import p_165 from '@plugins/japanese/Syosetu'; -import p_166 from '@plugins/korean/Agitoon'; -import p_167 from '@plugins/korean/FortuneEternal[madara]'; -import p_168 from '@plugins/multi/komga'; -import p_169 from '@plugins/polish/novelki'; -import p_170 from '@plugins/portuguese/BetterNovels[lightnovelwp]'; -import p_171 from '@plugins/portuguese/blogdoamonnovels'; -import p_172 from '@plugins/portuguese/CentralNovel[lightnovelwp]'; -import p_173 from '@plugins/portuguese/Kiniga[madara]'; -import p_174 from '@plugins/portuguese/LaNovels[hotnovelpub]'; -import p_175 from '@plugins/portuguese/LightNovelBrasil[lightnovelwp]'; -import p_176 from '@plugins/portuguese/MTLNovel(PT)[mtlnovel]'; -import p_177 from '@plugins/portuguese/novelmania'; -import p_178 from '@plugins/portuguese/tsundoku'; -import p_179 from '@plugins/russian/authortoday'; -import p_180 from '@plugins/russian/Bookhamster[ifreedom]'; -import p_181 from '@plugins/russian/bookriver'; -import p_182 from '@plugins/russian/Erolate[rulate]'; -import p_183 from '@plugins/russian/EzNovels[hotnovelpub]'; -import p_184 from '@plugins/russian/ficbook'; -import p_185 from '@plugins/russian/jaomix'; -import p_186 from '@plugins/russian/MTLNovel(RU)[mtlnovel]'; -import p_187 from '@plugins/russian/neobook'; -import p_188 from '@plugins/russian/NovelCool(RU)[novelcool]'; -import p_189 from '@plugins/russian/novelTL'; -import p_190 from '@plugins/russian/ranobehub'; -import p_191 from '@plugins/russian/ranobelib'; -import p_192 from '@plugins/russian/ranoberf'; -import p_193 from '@plugins/russian/Ranobes(RU)[ranobes]'; -import p_194 from '@plugins/russian/renovels'; -import p_195 from '@plugins/russian/Rulate[rulate]'; -import p_196 from '@plugins/russian/topliba'; -import p_197 from '@plugins/russian/zelluloza'; -import p_198 from '@plugins/russian/СвободныйМирРанобэ[ifreedom]'; -import p_199 from '@plugins/spanish/AllNovelRead[lightnovelwp]'; -import p_200 from '@plugins/spanish/AnimesHoy12[madara]'; -import p_201 from '@plugins/spanish/hasutl'; -import p_202 from '@plugins/spanish/LightNovelDaily[hotnovelpub]'; -import p_203 from '@plugins/spanish/MTLNovel(ES)[mtlnovel]'; -import p_204 from '@plugins/spanish/novelasligera'; -import p_205 from '@plugins/spanish/novelawuxia'; -import p_206 from '@plugins/spanish/oasistranslations'; -import p_207 from '@plugins/spanish/PanchoTranslations[madara]'; -import p_208 from '@plugins/spanish/skynovels'; -import p_209 from '@plugins/spanish/TC&Sega[lightnovelwp]'; -import p_210 from '@plugins/spanish/TraduccionesAmistosas[madara]'; -import p_211 from '@plugins/spanish/tunovelaligera'; -import p_212 from '@plugins/spanish/yukitls'; -import p_213 from '@plugins/thai/NovelLucky[madara]'; -import p_214 from '@plugins/thai/NovelPDF[madara]'; -import p_215 from '@plugins/turkish/ArazNovel[madara]'; -import p_216 from '@plugins/turkish/EKTAPLAR[madara]'; -import p_217 from '@plugins/turkish/epiknovel'; -import p_218 from '@plugins/turkish/kakikata[madara]'; -import p_219 from '@plugins/turkish/KodeksLibrary[lightnovelwp]'; -import p_220 from '@plugins/turkish/MangaTR'; -import p_221 from '@plugins/turkish/NABSCANS[madara]'; -import p_222 from '@plugins/turkish/Namevt[lightnovelwp]'; -import p_223 from '@plugins/turkish/Noveloku[madara]'; -import p_224 from '@plugins/turkish/NovelTR[lightnovelwp]'; -import p_225 from '@plugins/turkish/RagnarScans[madara]'; -import p_226 from '@plugins/turkish/ThNovels[hotnovelpub]'; -import p_227 from '@plugins/turkish/TurkceLightNovels[madara]'; -import p_228 from '@plugins/turkish/WebNovelOku[madara]'; -import p_229 from '@plugins/ukrainian/bakainua'; -import p_230 from '@plugins/ukrainian/smakolykytl'; -import p_231 from '@plugins/vietnamese/lightnovelvn'; -import p_232 from '@plugins/vietnamese/LNHako'; -import p_233 from '@plugins/vietnamese/nettruyen'; +import p_21 from '@plugins/english/ArcaneTranslations[lightnovelwp]'; +import p_22 from '@plugins/english/BelleReservoir[madara]'; +import p_23 from '@plugins/english/BoxNovel[readnovelfull]'; +import p_24 from '@plugins/english/CPUnovel[lightnovelwp]'; +import p_25 from '@plugins/english/CitrusAurora[madara]'; +import p_26 from '@plugins/english/CoralBoutique[madara]'; +import p_27 from '@plugins/english/DaoNovel[madara]'; +import p_28 from '@plugins/english/DaoTranslate[lightnovelwp]'; +import p_29 from '@plugins/english/DaoistQuest[fictioneer]'; +import p_30 from '@plugins/english/DearestRosalie[fictioneer]'; +import p_31 from '@plugins/english/DragonTea[madara]'; +import p_32 from '@plugins/english/Dragonholic[madara]'; +import p_33 from '@plugins/english/DuskBlossoms[madara]'; +import p_34 from '@plugins/english/ElloTL[lightnovelwp]'; +import p_35 from '@plugins/english/Eternalune[madara]'; +import p_36 from '@plugins/english/EtudeTranslations[madara]'; +import p_37 from '@plugins/english/FanNovel[readwn]'; +import p_38 from '@plugins/english/FansMTL[readwn]'; +import p_39 from '@plugins/english/FansTranslations[madara]'; +import p_40 from '@plugins/english/FirstKissNovel[madara]'; +import p_41 from '@plugins/english/Foxaholic[madara]'; +import p_42 from '@plugins/english/FreeWebNovel[readnovelfull]'; +import p_43 from '@plugins/english/GalaxyTranslations[madara]'; +import p_44 from '@plugins/english/Guavaread[madara]'; +import p_45 from '@plugins/english/HiraethTranslation[madara]'; +import p_46 from '@plugins/english/HotNovelPub[hotnovelpub]'; +import p_47 from '@plugins/english/Ippotranslations[lightnovelwp]'; +import p_48 from '@plugins/english/KeopiTranslations[lightnovelwp]'; +import p_49 from '@plugins/english/KnoxT[lightnovelwp]'; +import p_50 from '@plugins/english/LazyGirlTranslations[lightnovelwp]'; +import p_51 from '@plugins/english/LibRead[readnovelfull]'; +import p_52 from '@plugins/english/LightNovelCave[lightnovelworld]'; +import p_53 from '@plugins/english/LightNovelHeaven[madara]'; +import p_54 from '@plugins/english/LightNovelPlus[readnovelfull]'; +import p_55 from '@plugins/english/LightNovelPubVip[lightnovelworld]'; +import p_56 from '@plugins/english/LightNovelUpdates[madara]'; +import p_57 from '@plugins/english/LightNovelWord[lightnovelworld]'; +import p_58 from '@plugins/english/LilyontheValley[fictioneer]'; +import p_59 from '@plugins/english/Ltnovel[readwn]'; +import p_60 from '@plugins/english/LunarLetters[madara]'; +import p_61 from '@plugins/english/MTLNovel[madara]'; +import p_62 from '@plugins/english/MTLNovel[mtlnovel]'; +import p_63 from '@plugins/english/Meownovel[madara]'; +import p_64 from '@plugins/english/MoonlightNovels[lightnovelwp]'; +import p_65 from '@plugins/english/MostNovel[madara]'; +import p_66 from '@plugins/english/MysticalSeries[madara]'; +import p_67 from '@plugins/english/NeoSekaiTranslations[madara]'; +import p_68 from '@plugins/english/NitroManga[madara]'; +import p_69 from '@plugins/english/NobleMTL[lightnovelwp]'; +import p_70 from '@plugins/english/NoiceTranslations[madara]'; +import p_71 from '@plugins/english/NovelBin[readnovelfull]'; +import p_72 from '@plugins/english/NovelCool[novelcool]'; +import p_73 from '@plugins/english/NovelFull[readnovelfull]'; +import p_74 from '@plugins/english/NovelLib[fictioneer]'; +import p_75 from '@plugins/english/NovelMultiverse[madara]'; +import p_76 from '@plugins/english/NovelOnline'; +import p_77 from '@plugins/english/NovelTranslate[madara]'; +import p_78 from '@plugins/english/NovelsKnight[lightnovelwp]'; +import p_79 from '@plugins/english/PandaMachineTranslations[lightnovelwp]'; +import p_80 from '@plugins/english/PastelTales[madara]'; +import p_81 from '@plugins/english/PenguinSquad[fictioneer]'; +import p_82 from '@plugins/english/Prizma[fictioneer]'; +import p_83 from '@plugins/english/Ranobes[ranobes]'; +import p_84 from '@plugins/english/Ranovel[madara]'; +import p_85 from '@plugins/english/ReadFanfic[madara]'; +import p_86 from '@plugins/english/ReadNovelFull[readnovelfull]'; +import p_87 from '@plugins/english/RequiemTranslations[lightnovelwp]'; +import p_88 from '@plugins/english/SalmonLatte[madara]'; +import p_89 from '@plugins/english/SleepyTranslations[madara]'; +import p_90 from '@plugins/english/SonicMTL[madara]'; +import p_91 from '@plugins/english/SrankManga[madara]'; +import p_92 from '@plugins/english/StorySeedling'; +import p_93 from '@plugins/english/SweetEscape[madara]'; +import p_94 from '@plugins/english/SystemTranslation[lightnovelwp]'; +import p_95 from '@plugins/english/TranslatinOtaku[madara]'; +import p_96 from '@plugins/english/TranslationWeaver[lightnovelwp]'; +import p_97 from '@plugins/english/UniversalNovel[lightnovelwp]'; +import p_98 from '@plugins/english/VandyTranslate[lightnovelwp]'; +import p_99 from '@plugins/english/VioletLily[madara]'; +import p_100 from '@plugins/english/WebNovelLover[madara]'; +import p_101 from '@plugins/english/WebNovelPub[lightnovelworld]'; +import p_102 from '@plugins/english/WebNovelTranslation[madara]'; +import p_103 from '@plugins/english/WhiteMoonlightNovels[lightnovelwp]'; +import p_104 from '@plugins/english/WooksTeahouse[madara]'; +import p_105 from '@plugins/english/WordExcerpt[madara]'; +import p_106 from '@plugins/english/WuxiaSpace[readwn]'; +import p_107 from '@plugins/english/WuxiaV[readwn]'; +import p_108 from '@plugins/english/WuxiaWorldSite[madara]'; +import p_109 from '@plugins/english/Wuxiabox[readwn]'; +import p_110 from '@plugins/english/Wuxiafox[readwn]'; +import p_111 from '@plugins/english/ZetroTranslation[madara]'; +import p_112 from '@plugins/english/ao3'; +import p_113 from '@plugins/english/bestlightnovel'; +import p_114 from '@plugins/english/chrysanthemumgarden'; +import p_115 from '@plugins/english/crimsonscrolls'; +import p_116 from '@plugins/english/divinedaolibrary'; +import p_117 from '@plugins/english/dreambigtl'; +import p_118 from '@plugins/english/earlynovel'; +import p_119 from '@plugins/english/faqwikius'; +import p_120 from '@plugins/english/fenrirrealm'; +import p_121 from '@plugins/english/fictionzone'; +import p_122 from '@plugins/english/foxteller'; +import p_123 from '@plugins/english/genesis'; +import p_124 from '@plugins/english/inkitt'; +import p_125 from '@plugins/english/kdtnovels'; +import p_126 from '@plugins/english/leafstudio'; +import p_127 from '@plugins/english/lightnovelpub'; +import p_128 from '@plugins/english/lightnoveltranslation'; +import p_129 from '@plugins/english/lnmtl'; +import p_130 from '@plugins/english/mtlreader'; +import p_131 from '@plugins/english/mvlempyr'; +import p_132 from '@plugins/english/novelbuddy'; +import p_133 from '@plugins/english/novelfire.paged'; +import p_134 from '@plugins/english/novelfire'; +import p_135 from '@plugins/english/novelhall'; +import p_136 from '@plugins/english/novelight'; +import p_137 from '@plugins/english/novelupdates'; +import p_138 from '@plugins/english/pawread'; +import p_139 from '@plugins/english/rainofsnow'; +import p_140 from '@plugins/english/readfrom'; +import p_141 from '@plugins/english/readlitenovel'; +import p_142 from '@plugins/english/reaperscans'; +import p_143 from '@plugins/english/relibrary'; +import p_144 from '@plugins/english/royalroad'; +import p_145 from '@plugins/english/scribblehub'; +import p_146 from '@plugins/english/vynovel'; +import p_147 from '@plugins/english/webnovel'; +import p_148 from '@plugins/english/wtrlab'; +import p_149 from '@plugins/english/wuxiaworld'; +import p_150 from '@plugins/french/LighNovelFR[lightnovelwp]'; +import p_151 from '@plugins/french/MTLNovel(FR)[mtlnovel]'; +import p_152 from '@plugins/french/MassNovel[madara]'; +import p_153 from '@plugins/french/WorldNovel[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/noveldeglace'; +import p_158 from '@plugins/french/novhell'; +import p_159 from '@plugins/french/phenixscans'; +import p_160 from '@plugins/french/warriorlegendtrad'; +import p_161 from '@plugins/french/wuxialnscantrad'; +import p_162 from '@plugins/french/xiaowaz'; +import p_163 from '@plugins/indonesian/BacaLightNovel[lightnovelwp]'; +import p_164 from '@plugins/indonesian/MTLNovel(ID)[mtlnovel]'; +import p_165 from '@plugins/indonesian/MeioNovel[madara]'; +import p_166 from '@plugins/indonesian/NovelBookID[madara]'; +import p_167 from '@plugins/indonesian/Risenovel[madara]'; +import p_168 from '@plugins/indonesian/SekteNovel[lightnovelwp]'; +import p_169 from '@plugins/indonesian/Vanovel[madara]'; +import p_170 from '@plugins/indonesian/WBNovel[madara]'; +import p_171 from '@plugins/indonesian/indowebnovel'; +import p_172 from '@plugins/indonesian/novelringan'; +import p_173 from '@plugins/indonesian/sakuranovel'; +import p_174 from '@plugins/japanese/Syosetu'; +import p_175 from '@plugins/japanese/kakuyomu'; +import p_176 from '@plugins/korean/Agitoon'; +import p_177 from '@plugins/korean/FortuneEternal[madara]'; +import p_178 from '@plugins/multi/komga'; +import p_179 from '@plugins/polish/novelki'; +import p_180 from '@plugins/portuguese/BetterNovels[lightnovelwp]'; +import p_181 from '@plugins/portuguese/CentralNovel[lightnovelwp]'; +import p_182 from '@plugins/portuguese/Kiniga[madara]'; +import p_183 from '@plugins/portuguese/LaNovels[hotnovelpub]'; +import p_184 from '@plugins/portuguese/LightNovelBrasil[lightnovelwp]'; +import p_185 from '@plugins/portuguese/MTLNovel(PT)[mtlnovel]'; +import p_186 from '@plugins/portuguese/blogdoamonnovels'; +import p_187 from '@plugins/portuguese/novelmania'; +import p_188 from '@plugins/portuguese/tsundoku'; +import p_189 from '@plugins/russian/Bookhamster[ifreedom]'; +import p_190 from '@plugins/russian/Erolate[rulate]'; +import p_191 from '@plugins/russian/EzNovels[hotnovelpub]'; +import p_192 from '@plugins/russian/LitSpace'; +import p_193 from '@plugins/russian/MTLNovel(RU)[mtlnovel]'; +import p_194 from '@plugins/russian/NovelCool(RU)[novelcool]'; +import p_195 from '@plugins/russian/Ranobes(RU)[ranobes]'; +import p_196 from '@plugins/russian/Rulate[rulate]'; +import p_197 from '@plugins/russian/authortoday'; +import p_198 from '@plugins/russian/bookriver'; +import p_199 from '@plugins/russian/ficbook'; +import p_200 from '@plugins/russian/jaomix'; +import p_201 from '@plugins/russian/neobook'; +import p_202 from '@plugins/russian/novelOvh'; +import p_203 from '@plugins/russian/novelTL'; +import p_204 from '@plugins/russian/ranobehub'; +import p_205 from '@plugins/russian/ranobelib'; +import p_206 from '@plugins/russian/ranoberf'; +import p_207 from '@plugins/russian/renovels'; +import p_208 from '@plugins/russian/ruvers'; +import p_209 from '@plugins/russian/topliba'; +import p_210 from '@plugins/russian/zelluloza'; +import p_211 from '@plugins/russian/СвободныйМирРанобэ[ifreedom]'; +import p_212 from '@plugins/spanish/AllNovelRead[lightnovelwp]'; +import p_213 from '@plugins/spanish/AnimesHoy12[madara]'; +import p_214 from '@plugins/spanish/LightNovelDaily[hotnovelpub]'; +import p_215 from '@plugins/spanish/MTLNovel(ES)[mtlnovel]'; +import p_216 from '@plugins/spanish/PanchoTranslations[madara]'; +import p_217 from '@plugins/spanish/TC&Sega[lightnovelwp]'; +import p_218 from '@plugins/spanish/TraduccionesAmistosas[madara]'; +import p_219 from '@plugins/spanish/hasutl'; +import p_220 from '@plugins/spanish/novelasligera'; +import p_221 from '@plugins/spanish/novelawuxia'; +import p_222 from '@plugins/spanish/oasistranslations'; +import p_223 from '@plugins/spanish/skynovels'; +import p_224 from '@plugins/spanish/tunovelaligera'; +import p_225 from '@plugins/spanish/yukitls'; +import p_226 from '@plugins/thai/NovelLucky[madara]'; +import p_227 from '@plugins/thai/NovelPDF[madara]'; +import p_228 from '@plugins/turkish/ArazNovel[madara]'; +import p_229 from '@plugins/turkish/EKTAPLAR[madara]'; +import p_230 from '@plugins/turkish/KodeksLibrary[lightnovelwp]'; +import p_231 from '@plugins/turkish/MangaTR'; +import p_232 from '@plugins/turkish/NABSCANS[madara]'; +import p_233 from '@plugins/turkish/Namevt[lightnovelwp]'; +import p_234 from '@plugins/turkish/NovelTR[lightnovelwp]'; +import p_235 from '@plugins/turkish/Noveloku[madara]'; +import p_236 from '@plugins/turkish/RagnarScans[madara]'; +import p_237 from '@plugins/turkish/ThNovels[hotnovelpub]'; +import p_238 from '@plugins/turkish/TurkceLightNovels[madara]'; +import p_239 from '@plugins/turkish/WebNovelOku[madara]'; +import p_240 from '@plugins/turkish/epiknovel'; +import p_241 from '@plugins/turkish/kakikata[madara]'; +import p_242 from '@plugins/ukrainian/bakainua'; +import p_243 from '@plugins/ukrainian/smakolykytl'; +import p_244 from '@plugins/ukrainian/uaranobeclub'; +import p_245 from '@plugins/vietnamese/LNHako'; +import p_246 from '@plugins/vietnamese/Truyenconect'; +import p_247 from '@plugins/vietnamese/lightnovelvn'; +import p_248 from '@plugins/vietnamese/nettruyen'; +import p_249 from '@plugins/vietnamese/truyenchu'; +import p_250 from '@plugins/vietnamese/truyenfull'; const PLUGINS: Plugin.PluginBase[] = [ p_0, @@ -469,5 +486,22 @@ const PLUGINS: Plugin.PluginBase[] = [ p_231, p_232, p_233, + p_234, + p_235, + p_236, + p_237, + p_238, + p_239, + p_240, + p_241, + p_242, + p_243, + p_244, + p_245, + p_246, + p_247, + p_248, + p_249, + p_250, ]; export default PLUGINS; diff --git a/plugins/multisrc/ifreedom/template.ts b/plugins/multisrc/ifreedom/template.ts index 887b0a940..74d5e0873 100644 --- a/plugins/multisrc/ifreedom/template.ts +++ b/plugins/multisrc/ifreedom/template.ts @@ -95,7 +95,6 @@ class IfreedomPlugin implements Plugin.PluginBase { async parseNovel(novelPath: string): Promise { const html = await fetchApi(this.site + novelPath).then(res => res.text()); - const novel: Plugin.SourceNovel = { path: novelPath, name: '', @@ -140,6 +139,30 @@ class IfreedomPlugin implements Plugin.PluginBase { isReadingSummary = true; } } + + if ( + isReadingSummary && + name === 'span' && + className.includes('open-desc') + ) { + const onclick = attribs['onclick']; + if (onclick) { + const match = onclick.match(/innerHTML\s*=\s*'([\s\S]+?)'/); + if (match && match[1]) { + let fullText = match[1]; + fullText = fullText + .replace(/<br>/gi, '\n') + .replace(//gi, '\n') + .replace(/"/g, '"') + .replace(/'/g, "'") + .replace(/&/g, '&'); + + novel.summary = fullText; + isReadingSummary = false; + } + } + } + if (name === 'img' && isCoverContainer && !novel.cover) { novel.cover = attribs['src']; } @@ -209,11 +232,12 @@ class IfreedomPlugin implements Plugin.PluginBase { if (!text) return; if (isReadingName) novel.name = text.replace(/®/g, '').trim(); - if (isReadingSummary) novel.summary += text + '\n'; + if (isReadingSummary && text !== 'Прочесть полностью') { + novel.summary += text + '\n'; + } if (metaContext) { const shouldRead = isMetaValue || (isMetaRow && !isMetaValue); - if (shouldRead) { if (metaContext === 'author') { if ( @@ -244,7 +268,6 @@ class IfreedomPlugin implements Plugin.PluginBase { } if (name === 'a') isReadingChapterName = false; - if ((name === 'div' || name === 'span') && isReadingChapterDate) { isReadingChapterDate = false; if (tempChapter.path) { @@ -312,18 +335,26 @@ class IfreedomPlugin implements Plugin.PluginBase { } } -function parseStatus(statusString: string): NovelStatus { +function parseStatus(statusString: string): string { const s = statusString.toLowerCase().trim(); - switch (s) { - case 'Перевод активен': - return NovelStatus.Ongoing; - case 'Произведение завершено': - return NovelStatus.Completed; - case 'приостановлен': - return NovelStatus.OnHiatus; - default: - return NovelStatus.Unknown; + + if ( + s.includes('активен') || + s.includes('продолжается') || + s.includes('онгоинг') + ) { + return NovelStatus.Ongoing; + } + + if (s.includes('завершен') || s.includes('конец') || s.includes('закончен')) { + return NovelStatus.Completed; + } + + if (s.includes('приостановлен') || s.includes('заморожен')) { + return NovelStatus.OnHiatus; } + + return NovelStatus.Unknown; } function parseDate(dateString: string = ''): string | null { From 673ffe7861704032538c3866e89661fa05bc328d Mon Sep 17 00:00:00 2001 From: Rider21 <58046032+Rider21@users.noreply.github.com> Date: Tue, 20 Jan 2026 14:16:19 +0300 Subject: [PATCH 3/3] fix parseDate --- plugins/multisrc/ifreedom/template.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/plugins/multisrc/ifreedom/template.ts b/plugins/multisrc/ifreedom/template.ts index 74d5e0873..2a41c61d8 100644 --- a/plugins/multisrc/ifreedom/template.ts +++ b/plugins/multisrc/ifreedom/template.ts @@ -373,11 +373,18 @@ function parseDate(dateString: string = ''): string | null { декабря: 12, }; + // Checking the format "X ч. назад" + const relativeTimeRegex = /(d+)s*ч.?s*назад/; + const match = dateString.match(relativeTimeRegex); + if (match) { + const hoursAgo = parseInt(match[1], 10); + return dayjs().subtract(hoursAgo, 'hour').format('LL'); + } + if (dateString.includes('.')) { const [day, month, year] = dateString.split('.'); - if (day && month && year) { - return dayjs(year + '-' + month + '-' + day).format('LL'); - } + const fullYear = year?.length === 2 ? '20' + year : year; + return dayjs(fullYear + '-' + month + '-' + day).format('LL'); } else if (dateString.includes(' ')) { const [day, month] = dateString.split(' '); if (day && months[month]) { @@ -385,5 +392,6 @@ function parseDate(dateString: string = ''): string | null { return dayjs(year + '-' + months[month] + '-' + day).format('LL'); } } + return dateString || null; }