diff --git a/.dist/nyagami/plugins.json b/.dist/nyagami/plugins.json new file mode 100644 index 0000000..61e0f99 --- /dev/null +++ b/.dist/nyagami/plugins.json @@ -0,0 +1,982 @@ +{ + "العربية": [ + { + "id": "ar-mtl", + "name": "ArMTL[madara]", + "site": "https://ar-mtl.club/", + "lang": "العربية", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/ArMTL[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/armtl.png" + }, + { + "id": "arnovel", + "name": "ArNovel[madara]", + "site": "https://arnovel.me/", + "lang": "العربية", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/ArNovel[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/arnovel.png" + }, + { + "id": "hizomanga", + "name": "HizoManga[madara]", + "site": "https://hizomanga.com/", + "lang": "العربية", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/HizoManga[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/hizomanga.png" + }, + { + "id": "kol-novel", + "name": "Kol Novel[wpmangastream]", + "site": "https://kolnovel.com/", + "lang": "العربية", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/KolNovel[wpmangastream].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/wpmangastream/icons/kol-novel.png" + }, + { + "id": "kolnovel", + "name": "KolNovel", + "site": "https://kolnovel.lol/", + "lang": "العربية", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/kolnovel.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/wpmangastream/icons/kolnovel.png" + }, + { + "id": "novel4up", + "name": "Novel4Up[madara]", + "site": "https://novel4up.com/", + "lang": "العربية", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/Novel4Up[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/novel4up.png" + }, + { + "id": "riwyat", + "name": "Riwyat[madara]", + "site": "https://riwyat.com/", + "lang": "العربية", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/Riwyat[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/riwyat.png" + }, + { + "id": "teamxnovel", + "name": "TeamXNovel[madara]", + "site": "https://teamxnovel.com/", + "lang": "العربية", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/TeamXNovel[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/teamxnovel.png" + } + ], + "中文, 汉语, 漢語": [ + { + "id": "linovelib", + "name": "Linovelib", + "site": "https://www.bilinovel.com", + "lang": "中文, 汉语, 漢語", + "version": "1.0.1", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/chinese/linovelib.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/cn/linovelib/icon.png" + } + ], + "English": [ + { + "id": "1stkissnovel", + "name": "FirstKissNovel[madara]", + "site": "https://1stkissnovel.org/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/FirstKissNovel[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/firstkissnovel.png" + }, + { + "id": "anf.net", + "name": "AllNovelFull", + "site": "https://allnovelfull.net", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/allnovelfull.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/allnovelfull/icon.png" + }, + { + "id": "BLN.com", + "name": "BestLightNovel", + "site": "https://bestlightnovel.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/bestlightnovel.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/bestlightnovel/icon.png" + }, + { + "id": "boxnovel", + "name": "BoxNovel[madara]", + "site": "https://boxnovel.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/BoxNovel[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/boxnovel.png" + }, + { + "id": "clicknovel", + "name": "ClickNovel[madara]", + "site": "https://clicknovel.net/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/ClickNovel[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/clicknovel.png" + }, + { + "id": "comrademao", + "name": "Comrade Mao", + "site": "https://comrademao.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/comrademao.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/comrademao/icon.png" + }, + { + "id": "cratenovel", + "name": "CrateNovel[madara]", + "site": "https://cratenovel.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/CrateNovel[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/cratenovel.png" + }, + { + "id": "daonovel", + "name": "DaoNovel[madara]", + "site": "https://daonovel.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/DaoNovel[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/daonovel.png" + }, + { + "id": "DDL.com", + "name": "Divine Dao Library", + "site": "https://www.divinedaolibrary.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/divinedaolibrary.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/divinedaolibrary/icon.png" + }, + { + "id": "earlynovel", + "name": "Early Novel", + "site": "https://earlynovel.net/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/earlynovel.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/latestnovel.png" + }, + { + "id": "fanTLS", + "name": "Fans Translations[madara]", + "site": "https://fanstranslations.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/FansTranslations[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/fanstranslations.png" + }, + { + "id": "foxaholic", + "name": "Foxaholic", + "site": "https://www.foxaholic.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/foxaholic.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/foxaholic/icon.png" + }, + { + "id": "freenovel.me", + "name": "FreeNovelMe[madara]", + "site": "https://freenovel.me/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/FreeNovelMe[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/freenovelme.png" + }, + { + "id": "FWN.com", + "name": "Web NOVEL", + "site": "https://freewebnovel.com", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/freewebnovel.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/freewebnovel/icon.png" + }, + { + "id": "guavaread", + "name": "Guavaread[madara]", + "site": "https://guavaread.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/Guavaread[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/guavaread.png" + }, + { + "id": "lightnovelpub", + "name": "LightNovelPub", + "site": "https://www.lightnovelpub.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/lightnovelpub.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/lightnovelpub/icon.png" + }, + { + "id": "LightNovelUpdates", + "name": "Light Novel Updates", + "site": "https://www.lightnovelupdates.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/lightnovelupdates.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/lightnovelupdates/icon.png" + }, + { + "id": "lightnovelworld", + "name": "LightNovelWorld", + "site": "https://www.webnovelworld.org/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/lightnovelworld.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/lightnovelworld/icon.png" + }, + { + "id": "lnheaven", + "name": "LightNovelHeaven[madara]", + "site": "https://lightnovelheaven.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/LightNovelHeaven[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/lightnovelheaven.png" + }, + { + "id": "Ltnovel.com", + "name": "Ltnovel[readwn]", + "site": "https://www.ltnovel.com", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/Ltnovel[readwn].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/readwn/icons/ltnovel.png" + }, + { + "id": "lunarletters", + "name": "LunarLetters[madara]", + "site": "https://www.lunarletters.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/LunarLetters[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/lunarletters.png" + }, + { + "id": "mostnovel", + "name": "MostNovel[madara]", + "site": "https://mostnovel.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/MostNovel[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/mostnovel.png" + }, + { + "id": "mtl-novel", + "name": "MTL-Novel[madara]", + "site": "https://mtl-novel.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/MTLNovel[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/mtl-novel.png" + }, + { + "id": "mtlnovel", + "name": "MTL Novel", + "site": "https://www.mtlnovel.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/mtlnovel.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/mtlnovel/icon.png" + }, + { + "id": "mtlnovel.club", + "name": "MTLNovel.Club[madara]", + "site": "https://mtlnovel.club/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/MTLNovelClub[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/mtlnovel.club.png" + }, + { + "id": "mtlreader", + "name": "MTL Reader", + "site": "https://mtlreader.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/mtlreader.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/mtlreader/icon.png" + }, + { + "id": "mysticalmerries", + "name": "MysticalSeries[madara]", + "site": "https://mysticalmerries.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/MysticalSeries[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/mysticalseries.png" + }, + { + "id": "neosekaiTLS", + "name": "NeoSekai Translations[madara]", + "site": "https://www.neosekaitranslations.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NeoSekaiTranslations[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/neosekaitranslations.png" + }, + { + "id": "NF.me", + "name": "NovelFullMe", + "site": "https://novelfull.me/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NovelFullMe.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/novelfullme/icon.png" + }, + { + "id": "nitromanga", + "name": "Nitro Manga", + "site": "https://nitromanga.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/nitromanga.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/nitromanga/icon.png" + }, + { + "id": "NO.net", + "name": "novelsOnline", + "site": "https://novelsonline.net", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NovelOnline.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/coverNotAvailable.jpg" + }, + { + "id": "noblemtl", + "name": "NobleMTL", + "site": "https://noblemtl.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/nobleMTL.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/noblemtl/icon.png" + }, + { + "id": "nocturneTLS", + "name": "Nocturne Translations[madara]", + "site": "https://nocturnetls.net/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NocturneTranslations[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/nocturnetranslations.png" + }, + { + "id": "noobchanTL", + "name": "Noobchan Translation[madara]", + "site": "https://noobchan.xyz/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NoobchanTranslation[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/noobchantranslation.png" + }, + { + "id": "novelbin", + "name": "Novel Bin", + "site": "https://novelmax.net/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/novelbin.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/novelbin/icon.png" + }, + { + "id": "novelfull", + "name": "NovelFull", + "site": "https://novelfull.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/novelfull.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/novelfull/icon.png" + }, + { + "id": "novelhall", + "name": "Novel Hall", + "site": "https://novelhall.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/novelhall.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/novelhall/icon.png" + }, + { + "id": "novelmultiverse", + "name": "NovelMultiverse[madara]", + "site": "https://www.novelmultiverse.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NovelMultiverse[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/novelmultiverse.png" + }, + { + "id": "novelr18", + "name": "NovelR18[madara]", + "site": "https://novelr18.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NovelR18[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/novelr18.png" + }, + { + "id": "novelroom", + "name": "Novelroom.net[madara]", + "site": "https://novelroom.net/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/Novelroomnet[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/novelroom.net.png" + }, + { + "id": "novelstic", + "name": "Novelstic[madara]", + "site": "https://novelstic.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/Novelstic[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/novelstic.png" + }, + { + "id": "novelTL", + "name": "NovelTranslate[madara]", + "site": "https://noveltranslate.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NovelTranslate[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/noveltranslate.png" + }, + { + "id": "novelupdates", + "name": "Novel Updates", + "site": "https://www.novelupdates.com/", + "lang": "English", + "version": "0.5.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/novelupdates.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/novelupdates/icon.png" + }, + { + "id": "onlymtl", + "name": "OnlyMTL[madara]", + "site": "https://www.onlymtl.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/OnlyMTL[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/onlymtl.png" + }, + { + "id": "pandamtl", + "name": "PandaMTL", + "site": "https://pandamtl.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/pandaMTL.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/wordpress/icon.png" + }, + { + "id": "readwebnovels", + "name": "ReadWebNovels[madara]", + "site": "https://readwebnovels.net/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/ReadWebNovels[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/readwebnovels.png" + }, + { + "id": "sleeptTLS", + "name": "SleepyTranslations[madara]", + "site": "https://sleepytranslations.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/SleepyTranslations[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/sleepytranslations.png" + }, + { + "id": "sonicmtl", + "name": "SonicMTL[madara]", + "site": "https://www.sonicmtl.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/SonicMTL[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/sonicmtl.png" + }, + { + "id": "sugarbbscan", + "name": "Sugar Babies[madara]", + "site": "https://sugarbbscan.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/SugarBabies[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/sugarbabies.png" + }, + { + "id": "sweetEscapeTL", + "name": "Sweet Escape Translations[madara]", + "site": "https://sweetescapetranslations.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/SweetEscapeTranslations[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/sweetescapetranslations.png" + }, + { + "id": "webnovelover", + "name": "WebNovelLover[madara]", + "site": "https://www.webnovelover.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/WebNovelLover[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/webnovellover.png" + }, + { + "id": "wuxiacity", + "name": "Wuxiacity[readwn]", + "site": "https://www.wuxiacity.com", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/Wuxiacity[readwn].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/readwn/icons/wuxiacity.png" + }, + { + "id": "wuxiap", + "name": "Wuxiap[readwn]", + "site": "https://www.wuxiap.com", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/Wuxiap[readwn].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/readwn/icons/wuxiap.png" + }, + { + "id": "wuxiaworld", + "name": "Wuxia World", + "site": "https://www.wuxiaworld.com/", + "lang": "English", + "version": "0.5.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/wuxiaworld.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/wuxiaworld/icon.png" + }, + { + "id": "wuxiaworld.site", + "name": "WuxiaWorld.Site[madara]", + "site": "https://wuxiaworld.site/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/WuxiaWorldSite[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/wuxiaworld.site.png" + }, + { + "id": "zetroTL", + "name": "Zetro Translation[madara]", + "site": "https://zetrotranslation.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/ZetroTranslation[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/zetrotranslation.png" + }, + { + "id": "zinnovel", + "name": "ZinnNovel[madara]", + "site": "https://zinnovel.com/", + "lang": "English", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/ZinnNovel[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/zinnnovel.png" + } + ], + "français, française": [ + { + "id": "chireads.com", + "name": "Chireads", + "site": "https://chireads.com", + "lang": "français, française", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/french/chireads.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/fr/chireads/icon.png" + }, + { + "id": "lightnovelfr", + "name": "Ligh Novel FR[wpmangastream]", + "site": "https://lightnovelfr.com/", + "lang": "français, française", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/french/LighNovelFR[wpmangastream].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/wpmangastream/icons/lightnovelfr.png" + }, + { + "id": "NDG.com", + "name": "NovelDeGlace", + "site": "https://noveldeglace.com/", + "lang": "français, française", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/french/noveldeglace.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/fr/noveldeglace/icon.png" + } + ], + "Bahasa Indonesia": [ + { + "id": "IDWN.id", + "name": "IndoWebNovel", + "site": "https://indowebnovel.id/id/", + "lang": "Bahasa Indonesia", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/indonesian/indowebnovel.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/id/indowebnovel/icon.png" + }, + { + "id": "meionovel", + "name": "MeioNovel[madara]", + "site": "https://meionovel.id/", + "lang": "Bahasa Indonesia", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/indonesian/MeioNovel[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/meionovel.png" + }, + { + "id": "morenovel", + "name": "MoreNovel[madara]", + "site": "https://morenovel.net/", + "lang": "Bahasa Indonesia", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/indonesian/MoreNovel[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/morenovel.png" + }, + { + "id": "novelringan.com", + "name": "NovelRingan", + "site": "https://novelringan.com/", + "lang": "Bahasa Indonesia", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/indonesian/novelringan.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/id/novelringan/icon.png" + }, + { + "id": "sakura.id", + "name": "SakuraNovel", + "site": "https://sakuranovel.id/", + "lang": "Bahasa Indonesia", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/indonesian/sakuranovel.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/id/sakuranovel/icon.png" + }, + { + "id": "wbnovel", + "name": "WBNovel[madara]", + "site": "https://wbnovel.com/", + "lang": "Bahasa Indonesia", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/indonesian/WBNovel[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/wbnovel.png" + } + ], + "日本語": [ + { + "id": "yomou.syosetu", + "name": "Syosetu", + "site": "https://yomou.syosetu.com/", + "lang": "日本語", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/japanese/Syosetu.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/jp/syosetu/icon.png" + } + ], + "한국어, 조선말": [ + { + "id": "agit.xyz", + "name": "Agitoon", + "site": "https://agit501.xyz/", + "lang": "한국어, 조선말", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/korean/Agitoon.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/kr/agitoon/agit.png" + } + ], + "Português": [ + { + "id": "lightnovelbrasil", + "name": "Light Novel Brasil", + "site": "https://lightnovelbrasil.com/", + "lang": "Português", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/portuguese/lightnovelbrasil.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/wpmangastream/icons/lightnovelbrasil.png" + } + ], + "русский язык": [ + { + "id": "AT", + "name": "Автор Тудей", + "site": "https://author.today", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/authortoday.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/authortoday/icon.png" + }, + { + "id": "bookhamster", + "name": "Bookhamster[ifreedom]", + "site": "https://bookhamster.ru", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/Bookhamster[ifreedom].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/ifreedom/icons/bookhamster.png" + }, + { + "id": "bookriver", + "name": "Bookriver", + "site": "https://bookriver.ru", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/bookriver.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/bookriver/icon.png" + }, + { + "id": "erolate", + "name": "Erolate[rulate]", + "site": "https://erolate.com", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/Erolate[rulate].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/rulate/icons/erolate.png" + }, + { + "id": "ficbook", + "name": "ficbook", + "site": "https://ficbook.net", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/ficbook.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/ficbook/icon.png" + }, + { + "id": "freedlit.space", + "name": "LitSpace", + "site": "https://freedlit.space", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/LitSpace.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/freedlit/icon.png" + }, + { + "id": "ifreedom", + "name": "Свободный Мир Ранобэ[ifreedom]", + "site": "https://ifreedom.su", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/СвободныйМирРанобэ[ifreedom].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/ifreedom/icons/ifreedom.png" + }, + { + "id": "jaomix.ru", + "name": "Jaomix", + "site": "https://jaomix.ru", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/jaomix.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/jaomix/icon.png" + }, + { + "id": "ReN", + "name": "Renovels", + "site": "https://renovels.org", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/renovels.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/renovels/icon.png" + }, + { + "id": "RLIB", + "name": "RanobeLib", + "site": "https://ranobelib.me", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/ranobelib.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/ranobelib/icon.png" + }, + { + "id": "RNBH.org", + "name": "RanobeHub", + "site": "https://ranobehub.org/", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/ranobehub.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/ranobehub/icon.png" + }, + { + "id": "RNRF", + "name": "РанобэРФ", + "site": "https://ранобэ.рф", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/ranoberf.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/ranoberf/icon.png" + }, + { + "id": "TL", + "name": "NovelTL", + "site": "https://novel.tl", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/novelTL.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/noveltl/icon.png" + }, + { + "id": "tl.rulate", + "name": "Rulate[rulate]", + "site": "https://tl.rulate.ru", + "lang": "русский язык", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/Rulate[rulate].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/rulate/icons/rulate.png" + } + ], + "español, castellano": [ + { + "id": "awuxia.com", + "name": "ReinoWuxia", + "site": "http://www.reinowuxia.com/", + "lang": "español, castellano", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/novelawuxia.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/novelawuxia/icon.png" + }, + { + "id": "HasuTL", + "name": "Hasu Translations", + "site": "https://hasutl.wordpress.com/", + "lang": "español, castellano", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/hasutl.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/hasutl/icon.png" + }, + { + "id": "ligera.com", + "name": "Novelas Ligera", + "site": "https://novelasligera.com/", + "lang": "español, castellano", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/novelasligera.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/novelasligera/icon.png" + }, + { + "id": "oasisTL.wp", + "name": "Oasis Translations", + "site": "https://oasistranslations.wordpress.com/", + "lang": "español, castellano", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/oasistranslations.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/oasistranslations/icon.png" + }, + { + "id": "skynovels.net", + "name": "SkyNovels", + "site": "https://www.skynovels.net/", + "lang": "español, castellano", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/skynovels.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/skynovels/icon.png" + }, + { + "id": "tunovelaligera", + "name": "TuNovelaLigera", + "site": "https://tunovelaligera.com/", + "lang": "español, castellano", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/tunovelaligera.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/tunovelaligera/icon.png" + }, + { + "id": "yuukitls.com", + "name": "Yuuki Tls", + "site": "https://yuukitls.com/", + "lang": "español, castellano", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/yukitls.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/yuukitls/icon.png" + } + ], + "Türkçe": [ + { + "id": "epiknovel.com", + "name": "EpikNovel", + "site": "https://www.epiknovel.com/", + "lang": "Türkçe", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/turkish/epiknovel.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/tr/epiknovel/icon.png" + }, + { + "id": "lshnovel", + "name": "Liebe Schnee Hiver Novel", + "site": "https://lshnovel.com/", + "lang": "Türkçe", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/turkish/lshnovel.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/wpmangastream/icons/lshnovel.png" + }, + { + "id": "turkcelightnovels", + "name": "TurkceLightNovels[madara]", + "site": "https://turkcelightnovels.com/", + "lang": "Türkçe", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/turkish/TurkceLightNovels[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/turkcelightnovels.png" + }, + { + "id": "webnoveloku", + "name": "WebNovelOku [madara]", + "site": "https://www.webnoveloku.com/", + "lang": "Türkçe", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/turkish/WebNovelOku[madara].js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/webnoveloku.png" + } + ], + "Україна": [ + { + "id": "smakolykytl", + "name": "Смаколики", + "site": "https://smakolykytl.site/", + "lang": "Україна", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/ukraine/smakolykytl.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ua/smakolykytl/icon.png" + } + ], + "Tiếng Việt": [ + { + "id": "ln.hako", + "name": "Hako", + "site": "https://ln.hako.vn", + "lang": "Tiếng Việt", + "version": "1.0.1", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/vietnamese/LNHako.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/vi/hakolightnovel/icon.png" + }, + { + "id": "truyenfull", + "name": "Truyện Full", + "site": "https://truyenfull.vn", + "lang": "Tiếng Việt", + "version": "1.0.0", + "url": "https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/vietnamese/truyenfull.js", + "iconUrl": "https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/vi/truyenfull/icon.png" + } + ] +} \ No newline at end of file diff --git a/.dist/nyagami/plugins.min.json b/.dist/nyagami/plugins.min.json new file mode 100644 index 0000000..d06b67a --- /dev/null +++ b/.dist/nyagami/plugins.min.json @@ -0,0 +1 @@ +{"العربية":[{"id":"ar-mtl","name":"ArMTL[madara]","site":"https://ar-mtl.club/","lang":"العربية","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/ArMTL[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/armtl.png"},{"id":"arnovel","name":"ArNovel[madara]","site":"https://arnovel.me/","lang":"العربية","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/ArNovel[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/arnovel.png"},{"id":"hizomanga","name":"HizoManga[madara]","site":"https://hizomanga.com/","lang":"العربية","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/HizoManga[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/hizomanga.png"},{"id":"kol-novel","name":"Kol Novel[wpmangastream]","site":"https://kolnovel.com/","lang":"العربية","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/KolNovel[wpmangastream].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/wpmangastream/icons/kol-novel.png"},{"id":"kolnovel","name":"KolNovel","site":"https://kolnovel.lol/","lang":"العربية","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/kolnovel.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/wpmangastream/icons/kolnovel.png"},{"id":"novel4up","name":"Novel4Up[madara]","site":"https://novel4up.com/","lang":"العربية","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/Novel4Up[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/novel4up.png"},{"id":"riwyat","name":"Riwyat[madara]","site":"https://riwyat.com/","lang":"العربية","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/Riwyat[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/riwyat.png"},{"id":"teamxnovel","name":"TeamXNovel[madara]","site":"https://teamxnovel.com/","lang":"العربية","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/arabic/TeamXNovel[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/teamxnovel.png"}],"中文, 汉语, 漢語":[{"id":"linovelib","name":"Linovelib","site":"https://www.bilinovel.com","lang":"中文, 汉语, 漢語","version":"1.0.1","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/chinese/linovelib.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/cn/linovelib/icon.png"}],"English":[{"id":"1stkissnovel","name":"FirstKissNovel[madara]","site":"https://1stkissnovel.org/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/FirstKissNovel[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/firstkissnovel.png"},{"id":"anf.net","name":"AllNovelFull","site":"https://allnovelfull.net","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/allnovelfull.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/allnovelfull/icon.png"},{"id":"BLN.com","name":"BestLightNovel","site":"https://bestlightnovel.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/bestlightnovel.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/bestlightnovel/icon.png"},{"id":"boxnovel","name":"BoxNovel[madara]","site":"https://boxnovel.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/BoxNovel[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/boxnovel.png"},{"id":"clicknovel","name":"ClickNovel[madara]","site":"https://clicknovel.net/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/ClickNovel[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/clicknovel.png"},{"id":"comrademao","name":"Comrade Mao","site":"https://comrademao.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/comrademao.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/comrademao/icon.png"},{"id":"cratenovel","name":"CrateNovel[madara]","site":"https://cratenovel.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/CrateNovel[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/cratenovel.png"},{"id":"daonovel","name":"DaoNovel[madara]","site":"https://daonovel.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/DaoNovel[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/daonovel.png"},{"id":"DDL.com","name":"Divine Dao Library","site":"https://www.divinedaolibrary.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/divinedaolibrary.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/divinedaolibrary/icon.png"},{"id":"earlynovel","name":"Early Novel","site":"https://earlynovel.net/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/earlynovel.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/latestnovel.png"},{"id":"fanTLS","name":"Fans Translations[madara]","site":"https://fanstranslations.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/FansTranslations[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/fanstranslations.png"},{"id":"foxaholic","name":"Foxaholic","site":"https://www.foxaholic.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/foxaholic.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/foxaholic/icon.png"},{"id":"freenovel.me","name":"FreeNovelMe[madara]","site":"https://freenovel.me/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/FreeNovelMe[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/freenovelme.png"},{"id":"FWN.com","name":"Web NOVEL","site":"https://freewebnovel.com","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/freewebnovel.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/freewebnovel/icon.png"},{"id":"guavaread","name":"Guavaread[madara]","site":"https://guavaread.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/Guavaread[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/guavaread.png"},{"id":"lightnovelpub","name":"LightNovelPub","site":"https://www.lightnovelpub.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/lightnovelpub.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/lightnovelpub/icon.png"},{"id":"LightNovelUpdates","name":"Light Novel Updates","site":"https://www.lightnovelupdates.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/lightnovelupdates.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/lightnovelupdates/icon.png"},{"id":"lightnovelworld","name":"LightNovelWorld","site":"https://www.webnovelworld.org/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/lightnovelworld.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/lightnovelworld/icon.png"},{"id":"lnheaven","name":"LightNovelHeaven[madara]","site":"https://lightnovelheaven.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/LightNovelHeaven[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/lightnovelheaven.png"},{"id":"Ltnovel.com","name":"Ltnovel[readwn]","site":"https://www.ltnovel.com","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/Ltnovel[readwn].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/readwn/icons/ltnovel.png"},{"id":"lunarletters","name":"LunarLetters[madara]","site":"https://www.lunarletters.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/LunarLetters[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/lunarletters.png"},{"id":"mostnovel","name":"MostNovel[madara]","site":"https://mostnovel.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/MostNovel[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/mostnovel.png"},{"id":"mtl-novel","name":"MTL-Novel[madara]","site":"https://mtl-novel.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/MTLNovel[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/mtl-novel.png"},{"id":"mtlnovel","name":"MTL Novel","site":"https://www.mtlnovel.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/mtlnovel.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/mtlnovel/icon.png"},{"id":"mtlnovel.club","name":"MTLNovel.Club[madara]","site":"https://mtlnovel.club/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/MTLNovelClub[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/mtlnovel.club.png"},{"id":"mtlreader","name":"MTL Reader","site":"https://mtlreader.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/mtlreader.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/mtlreader/icon.png"},{"id":"mysticalmerries","name":"MysticalSeries[madara]","site":"https://mysticalmerries.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/MysticalSeries[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/mysticalseries.png"},{"id":"neosekaiTLS","name":"NeoSekai Translations[madara]","site":"https://www.neosekaitranslations.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NeoSekaiTranslations[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/neosekaitranslations.png"},{"id":"NF.me","name":"NovelFullMe","site":"https://novelfull.me/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NovelFullMe.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/novelfullme/icon.png"},{"id":"nitromanga","name":"Nitro Manga","site":"https://nitromanga.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/nitromanga.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/nitromanga/icon.png"},{"id":"NO.net","name":"novelsOnline","site":"https://novelsonline.net","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NovelOnline.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/coverNotAvailable.jpg"},{"id":"noblemtl","name":"NobleMTL","site":"https://noblemtl.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/nobleMTL.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/noblemtl/icon.png"},{"id":"nocturneTLS","name":"Nocturne Translations[madara]","site":"https://nocturnetls.net/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NocturneTranslations[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/nocturnetranslations.png"},{"id":"noobchanTL","name":"Noobchan Translation[madara]","site":"https://noobchan.xyz/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NoobchanTranslation[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/noobchantranslation.png"},{"id":"novelbin","name":"Novel Bin","site":"https://novelmax.net/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/novelbin.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/novelbin/icon.png"},{"id":"novelfull","name":"NovelFull","site":"https://novelfull.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/novelfull.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/novelfull/icon.png"},{"id":"novelhall","name":"Novel Hall","site":"https://novelhall.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/novelhall.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/novelhall/icon.png"},{"id":"novelmultiverse","name":"NovelMultiverse[madara]","site":"https://www.novelmultiverse.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NovelMultiverse[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/novelmultiverse.png"},{"id":"novelr18","name":"NovelR18[madara]","site":"https://novelr18.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NovelR18[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/novelr18.png"},{"id":"novelroom","name":"Novelroom.net[madara]","site":"https://novelroom.net/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/Novelroomnet[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/novelroom.net.png"},{"id":"novelstic","name":"Novelstic[madara]","site":"https://novelstic.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/Novelstic[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/novelstic.png"},{"id":"novelTL","name":"NovelTranslate[madara]","site":"https://noveltranslate.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/NovelTranslate[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/noveltranslate.png"},{"id":"novelupdates","name":"Novel Updates","site":"https://www.novelupdates.com/","lang":"English","version":"0.5.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/novelupdates.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/novelupdates/icon.png"},{"id":"onlymtl","name":"OnlyMTL[madara]","site":"https://www.onlymtl.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/OnlyMTL[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/onlymtl.png"},{"id":"pandamtl","name":"PandaMTL","site":"https://pandamtl.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/pandaMTL.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/wordpress/icon.png"},{"id":"readwebnovels","name":"ReadWebNovels[madara]","site":"https://readwebnovels.net/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/ReadWebNovels[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/readwebnovels.png"},{"id":"sleeptTLS","name":"SleepyTranslations[madara]","site":"https://sleepytranslations.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/SleepyTranslations[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/sleepytranslations.png"},{"id":"sonicmtl","name":"SonicMTL[madara]","site":"https://www.sonicmtl.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/SonicMTL[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/sonicmtl.png"},{"id":"sugarbbscan","name":"Sugar Babies[madara]","site":"https://sugarbbscan.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/SugarBabies[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/sugarbabies.png"},{"id":"sweetEscapeTL","name":"Sweet Escape Translations[madara]","site":"https://sweetescapetranslations.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/SweetEscapeTranslations[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/sweetescapetranslations.png"},{"id":"webnovelover","name":"WebNovelLover[madara]","site":"https://www.webnovelover.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/WebNovelLover[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/webnovellover.png"},{"id":"wuxiacity","name":"Wuxiacity[readwn]","site":"https://www.wuxiacity.com","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/Wuxiacity[readwn].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/readwn/icons/wuxiacity.png"},{"id":"wuxiap","name":"Wuxiap[readwn]","site":"https://www.wuxiap.com","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/Wuxiap[readwn].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/readwn/icons/wuxiap.png"},{"id":"wuxiaworld","name":"Wuxia World","site":"https://www.wuxiaworld.com/","lang":"English","version":"0.5.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/wuxiaworld.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/en/wuxiaworld/icon.png"},{"id":"wuxiaworld.site","name":"WuxiaWorld.Site[madara]","site":"https://wuxiaworld.site/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/WuxiaWorldSite[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/wuxiaworld.site.png"},{"id":"zetroTL","name":"Zetro Translation[madara]","site":"https://zetrotranslation.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/ZetroTranslation[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/zetrotranslation.png"},{"id":"zinnovel","name":"ZinnNovel[madara]","site":"https://zinnovel.com/","lang":"English","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/english/ZinnNovel[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/zinnnovel.png"}],"français, française":[{"id":"chireads.com","name":"Chireads","site":"https://chireads.com","lang":"français, française","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/french/chireads.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/fr/chireads/icon.png"},{"id":"lightnovelfr","name":"Ligh Novel FR[wpmangastream]","site":"https://lightnovelfr.com/","lang":"français, française","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/french/LighNovelFR[wpmangastream].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/wpmangastream/icons/lightnovelfr.png"},{"id":"NDG.com","name":"NovelDeGlace","site":"https://noveldeglace.com/","lang":"français, française","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/french/noveldeglace.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/fr/noveldeglace/icon.png"}],"Bahasa Indonesia":[{"id":"IDWN.id","name":"IndoWebNovel","site":"https://indowebnovel.id/id/","lang":"Bahasa Indonesia","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/indonesian/indowebnovel.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/id/indowebnovel/icon.png"},{"id":"meionovel","name":"MeioNovel[madara]","site":"https://meionovel.id/","lang":"Bahasa Indonesia","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/indonesian/MeioNovel[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/meionovel.png"},{"id":"morenovel","name":"MoreNovel[madara]","site":"https://morenovel.net/","lang":"Bahasa Indonesia","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/indonesian/MoreNovel[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/morenovel.png"},{"id":"novelringan.com","name":"NovelRingan","site":"https://novelringan.com/","lang":"Bahasa Indonesia","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/indonesian/novelringan.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/id/novelringan/icon.png"},{"id":"sakura.id","name":"SakuraNovel","site":"https://sakuranovel.id/","lang":"Bahasa Indonesia","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/indonesian/sakuranovel.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/id/sakuranovel/icon.png"},{"id":"wbnovel","name":"WBNovel[madara]","site":"https://wbnovel.com/","lang":"Bahasa Indonesia","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/indonesian/WBNovel[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/wbnovel.png"}],"日本語":[{"id":"yomou.syosetu","name":"Syosetu","site":"https://yomou.syosetu.com/","lang":"日本語","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/japanese/Syosetu.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/jp/syosetu/icon.png"}],"한국어, 조선말":[{"id":"agit.xyz","name":"Agitoon","site":"https://agit501.xyz/","lang":"한국어, 조선말","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/korean/Agitoon.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/kr/agitoon/agit.png"}],"Português":[{"id":"lightnovelbrasil","name":"Light Novel Brasil","site":"https://lightnovelbrasil.com/","lang":"Português","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/portuguese/lightnovelbrasil.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/wpmangastream/icons/lightnovelbrasil.png"}],"русский язык":[{"id":"AT","name":"Автор Тудей","site":"https://author.today","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/authortoday.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/authortoday/icon.png"},{"id":"bookhamster","name":"Bookhamster[ifreedom]","site":"https://bookhamster.ru","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/Bookhamster[ifreedom].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/ifreedom/icons/bookhamster.png"},{"id":"bookriver","name":"Bookriver","site":"https://bookriver.ru","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/bookriver.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/bookriver/icon.png"},{"id":"erolate","name":"Erolate[rulate]","site":"https://erolate.com","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/Erolate[rulate].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/rulate/icons/erolate.png"},{"id":"ficbook","name":"ficbook","site":"https://ficbook.net","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/ficbook.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/ficbook/icon.png"},{"id":"freedlit.space","name":"LitSpace","site":"https://freedlit.space","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/LitSpace.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/freedlit/icon.png"},{"id":"ifreedom","name":"Свободный Мир Ранобэ[ifreedom]","site":"https://ifreedom.su","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/СвободныйМирРанобэ[ifreedom].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/ifreedom/icons/ifreedom.png"},{"id":"jaomix.ru","name":"Jaomix","site":"https://jaomix.ru","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/jaomix.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/jaomix/icon.png"},{"id":"ReN","name":"Renovels","site":"https://renovels.org","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/renovels.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/renovels/icon.png"},{"id":"RLIB","name":"RanobeLib","site":"https://ranobelib.me","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/ranobelib.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/ranobelib/icon.png"},{"id":"RNBH.org","name":"RanobeHub","site":"https://ranobehub.org/","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/ranobehub.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/ranobehub/icon.png"},{"id":"RNRF","name":"РанобэРФ","site":"https://ранобэ.рф","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/ranoberf.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/ranoberf/icon.png"},{"id":"TL","name":"NovelTL","site":"https://novel.tl","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/novelTL.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ru/noveltl/icon.png"},{"id":"tl.rulate","name":"Rulate[rulate]","site":"https://tl.rulate.ru","lang":"русский язык","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/russian/Rulate[rulate].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/rulate/icons/rulate.png"}],"español, castellano":[{"id":"awuxia.com","name":"ReinoWuxia","site":"http://www.reinowuxia.com/","lang":"español, castellano","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/novelawuxia.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/novelawuxia/icon.png"},{"id":"HasuTL","name":"Hasu Translations","site":"https://hasutl.wordpress.com/","lang":"español, castellano","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/hasutl.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/hasutl/icon.png"},{"id":"ligera.com","name":"Novelas Ligera","site":"https://novelasligera.com/","lang":"español, castellano","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/novelasligera.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/novelasligera/icon.png"},{"id":"oasisTL.wp","name":"Oasis Translations","site":"https://oasistranslations.wordpress.com/","lang":"español, castellano","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/oasistranslations.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/oasistranslations/icon.png"},{"id":"skynovels.net","name":"SkyNovels","site":"https://www.skynovels.net/","lang":"español, castellano","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/skynovels.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/skynovels/icon.png"},{"id":"tunovelaligera","name":"TuNovelaLigera","site":"https://tunovelaligera.com/","lang":"español, castellano","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/tunovelaligera.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/tunovelaligera/icon.png"},{"id":"yuukitls.com","name":"Yuuki Tls","site":"https://yuukitls.com/","lang":"español, castellano","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/spanish/yukitls.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/es/yuukitls/icon.png"}],"Türkçe":[{"id":"epiknovel.com","name":"EpikNovel","site":"https://www.epiknovel.com/","lang":"Türkçe","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/turkish/epiknovel.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/tr/epiknovel/icon.png"},{"id":"lshnovel","name":"Liebe Schnee Hiver Novel","site":"https://lshnovel.com/","lang":"Türkçe","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/turkish/lshnovel.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/wpmangastream/icons/lshnovel.png"},{"id":"turkcelightnovels","name":"TurkceLightNovels[madara]","site":"https://turkcelightnovels.com/","lang":"Türkçe","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/turkish/TurkceLightNovels[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/turkcelightnovels.png"},{"id":"webnoveloku","name":"WebNovelOku [madara]","site":"https://www.webnoveloku.com/","lang":"Türkçe","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/turkish/WebNovelOku[madara].js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/multisrc/madara/icons/webnoveloku.png"}],"Україна":[{"id":"smakolykytl","name":"Смаколики","site":"https://smakolykytl.site/","lang":"Україна","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/ukraine/smakolykytl.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/ua/smakolykytl/icon.png"}],"Tiếng Việt":[{"id":"ln.hako","name":"Hako","site":"https://ln.hako.vn","lang":"Tiếng Việt","version":"1.0.1","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/vietnamese/LNHako.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/vi/hakolightnovel/icon.png"},{"id":"truyenfull","name":"Truyện Full","site":"https://truyenfull.vn","lang":"Tiếng Việt","version":"1.0.0","url":"https://raw.githubusercontent.com/nyagami/plugins/vi/.js/plugins/vietnamese/truyenfull.js","iconUrl":"https://raw.githubusercontent.com/nyagami/plugins/vi/icons/src/vi/truyenfull/icon.png"}]} \ No newline at end of file diff --git a/.js/plugins/vietnamese/LNHako.js b/.js/plugins/vietnamese/LNHako.js index 76ef99d..ce1c425 100644 --- a/.js/plugins/vietnamese/LNHako.js +++ b/.js/plugins/vietnamese/LNHako.js @@ -40,13 +40,86 @@ var cheerio_1 = require("cheerio"); var fetch_1 = require("@libs/fetch"); var isAbsoluteUrl_1 = require("@libs/isAbsoluteUrl"); var novelStatus_1 = require("@libs/novelStatus"); +var filterInputs_1 = require("@libs/filterInputs"); var HakoPlugin = /** @class */ (function () { function HakoPlugin() { this.id = "ln.hako"; this.name = "Hako"; this.icon = "src/vi/hakolightnovel/icon.png"; this.site = "https://ln.hako.vn"; - this.version = "1.0.0"; + this.version = "1.0.1"; + this.filters = { + alphabet: { + type: filterInputs_1.FilterTypes.Picker, + value: "", + label: "Chữ cái", + options: [ + { label: 'Tất cả', value: '' }, + { label: 'Khác', value: 'khac' }, + { label: 'A', value: 'a' }, + { label: 'B', value: 'b' }, + { label: 'C', value: 'c' }, + { label: 'D', value: 'd' }, + { label: 'E', value: 'e' }, + { label: 'F', value: 'f' }, + { label: 'G', value: 'g' }, + { label: 'H', value: 'h' }, + { label: 'I', value: 'i' }, + { label: 'J', value: 'j' }, + { label: 'K', value: 'k' }, + { label: 'L', value: 'l' }, + { label: 'M', value: 'm' }, + { label: 'N', value: 'n' }, + { label: 'O', value: 'o' }, + { label: 'P', value: 'p' }, + { label: 'Q', value: 'q' }, + { label: 'R', value: 'r' }, + { label: 'S', value: 's' }, + { label: 'T', value: 't' }, + { label: 'U', value: 'u' }, + { label: 'V', value: 'v' }, + { label: 'W', value: 'w' }, + { label: 'X', value: 'x' }, + { label: 'Y', value: 'y' }, + { label: 'Z', value: 'z' }, + ] + }, + type: { + type: filterInputs_1.FilterTypes.CheckboxGroup, + label: "Phân loại", + value: [], + options: [ + { label: "Truyện dịch", value: "truyendich" }, + { label: "Truyện sáng tác", value: "sangtac" }, + { label: "Convert", value: "convert" } + ] + }, + status: { + type: filterInputs_1.FilterTypes.CheckboxGroup, + label: "Tình trạng", + value: [], + options: [ + { label: "Đang tiến hành", value: "dangtienhanh" }, + { label: "Tạm ngưng", value: "tamngung" }, + { label: "Đã hoàn thành", value: "hoanthanh" } + ] + }, + sort: { + type: filterInputs_1.FilterTypes.Picker, + label: "Sắp xếp", + value: "top", + options: [ + { label: "A-Z", value: "tentruyen" }, + { label: "Z-A", value: "tentruyenza" }, + { label: "Mới cập nhật", value: "capnhat" }, + { label: "Truyện mới", value: "truyenmoi" }, + { label: "Theo dõi", value: "theodoi" }, + { label: "Top toàn thời gian", value: "top" }, + { label: "Top tháng", value: "topthang" }, + { label: "Số từ", value: "sotu" }, + ] + } + }; } HakoPlugin.prototype.parseNovels = function (loadedCheerio) { var _this = this; @@ -75,21 +148,34 @@ var HakoPlugin = /** @class */ (function () { }); return novels; }; - HakoPlugin.prototype.popularNovels = function (pageNo, options) { + HakoPlugin.prototype.popularNovels = function (pageNo, _a) { + var showLatestNovels = _a.showLatestNovels, filters = _a.filters; return __awaiter(this, void 0, void 0, function () { - var link, result, body, loadedCheerio; - return __generator(this, function (_a) { - switch (_a.label) { + var link, params, _i, _b, novelType, _c, _d, status_1, result, body, loadedCheerio; + return __generator(this, function (_e) { + switch (_e.label) { case 0: - link = this.site + - "/danh-sach?truyendich=1&sapxep=topthang&page=" + - pageNo; + link = this.site + "/danh-sach"; + if (filters.alphabet.value) { + link += "/" + filters.alphabet.value; + } + params = new URLSearchParams(); + for (_i = 0, _b = filters.type.value; _i < _b.length; _i++) { + novelType = _b[_i]; + params.append(novelType, "1"); + } + for (_c = 0, _d = filters.status.value; _c < _d.length; _c++) { + status_1 = _d[_c]; + params.append(status_1, "1"); + } + params.append("sapxep", filters.sort.value); + link += '?' + params.toString() + '&page=' + pageNo; return [4 /*yield*/, fetch(link)]; case 1: - result = _a.sent(); + result = _e.sent(); return [4 /*yield*/, result.text()]; case 2: - body = _a.sent(); + body = _e.sent(); loadedCheerio = (0, cheerio_1.load)(body); return [2 /*return*/, this.parseNovels(loadedCheerio)]; } diff --git a/.js/plugins/vietnamese/truyenfull.js b/.js/plugins/vietnamese/truyenfull.js new file mode 100644 index 0000000..34050b3 --- /dev/null +++ b/.js/plugins/vietnamese/truyenfull.js @@ -0,0 +1,203 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var cheerio_1 = require("cheerio"); +var fetch_1 = require("@libs/fetch"); +var novelStatus_1 = require("@libs/novelStatus"); +var TruyenFull = /** @class */ (function () { + function TruyenFull() { + this.id = "truyenfull"; + this.name = "Truyện Full"; + this.icon = "src/vi/truyenfull/icon.png"; + this.site = "https://truyenfull.vn"; + this.version = "1.0.0"; + } + TruyenFull.prototype.parseNovels = function (loadedCheerio) { + var novels = []; + loadedCheerio(".list-truyen .row").each(function (idx, ele) { + var novelName = loadedCheerio(ele) + .find("h3.truyen-title > a") + .text(); + var novelCover = loadedCheerio(ele).find("div[data-classname='cover']").attr("data-image"); + var novelUrl = loadedCheerio(ele) + .find("h3.truyen-title > a") + .attr("href"); + if (novelUrl) { + novels.push({ + name: novelName, + cover: novelCover, + url: novelUrl + }); + } + }); + return novels; + }; + TruyenFull.prototype.popularNovels = function (pageNo, options) { + return __awaiter(this, void 0, void 0, function () { + var url, result, body, loadedCheerio; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + url = "".concat(this.site, "/danh-sach/truyen-hot/trang-").concat(pageNo, "/"); + return [4 /*yield*/, fetch(url)]; + case 1: + result = _a.sent(); + return [4 /*yield*/, result.text()]; + case 2: + body = _a.sent(); + loadedCheerio = (0, cheerio_1.load)(body); + return [2 /*return*/, this.parseNovels(loadedCheerio)]; + } + }); + }); + }; + TruyenFull.prototype.parseNovelAndChapters = function (novelUrl) { + var _a; + return __awaiter(this, void 0, void 0, function () { + var url, result, body, loadedCheerio, novel, lastPage, lastPageUrl, res, lastChapterUrl, lastChapter, chapters, i; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + url = novelUrl; + return [4 /*yield*/, fetch(url)]; + case 1: + result = _b.sent(); + return [4 /*yield*/, result.text()]; + case 2: + body = _b.sent(); + loadedCheerio = (0, cheerio_1.load)(body); + novel = { + url: url, + chapters: [], + }; + novel.name = loadedCheerio("div.book > img").attr("alt"); + novel.cover = loadedCheerio("div.book > img").attr("src"); + novel.summary = loadedCheerio("div.desc-text").text().trim(); + novel.author = loadedCheerio('h3:contains("Tác giả:")') + .parent() + .contents() + .text() + .replace("Tác giả:", ""); + novel.genres = loadedCheerio('h3:contains("Thể loại")') + .siblings() + .map(function (i, el) { return loadedCheerio(el).text(); }) + .toArray() + .join(","); + novel.status = loadedCheerio('h3:contains("Trạng thái")').next().text(); + if (novel.status === "Full") { + novel.status = novelStatus_1.NovelStatus.Completed; + } + else if (novel.status === 'Đang ra') { + novel.status = novelStatus_1.NovelStatus.Ongoing; + } + else { + novel.status = novelStatus_1.NovelStatus.Unknown; + } + lastPage = 1; + loadedCheerio('ul.pagination.pagination-sm > li').each(function () { + var page = Number(loadedCheerio(this).text()); + if (page && page > lastPage) + lastPage = page; + }); + lastPageUrl = novelUrl + 'trang-' + lastPage + '/'; + return [4 /*yield*/, fetch(lastPageUrl).then(function (res) { return res.text(); })]; + case 3: + res = _b.sent(); + loadedCheerio = (0, cheerio_1.load)(res); + lastChapterUrl = loadedCheerio('ul.list-chapter > li:last-child > a').attr('href'); + lastChapter = Number((_a = lastChapterUrl === null || lastChapterUrl === void 0 ? void 0 : lastChapterUrl.match(/\/chuong-(\d+)\//)) === null || _a === void 0 ? void 0 : _a[1]) || 1; + chapters = []; + for (i = 1; i <= lastChapter; i++) { + chapters.push({ + name: 'Chương ' + i, + url: novelUrl + 'chuong-' + i + '/', + }); + } + novel.chapters = chapters; + return [2 /*return*/, novel]; + } + }); + }); + }; + TruyenFull.prototype.parseChapter = function (chapterUrl) { + return __awaiter(this, void 0, void 0, function () { + var result, body, loadedCheerio, chapterText; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, fetch(chapterUrl)]; + case 1: + result = _a.sent(); + return [4 /*yield*/, result.text()]; + case 2: + body = _a.sent(); + loadedCheerio = (0, cheerio_1.load)(body); + chapterText = (loadedCheerio(".chapter-title").html() || '') + (loadedCheerio('#chapter-c').html() || ''); + return [2 /*return*/, chapterText]; + } + }); + }); + }; + TruyenFull.prototype.searchNovels = function (searchTerm, pageNo) { + return __awaiter(this, void 0, void 0, function () { + var searchUrl, result, body, loadedCheerio; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + searchUrl = "".concat(this.site, "/tim-kiem?tukhoa=").concat(searchTerm, "&page=").concat(pageNo); + return [4 /*yield*/, fetch(searchUrl)]; + case 1: + result = _a.sent(); + return [4 /*yield*/, result.text()]; + case 2: + body = _a.sent(); + loadedCheerio = (0, cheerio_1.load)(body); + return [2 /*return*/, this.parseNovels(loadedCheerio)]; + } + }); + }); + }; + TruyenFull.prototype.fetchImage = function (url) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + return [2 /*return*/, (0, fetch_1.fetchFile)(url)]; + }); + }); + }; + return TruyenFull; +}()); +exports.default = new TruyenFull(); diff --git a/icons/src/vi/lightnovelvn/icon.png b/icons/src/vi/lightnovelvn/icon.png new file mode 100644 index 0000000..1a2994f Binary files /dev/null and b/icons/src/vi/lightnovelvn/icon.png differ diff --git a/icons/src/vi/truyenconect/icon.png b/icons/src/vi/truyenconect/icon.png new file mode 100644 index 0000000..eaf373b Binary files /dev/null and b/icons/src/vi/truyenconect/icon.png differ diff --git a/icons/src/vi/truyenfull/icon.png b/icons/src/vi/truyenfull/icon.png new file mode 100644 index 0000000..51f8d86 Binary files /dev/null and b/icons/src/vi/truyenfull/icon.png differ diff --git a/plugins/vietnamese/LNHako.ts b/plugins/vietnamese/LNHako.ts index 7ecce94..3e3c658 100644 --- a/plugins/vietnamese/LNHako.ts +++ b/plugins/vietnamese/LNHako.ts @@ -3,20 +3,14 @@ import { fetchFile } from "@libs/fetch"; import { Plugin } from "@typings/plugin"; import { isUrlAbsolute } from "@libs/isAbsoluteUrl"; import { NovelStatus } from "@libs/novelStatus"; -class HakoPlugin implements Plugin.PluginBase { - id: string; - name: string; - icon: string; - site: string; - version: string; +import { FilterTypes, Filters } from "@libs/filterInputs"; - constructor() { - this.id = "ln.hako"; - this.name = "Hako"; - this.icon = "src/vi/hakolightnovel/icon.png"; - this.site = "https://ln.hako.vn"; - this.version = "1.0.0"; - } +class HakoPlugin implements Plugin.PluginBase { + id = "ln.hako"; + name = "Hako"; + icon = "src/vi/hakolightnovel/icon.png"; + site = "https://ln.hako.vn"; + version = "1.0.1"; parseNovels(loadedCheerio: CheerioAPI) { const novels: Plugin.NovelItem[] = []; loadedCheerio("#mainpart .row .thumb-item-flow").each((index, ele) => { @@ -50,12 +44,21 @@ class HakoPlugin implements Plugin.PluginBase { } async popularNovels( pageNo: number, - options: Plugin.PopularNovelsOptions + {showLatestNovels, filters}: Plugin.PopularNovelsOptions ): Promise { - const link = - this.site + - "/danh-sach?truyendich=1&sapxep=topthang&page=" + - pageNo; + let link = this.site + "/danh-sach" + if(filters.alphabet.value){ + link += "/" + filters.alphabet.value; + } + const params = new URLSearchParams(); + for(const novelType of filters.type.value){ + params.append(novelType, "1"); + } + for(const status of filters.status.value){ + params.append(status, "1"); + } + params.append("sapxep", filters.sort.value); + link += '?' + params.toString() + '&page=' + pageNo const result = await fetch(link); const body = await result.text(); const loadedCheerio = parseHTML(body); @@ -175,6 +178,78 @@ class HakoPlugin implements Plugin.PluginBase { }; return await fetchFile(url, { headers: headers }); } + filters = { + alphabet: { + type: FilterTypes.Picker, + value: "", + label: "Chữ cái", + options: [ + {label: 'Tất cả', value: ''}, + {label: 'Khác', value: 'khac'}, + {label: 'A', value: 'a'}, + {label: 'B', value: 'b'}, + {label: 'C', value: 'c'}, + {label: 'D', value: 'd'}, + {label: 'E', value: 'e'}, + {label: 'F', value: 'f'}, + {label: 'G', value: 'g'}, + {label: 'H', value: 'h'}, + {label: 'I', value: 'i'}, + {label: 'J', value: 'j'}, + {label: 'K', value: 'k'}, + {label: 'L', value: 'l'}, + {label: 'M', value: 'm'}, + {label: 'N', value: 'n'}, + {label: 'O', value: 'o'}, + {label: 'P', value: 'p'}, + {label: 'Q', value: 'q'}, + {label: 'R', value: 'r'}, + {label: 'S', value: 's'}, + {label: 'T', value: 't'}, + {label: 'U', value: 'u'}, + {label: 'V', value: 'v'}, + {label: 'W', value: 'w'}, + {label: 'X', value: 'x'}, + {label: 'Y', value: 'y'}, + {label: 'Z', value: 'z'}, + ] + }, + type: { + type: FilterTypes.CheckboxGroup, + label: "Phân loại", + value: [], + options: [ + {label: "Truyện dịch", value: "truyendich"}, + {label: "Truyện sáng tác", value: "sangtac"}, + {label: "Convert", value: "convert"} + ] + }, + status: { + type: FilterTypes.CheckboxGroup, + label: "Tình trạng", + value: [], + options: [ + {label: "Đang tiến hành", value: "dangtienhanh"}, + {label: "Tạm ngưng", value: "tamngung"}, + {label: "Đã hoàn thành", value: "hoanthanh"} + ] + }, + sort: { + type: FilterTypes.Picker, + label: "Sắp xếp", + value: "top", + options: [ + {label: "A-Z", value: "tentruyen"}, + {label: "Z-A", value: "tentruyenza"}, + {label: "Mới cập nhật", value: "capnhat"}, + {label: "Truyện mới", value: "truyenmoi"}, + {label: "Theo dõi", value: "theodoi"}, + {label: "Top toàn thời gian", value: "top"}, + {label: "Top tháng", value: "topthang"}, + {label: "Số từ", value: "sotu"}, + ] + } + } satisfies Filters; } export default new HakoPlugin(); diff --git a/plugins/vietnamese/Truyenconect.broken.ts b/plugins/vietnamese/Truyenconect.broken.ts new file mode 100644 index 0000000..692e220 --- /dev/null +++ b/plugins/vietnamese/Truyenconect.broken.ts @@ -0,0 +1,228 @@ + +import { CheerioAPI, load as parseHTML } from "cheerio"; +import { fetchApi, fetchFile } from "@libs/fetch"; +import { Plugin } from "@typings/plugin"; +import { FilterTypes, Filters } from "@libs/filterInputs"; + +class TruyenConect implements Plugin.PluginBase { + id = "truyenconect"; + name = "Truyen Conect"; + icon = "src/vi/truyenconect/icon.png"; + site = "https://truyenconect.com"; + version = "1.0.0"; + parseNovels(loadedCheerio: CheerioAPI, selector: string){ + const novels: Plugin.NovelItem[] = []; + loadedCheerio(selector).each(function () { + const url = loadedCheerio(this).find('a').attr('href'); + if(url){ + novels.push({ + name: loadedCheerio(this).find('img').attr('alt') || '', + url, + cover: loadedCheerio(this).find('img').attr('data-src'), + }) + } + }); + return novels; + } + async popularNovels(pageNo: number, {filters, showLatestNovels}: Plugin.PopularNovelsOptions): Promise { + let link = this.site; + let selector = '.c-page__content > .grid9.block .item-thumb.c-image-hover'; + + if(showLatestNovels){ + selector = '.c-page__content .page-content-listing.item-big_thumbnail .item-thumb.c-image-hover'; + } + + if(filters.category.value){ + link += '/' + filters.category.value; + selector = 'table.manga-shortcodes.manga-chapters-listing td[width="10%"]'; + if(filters.category.value === 'the-loai'){ + selector = '.item-thumb.hover-details.c-image-hover' + link += '/' + filters.genre.value; + } + link += '?page=' + pageNo; + } + + const body = await fetch(link).then(r => r.text()); + const loadedCheerio = parseHTML(body); + return this.parseNovels(loadedCheerio, selector); + } + async parseNovelAndChapters(novelUrl: string): Promise { + const url = novelUrl; + const result = await fetchApi(url); + const body = await result.text(); + + let loadedCheerio = parseHTML(body); + + const novel: Plugin.SourceNovel = { + url, + chapters: [], + }; + + novel.name = loadedCheerio(".post-title > h1").text().trim(); + + novel.cover = loadedCheerio(".summary_image > a > img").attr( + "data-src" + ); + + loadedCheerio(".post-content_item").each(function () { + const detailName = loadedCheerio(this) + .find(".summary-heading > h5") + .text() + .trim(); + const detail = loadedCheerio(this).find(".summary-content").html(); + + if (!detail) return; + + switch (detailName) { + case "Genre": + novel.genres = loadedCheerio(detail) + .children("a") + .map((i, el) => loadedCheerio(el).text()) + .toArray() + .join(","); + break; + case "Author": + novel.author = loadedCheerio(detail) + .children("a") + .map((i, el) => loadedCheerio(el).text()) + .toArray() + .join(", "); + break; + case "Novel": + novel.status = detail?.trim().replace(/G/g, "g"); + break; + } + }); + + loadedCheerio( + ".description-summary > div.summary__content > div" + ).remove(); + + novel.summary = loadedCheerio( + ".description-summary > div.summary__content" + ) + .text() + .trim(); + + let chapter: Plugin.ChapterItem[] = []; + loadedCheerio(".wp-manga-chapter").each(function () { + const chapterName = loadedCheerio(this) + .find("a") + .text() + .replace(/[\t\n]/g, "") + .trim(); + const releaseDate = loadedCheerio(this).find("span").text().trim(); + const chapterUrl = loadedCheerio(this).find("a").attr("href"); + + if (!chapterUrl) return; + + chapter.push({ + name: chapterName, + releaseTime: releaseDate, + url: chapterUrl, + }); + }); + + novel.chapters = chapter.reverse(); + + return novel; + } + async parseChapter(chapterUrl: string): Promise { + const result = await fetchApi(chapterUrl); + const body = await result.text(); + + const loadedCheerio = parseHTML(body); + + loadedCheerio("img").removeAttr("srcset"); + let chapterText = loadedCheerio(".reading-content").html() || ''; + + return chapterText; + } + async searchNovels(searchTerm: string, pageNo: number): Promise { + const url = `${this.site}?s=${searchTerm}&post_type=wp-manga`; + const result = await fetchApi(url); + const body = await result.text(); + + const loadedCheerio = parseHTML(body); + + const novels: Plugin.NovelItem[] = []; + + loadedCheerio(".c-tabs-item__content").each(function () { + const novelName = loadedCheerio(this).find(".h4 > a").text(); + const novelCover = loadedCheerio(this).find("img").attr("data-src"); + const novelUrl = loadedCheerio(this).find(".h4 > a").attr("href"); + + if (!novelUrl) return; + + novels.push({ + name: novelName, + url: novelUrl, + cover: novelCover, + }); + }); + + return novels; + } + async fetchImage(url: string): Promise { + return fetchFile(url); + } + filters = { + category: { + label: "Lọc theo", + value: '', + type: FilterTypes.Picker, + options: [ + {label: '', value: ''}, + {label: 'Thể loại', value: 'the-loai'}, + {label: 'Truyện dịch', value: 'truyen-dich'}, + {label: 'Truyện convert', value: 'convert'} + ] + }, + genre: { + label: 'Thể loại', + value: 'action', + type: FilterTypes.Picker, + options: [ + {label: 'Action', value: 'action'}, + {label: 'Adult', value: 'adult'}, + {label: 'Adventure', value: 'adventure'}, + {label: 'Chinese novel', value: 'chinese-novel'}, + {label: 'Chuyển Sinh', value: 'chuyen-sinh'}, + {label: 'English Novel', value: 'english-novel'}, + {label: 'Harem', value: 'harem'}, + {label: 'Ecchi', value: 'ecchi'}, + {label: 'Fantasy', value: 'fantasy'}, + {label: 'Drama', value: 'drama'}, + {label: 'Game', value: 'game'}, + {label: 'Tiên hiệp', value: 'tien-hiep'}, + {label: 'Kiếm Hiệp', value: 'kiem-hiep'}, + {label: 'Ngôn Tình', value: 'ngon-tinh'}, + {label: 'Isekai', value: 'isekai'}, + {label: 'Lịch Sử', value: 'lich-su'}, + {label: 'Web Novel', value: 'web-novel'}, + {label: 'Xuyên không', value: 'xuyen-khong'}, + {label: 'Trọng sinh', value: 'trong-sinh'}, + {label: 'Trinh thám', value: 'trinh-tham'}, + {label: 'Dị giới', value: 'di-gioi'}, + {label: 'Huyền ảo', value: 'huyen-ao'}, + {label: 'Sắc Hiệp', value: 'sac-hiep'}, + {label: 'Dị năng', value: 'di-nang'}, + {label: 'Linh dị', value: 'linh-di'}, + {label: 'Đô thị', value: 'do-thi'}, + {label: 'Comedy', value: 'comedy'}, + {label: 'School Life', value: 'school-life'}, + {label: 'Romance', value: 'romance'}, + {label: 'Martial-arts', value: 'martial-arts'}, + {label: 'Light Novel', value: 'light-novel'}, + {label: 'Huyền huyễn', value: 'huyen-huyen'}, + {label: 'Kỳ Huyễn', value: 'ky-huyen'}, + {label: 'Khoa Huyễn', value: 'khoa-huyen'}, + {label: 'Võng Du', value: 'vong-du'}, + {label: 'Đồng Nhân', value: 'dong-nhan'}, + + ] + } + } satisfies Filters; +} + +export default new TruyenConect(); diff --git a/plugins/vietnamese/lightnovelvn.broken.ts b/plugins/vietnamese/lightnovelvn.broken.ts new file mode 100644 index 0000000..b1e92e3 --- /dev/null +++ b/plugins/vietnamese/lightnovelvn.broken.ts @@ -0,0 +1,164 @@ +import { load as parseHTML } from "cheerio"; +import { fetchApi, fetchFile } from "@libs/fetch"; +import { Plugin } from "@typings/plugin"; +import { Filters } from "@libs/filterInputs"; +import { NovelStatus } from "@libs/novelStatus"; + + +class LightNovelVN implements Plugin.PluginBase { + id = "lightnovel.vn"; + name = "Light Novel VN"; + version = "1.0.0"; + icon = "src/vi/lightnovelvn/icon.png"; + filters?: Filters | undefined; + site = "https://lightnovel.vn/"; + baseUrl = this.site; + headers = { + Accept: "application/json", + "Content-Type": "application/json", + }; + async popularNovels(pageNo: number, options: Plugin.PopularNovelsOptions): Promise { + const url = `${this.baseUrl}truyen-hot-ds?page=${pageNo}`; + const body = await fetch(url).then((r) => r.text()); + + const loadedCheerio = parseHTML(body); + + const novels: Plugin.NovelItem[] = []; + + loadedCheerio(".flex.flex-col[itemtype='https://schema.org/Book']").each((idx, ele) => { + const novelName = loadedCheerio(ele).find('h3[itemprop="name"] > a').text().trim(); + const img = loadedCheerio(ele).find('noscript').html(); + const novelCover = img?.match(/srcSet="([^\s]+)/)?.[1]; + const novelUrl = this.site + loadedCheerio(ele).find('h3[itemprop="name"] > a').attr('href')?.substring(1); + + const novel = { + name: novelName, + cover: novelCover, + url: novelUrl, + }; + + novels.push(novel); + }); + + return novels; + } + async parseNovelAndChapters(novelUrl: string): Promise { + const url = novelUrl; + const body = await fetch(url).then((r) => r.text()); + + let loadedCheerio = parseHTML(body); + + const novel: Plugin.SourceNovel = { + url, + chapters: [], + }; + + novel.name = loadedCheerio('h1[itemprop="name"]').text().trim(); + + novel.cover = loadedCheerio('header div:nth-child(2) img').attr('srcset')?.split(/\s+/)[0] + + const genres: string[] = []; + loadedCheerio('a[itemprop="genre"]').each(function() { + genres.push(loadedCheerio(this).text()); + }) + novel.genres = genres.join(','); + + novel.status = loadedCheerio('span.font-bold.text-size22:last').text(); + if(novel.status === 'Đang ra'){ + novel.status = NovelStatus.Ongoing; + }else if(novel.status === 'Hoàn thành'){ + novel.status = NovelStatus.Completed; + }else { + novel.status = NovelStatus.Unknown; + } + novel.author = loadedCheerio('a[itemprop="author"] > span').text(); + + novel.summary = loadedCheerio('#bookIntro').text().replace(/\s+/g, ' '); + const delay = (ms: number) => new Promise((res) => setTimeout(res, ms)); + await delay(1000); + const chapterListUrl = novelUrl + '/chapters?chorder=desc'; + + const chapterListBody = await fetchApi(chapterListUrl).then(r => r.text()); + const loadedChapterList = parseHTML(chapterListBody); + + + const lastNumber = parseInt( + loadedChapterList('ul.chapter-list > li:nth-child(1)').attr('data-chapterno') ?? '0' + ); + const lastChapterUrl = loadedChapterList('ul.chapter-list > li:nth-child(1) > a').attr('href'); + + if(lastChapterUrl){ + const chapterUrlPrefix = this.baseUrl + lastChapterUrl.split('/').slice(1, -1).join('/'); + const chapters: Plugin.ChapterItem[] = []; + for(let i = 1; i <= lastNumber; i++){ + chapters.push({ + chapterNumber: i, + name: 'Chapter ' + i, + url: chapterUrlPrefix + '/chapter-' + i, + }) + } + novel.chapters = chapters; + } + return novel; + } + async parseChapter(chapterUrl: string): Promise { + const body = await fetchApi(chapterUrl).then((r) => r.text()); + + const loadedCheerio = parseHTML(body); + + let chapterText = loadedCheerio("#chapter-container").html() || ''; + + return chapterText; + } + async searchNovels(searchTerm: string, pageNo: number): Promise { + const url = `${this.baseUrl}lnsearchlive`; + const link = `${this.baseUrl}search`; + const response = await fetchApi(link).then((r) => r.text()); + const token = parseHTML(response); + let verifytoken = token("#novelSearchForm > input").attr("value"); + + let formData = new FormData(); + formData.append("inputContent", searchTerm); + + const body = await fetchApi( + url, + { + method: "POST", + headers: { LNRequestVerifyToken: verifytoken! }, + body: formData, + }, + ).then((r) => r.text()); + + let loadedCheerio = parseHTML(body); + + let novels: Plugin.NovelItem[] = []; + + let results = JSON.parse(loadedCheerio("body").text()); + + loadedCheerio = parseHTML(results.resultview); + + loadedCheerio(".novel-item").each((idx, ele) => { + const novelName = loadedCheerio(ele) + .find("h4.novel-title") + .text() + .trim(); + const novelCover = loadedCheerio(ele).find("img").attr("src"); + const novelUrl = + this.baseUrl + loadedCheerio(ele).find("a").attr("href")?.substring(1); + + novels.push({ + name: novelName, + url: novelUrl, + cover: novelCover, + }); + }); + + return novels; + } + async fetchImage(url: string): Promise { + return fetchFile(url, {headers: this.headers}); + } + +} + +export default new LightNovelVN(); \ No newline at end of file diff --git a/plugins/vietnamese/truyenfull.ts b/plugins/vietnamese/truyenfull.ts new file mode 100644 index 0000000..677df8b --- /dev/null +++ b/plugins/vietnamese/truyenfull.ts @@ -0,0 +1,133 @@ +import { CheerioAPI, load as parseHTML } from "cheerio"; +import { fetchFile } from "@libs/fetch"; +import { Plugin } from "@typings/plugin"; +import { Filters } from "@libs/filterInputs"; +import { NovelStatus } from "@libs/novelStatus"; + +class TruyenFull implements Plugin.PluginBase { + id = "truyenfull"; + name = "Truyện Full"; + icon = "src/vi/truyenfull/icon.png"; + site = "https://truyenfull.vn"; + version = "1.0.0"; + + parseNovels(loadedCheerio: CheerioAPI){ + const novels: Plugin.NovelItem[] = []; + loadedCheerio(".list-truyen .row").each((idx, ele) => { + const novelName = loadedCheerio(ele) + .find("h3.truyen-title > a") + .text(); + + const novelCover = loadedCheerio(ele).find("div[data-classname='cover']").attr("data-image"); + + const novelUrl = loadedCheerio(ele) + .find("h3.truyen-title > a") + .attr("href"); + if(novelUrl){ + novels.push({ + name: novelName, + cover: novelCover, + url: novelUrl + }); + } + }); + return novels; + } + + async popularNovels(pageNo: number, options: Plugin.PopularNovelsOptions): Promise { + const url = `${this.site}/danh-sach/truyen-hot/trang-${pageNo}/`; + + const result = await fetch(url); + const body = await result.text(); + + const loadedCheerio = parseHTML(body); + + return this.parseNovels(loadedCheerio); + } + async parseNovelAndChapters(novelUrl: string): Promise { + const url = novelUrl; + + const result = await fetch(url); + const body = await result.text(); + + let loadedCheerio = parseHTML(body); + + const novel: Plugin.SourceNovel = { + url, + chapters: [], + }; + + novel.name = loadedCheerio("div.book > img").attr("alt"); + + novel.cover = loadedCheerio("div.book > img").attr("src"); + + novel.summary = loadedCheerio("div.desc-text").text().trim(); + + novel.author = loadedCheerio('h3:contains("Tác giả:")') + .parent() + .contents() + .text() + .replace("Tác giả:", ""); + + novel.genres = loadedCheerio('h3:contains("Thể loại")') + .siblings() + .map((i, el) => loadedCheerio(el).text()) + .toArray() + .join(","); + + novel.status = loadedCheerio('h3:contains("Trạng thái")').next().text(); + if(novel.status === "Full"){ + novel.status = NovelStatus.Completed; + }else if(novel.status === 'Đang ra'){ + novel.status = NovelStatus.Ongoing; + }else{ + novel.status = NovelStatus.Unknown; + } + + let lastPage = 1; + loadedCheerio('ul.pagination.pagination-sm > li').each(function() { + const page = Number(loadedCheerio(this).text()); + if(page && page > lastPage) lastPage = page; + }); + + const lastPageUrl = novelUrl + 'trang-' + lastPage + '/'; + const res = await fetch(lastPageUrl).then(res => res.text()); + loadedCheerio = parseHTML(res); + const lastChapterUrl = loadedCheerio('ul.list-chapter > li:last-child > a').attr('href'); + const lastChapter = Number(lastChapterUrl?.match(/\/chuong-(\d+)\//)?.[1]) || 1; + const chapters: Plugin.ChapterItem[] = []; + for(let i = 1; i <= lastChapter; i++){ + chapters.push({ + name: 'Chương ' + i, + url: novelUrl + 'chuong-'+ i + '/', + }) + } + novel.chapters = chapters; + return novel; + } + async parseChapter(chapterUrl: string): Promise { + const result = await fetch(chapterUrl); + const body = await result.text(); + + const loadedCheerio = parseHTML(body); + + let chapterText = (loadedCheerio(".chapter-title").html() || '') + (loadedCheerio('#chapter-c').html() || ''); + + return chapterText; + } + async searchNovels(searchTerm: string, pageNo: number): Promise { + const searchUrl = `${this.site}/tim-kiem?tukhoa=${searchTerm}&page=${pageNo}`; + + const result = await fetch(searchUrl); + const body = await result.text(); + + const loadedCheerio = parseHTML(body); + return this.parseNovels(loadedCheerio) + } + async fetchImage(url: string): Promise { + return fetchFile(url); + } + +} + +export default new TruyenFull();