fix: Plugins (#578)

* test

* test

* fix

* any

* update

* update

* fix LightNovelReader

* Why did I do that

* typo

* fix

* type

* unused icons have been removed

* madara...

* ops

* fix

* close #563

* update

* LitSpace

* fix jaomix

* fix renovels

* fix ficbook

* update ficbook
This commit is contained in:
Rider21
2023-10-30 09:45:33 +03:00
committed by GitHub
parent 5258464743
commit ac96c62066
244 changed files with 45894 additions and 18184 deletions
+100 -105
View File
@@ -144,7 +144,7 @@
"lang": "English", "lang": "English",
"version": "1.0.0", "version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/english/divinedaolibrary.js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/english/divinedaolibrary.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/`en/divinedaolibrary/icon.png" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/en/divinedaolibrary/icon.png"
}, },
{ {
"id": "earlynovel", "id": "earlynovel",
@@ -236,6 +236,15 @@
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/english/LightNovelHeaven[madara].js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/english/LightNovelHeaven[madara].js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/multisrc/madara/icons/lightnovelheaven.png" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/multisrc/madara/icons/lightnovelheaven.png"
}, },
{
"id": "LNR.org",
"name": "LightNovelReader",
"site": "https://lightnovelreader.org",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/english/LightNovelReader.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/en/lightnovelreader/icon.png"
},
{ {
"id": "Ltnovel.com", "id": "Ltnovel.com",
"name": "Ltnovel.com", "name": "Ltnovel.com",
@@ -243,7 +252,7 @@
"lang": "English", "lang": "English",
"version": "1.0.0", "version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/english/Ltnovelcom[readwn].js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/english/Ltnovelcom[readwn].js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/multisrc/readwn/icon/ltnovel.png" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/multisrc/readwn/icons/ltnovel.png"
}, },
{ {
"id": "lunarletters", "id": "lunarletters",
@@ -396,7 +405,7 @@
"lang": "English", "lang": "English",
"version": "1.0.0", "version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/english/Novelmtcom[readwn].js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/english/Novelmtcom[readwn].js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/multisrc/readwn/icon/novelmt.png" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/multisrc/readwn/icons/novelmt.png"
}, },
{ {
"id": "novelmultiverse", "id": "novelmultiverse",
@@ -418,7 +427,7 @@
}, },
{ {
"id": "novelr18", "id": "novelr18",
"name": "NovelR18 [madara]", "name": "NovelR18 [madara]",
"site": "https://novelr18.com/", "site": "https://novelr18.com/",
"lang": "English", "lang": "English",
"version": "1.0.0", "version": "1.0.0",
@@ -486,7 +495,7 @@
"lang": "English", "lang": "English",
"version": "1.0.0", "version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/english/Readwncom[readwn].js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/english/Readwncom[readwn].js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/multisrc/readwn/icon/readwn.png" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/multisrc/readwn/icons/readwn.png"
}, },
{ {
"id": "sleeptTLS", "id": "sleeptTLS",
@@ -639,6 +648,17 @@
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/jp/syosetu/icon.png" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/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/LNReader/lnreader-sources/plugins/js/plugins/korean/Agitoon.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/kr/agitoon/agit.png"
}
],
"Português": [ "Português": [
{ {
"id": "lightnovelbrasil", "id": "lightnovelbrasil",
@@ -652,22 +672,22 @@
], ],
"русский язык": [ "русский язык": [
{ {
"id": "axel.znovel", "id": "AT",
"name": "Аксел", "name": "Автор Тудей",
"site": "https://axel.znovel.space", "site": "https://author.today",
"lang": "русский язык", "lang": "русский язык",
"version": "1.0.0", "version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/axelznovelspace[noveltl].js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/authortoday.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/ru/authortoday/icon.png"
}, },
{ {
"id": "bel.novel", "id": "bookriver",
"name": "Белманга", "name": "Bookriver",
"site": "https://bel.novel.tl", "site": "https://bookriver.ru",
"lang": "русский язык", "lang": "русский язык",
"version": "1.0.0", "version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/belnoveltl[noveltl].js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/bookriver.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/ru/bookriver/icon.png"
}, },
{ {
"id": "erolate", "id": "erolate",
@@ -676,7 +696,25 @@
"lang": "русский язык", "lang": "русский язык",
"version": "1.0.0", "version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/Erolate[rulate].js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/Erolate[rulate].js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/multisrc/rulate/icons/erolate.png"
},
{
"id": "ficbook",
"name": "ficbook",
"site": "https://ficbook.net",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/ficbook.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/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/LNReader/lnreader-sources/plugins/js/plugins/russian/LitSpace.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/ru/freedlit/icon.png"
}, },
{ {
"id": "jaomix.ru", "id": "jaomix.ru",
@@ -688,94 +726,49 @@
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/ru/jaomix/icon.png" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/ru/jaomix/icon.png"
}, },
{ {
"id": "japit.novel", "id": "ReN",
"name": "Japit Comics", "name": "Renovels",
"site": "https://japit.novel.tl", "site": "https://renovels.org",
"lang": "русский язык", "lang": "русский язык",
"version": "1.0.0", "version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/japitnoveltl[noveltl].js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/renovels.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/ru/renovels/icon.png"
}, },
{ {
"id": "kg.novel", "id": "RLIB",
"name": "Карманная галактика", "name": "RanobeLib",
"site": "https://kg.novel.tl", "site": "https://ranobelib.me",
"lang": "русский язык", "lang": "русский язык",
"version": "1.0.0", "version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/kgnoveltl[noveltl].js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/ranobelib.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/ru/ranobelib/icon.png"
}, },
{ {
"id": "kod.novel", "id": "RNBH.org",
"name": "K.O.D.", "name": "RanobeHub",
"site": "https://kod.novel.tl", "site": "https://ranobehub.org/",
"lang": "русский язык", "lang": "русский язык",
"version": "1.0.0", "version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/kodnoveltl[noveltl].js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/ranobehub.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/ru/ranobehub/icon.png"
}, },
{ {
"id": "nightnovel", "id": "RNRF",
"name": "Nightnovel", "name": "РанобэРФ",
"site": "https://nightnovel.online", "site": "https://ранобэ.рф",
"lang": "русский язык", "lang": "русский язык",
"version": "1.0.0", "version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/nightnovelonline[noveltl].js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/ranoberf.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/ru/ranoberf/icon.png"
}, },
{ {
"id": "original.novel", "id": "TL",
"name": "Авторские работы", "name": "NovelTL",
"site": "https://original.novel.tl", "site": "https://novel.tl",
"lang": "русский язык", "lang": "русский язык",
"version": "1.0.0", "version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/originalnoveltl[noveltl].js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/novelTL.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/ru/noveltl/icon.png"
},
{
"id": "red.novel",
"name": "Север и Юг",
"site": "https://red.novel.tl",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/rednoveltl[noveltl].js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/"
},
{
"id": "ruranobe",
"name": "РуРанобэ",
"site": "https://ruranobe.ru",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/ruranoberu[noveltl].js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/"
},
{
"id": "sferdrakon.novel",
"name": "Уголок дракона",
"site": "https://sferdrakon.novel.tl",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/sferdrakonnoveltl[noveltl].js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/"
},
{
"id": "si.novel",
"name": "Сказочные истории",
"site": "https://si.novel.tl",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/sinoveltl[noveltl].js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/"
},
{
"id": "snailulitka.novel",
"name": "Snailulitka",
"site": "https://snailulitka.novel.tl",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/snailulitkanoveltl[noveltl].js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/"
}, },
{ {
"id": "tl.rulate", "id": "tl.rulate",
@@ -784,25 +777,7 @@
"lang": "русский язык", "lang": "русский язык",
"version": "1.0.0", "version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/Rulate[rulate].js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/Rulate[rulate].js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/multisrc/rulate/icons/rulate.png"
},
{
"id": "tsundoku.novel",
"name": "TsundokuTrans",
"site": "https://tsundoku.novel.tl",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/tsundokunoveltl[noveltl].js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/"
},
{
"id": "ukr.novel",
"name": "Переклади українською мовою",
"site": "https://ukr.novel.tl",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/russian/ukrnoveltl[noveltl].js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/"
} }
], ],
"español, castellano": [ "español, castellano": [
@@ -824,6 +799,15 @@
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/spanish/novelasligera.js", "url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/spanish/novelasligera.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/es/novelasligera/icon.png" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/es/novelasligera/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/LNReader/lnreader-sources/plugins/js/plugins/spanish/skynovels.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/es/skynovels/icon.png"
},
{ {
"id": "TNL.com", "id": "TNL.com",
"name": "TuNovelaLigera", "name": "TuNovelaLigera",
@@ -881,6 +865,17 @@
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/multisrc/madara/icons/webnoveloku.png" "iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/multisrc/madara/icons/webnoveloku.png"
} }
], ],
"Україна": [
{
"id": "smakolykytl",
"name": "Смаколики",
"site": "https://smakolykytl.site/",
"lang": "Україна",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/js/plugins/ukraine/smakolykytl.js",
"iconUrl": "https://raw.githubusercontent.com/LNReader/lnreader-sources/plugins/icons/src/ua/smakolykytl/icon.png"
}
],
"Tiếng Việt": [ "Tiếng Việt": [
{ {
"id": "ln.hako", "id": "ln.hako",
+1 -1
View File
File diff suppressed because one or more lines are too long
+890
View File
@@ -0,0 +1,890 @@
{
"العربية": [
{
"id": "ar-mtl",
"name": "ArMTL [madara]",
"site": "https://ar-mtl.club/",
"lang": "العربية",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/arabic/ArMTL[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/arabic/ArNovel[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/arabic/HizoManga[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/hizomanga.png"
},
{
"id": "kolnovel",
"name": "KolNovel",
"site": "https://kolnovel.com/",
"lang": "العربية",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/arabic/kolnovel.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/arabic/Novel4Up[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/arabic/Riwyat[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/arabic/TeamXNovel[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/teamxnovel.png"
}
],
"English": [
{
"id": "1stkissnovel",
"name": "FirstKissNovel [madara]",
"site": "https://1stkissnovel.org/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/FirstKissNovel[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/firstkissnovel.png"
},
{
"id": "ANF.com",
"name": "AllNovelFull",
"site": "https://allnovelfull.com",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/allnovelfull.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/bestlightnovel.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/BoxNovel[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/ClickNovel[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/comrademao.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/CrateNovel[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/DaoNovel[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/divinedaolibrary.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/earlynovel.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/FansTranslations[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/fanstranslations.png"
},
{
"id": "fastnovel",
"name": "Fast Novel",
"site": "https://fastnovel.org/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/fastnovel.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/en/fastnovel/icon.png"
},
{
"id": "foxaholic",
"name": "Foxaholic",
"site": "https://www.foxaholic.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/foxaholic.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/FreeNovelMe[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/freenovelme.png"
},
{
"id": "freenovelupdates",
"name": "Free Novel Updates (Broken)",
"site": "https://www.freenovelupdates.com",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/freenovelupdates.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/en/freenovelupdates/icon.png"
},
{
"id": "FWN.com",
"name": "Web NOVEL",
"site": "https://freewebnovel.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/freewebnovel.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/Guavaread[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/lightnovelpub.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/en/lightnovelpub/icon.png"
},
{
"id": "lnheaven",
"name": "LightNovelHeaven [madara]",
"site": "https://lightnovelheaven.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/LightNovelHeaven[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/lightnovelheaven.png"
},
{
"id": "LNR.org",
"name": "LightNovelReader",
"site": "https://lightnovelreader.org",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/LightNovelReader.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/en/lightnovelreader/icon.png"
},
{
"id": "Ltnovel.com",
"name": "Ltnovel.com",
"site": "https://www.ltnovel.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/Ltnovelcom[readwn].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/LunarLetters[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/MostNovel[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/MTLNovel[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/mtl-novel.png"
},
{
"id": "mtlnovel.club",
"name": "MTLNovel.Club [madara]",
"site": "https://mtlnovel.club/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/MTLNovelClub[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/mtlreader.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/MysticalSeries[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/NeoSekaiTranslations[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/neosekaitranslations.png"
},
{
"id": "NF.me",
"name": "NovelFull.me",
"site": "https://novelfull.me/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/NovelFullMe.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/en/novelfullme/icon.png"
},
{
"id": "nitroscans",
"name": "Nitroscans",
"site": "https://nitroscans.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/nitroscans.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/en/nitroscans/icon.png"
},
{
"id": "NO.net",
"name": "novelsOnline",
"site": "https://novelsonline.net",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/NovelOnline.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/coverNotAvailable.jpg"
},
{
"id": "NobleMTL",
"name": "NobleMTL",
"site": "https://www.noblemtl.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/nobleMTL.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/NocturneTranslations[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/NoobchanTranslation[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/noobchantranslation.png"
},
{
"id": "novelforest",
"name": "Novel Forest (Broken)",
"site": "https://novelforest.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/novelforest.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/en/novelforest/icon.png"
},
{
"id": "novelfull",
"name": "NovelFull",
"site": "https://novelfull.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/novelfull.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/en/novelfull/icon.png"
},
{
"id": "novelhold",
"name": "Novel Hold",
"site": "https://novelhold.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/novelhold.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/en/novelhold/icon.png"
},
{
"id": "Novelmt.com",
"name": "Novelmt.com",
"site": "https://www.novelmt.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/Novelmtcom[readwn].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/readwn/icons/novelmt.png"
},
{
"id": "novelmultiverse",
"name": "NovelMultiverse [madara]",
"site": "https://www.novelmultiverse.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/NovelMultiverse[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/novelmultiverse.png"
},
{
"id": "novelpub.com",
"name": "NovelPub",
"site": "https://www.novelpub.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/novelpub.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/en/novelpub/icon.png"
},
{
"id": "novelr18",
"name": "NovelR18 [madara]",
"site": "https://novelr18.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/NovelR18[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/Novelroomnet[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/Novelstic[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/NovelTranslate[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/noveltranslate.png"
},
{
"id": "onlymtl",
"name": "OnlyMTL [madara]",
"site": "https://www.onlymtl.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/OnlyMTL[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/onlymtl.png"
},
{
"id": "PandaMTL",
"name": "PandaMTL",
"site": "https://www.pandamtl.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/pandaMTL.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/ReadWebNovels[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/readwebnovels.png"
},
{
"id": "Readwn.com",
"name": "Readwn.com",
"site": "https://www.readwn.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/Readwncom[readwn].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/readwn/icons/readwn.png"
},
{
"id": "sleeptTLS",
"name": "SleepyTranslations [madara]",
"site": "https://sleepytranslations.com/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/SleepyTranslations[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/SonicMTL[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/SugarBabies[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/SweetEscapeTranslations[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/WebNovelLover[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/webnovellover.png"
},
{
"id": "wuxiaworld.site",
"name": "WuxiaWorld.Site [madara]",
"site": "https://wuxiaworld.site/",
"lang": "English",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/english/WuxiaWorldSite[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/ZetroTranslation[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/english/ZinnNovel[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/french/chireads.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/fr/chireads/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/Rider21/lnreader-sources/plugins/js/plugins/indonesian/indowebnovel.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/indonesian/MeioNovel[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/indonesian/MoreNovel[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/indonesian/novelringan.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/indonesian/sakuranovel.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/indonesian/WBNovel[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/japanese/Syosetu.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/korean/Agitoon.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/portuguese/lightnovelbrasil.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/wpmangastream/icons/lightnovelbrasil.png"
}
],
"русский язык": [
{
"id": "AT",
"name": "Автор Тудей",
"site": "https://author.today",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/russian/authortoday.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/ru/authortoday/icon.png"
},
{
"id": "bookriver",
"name": "Bookriver",
"site": "https://bookriver.ru",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/russian/bookriver.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/ru/bookriver/icon.png"
},
{
"id": "erolate",
"name": "Erolate",
"site": "https://erolate.com",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/russian/Erolate[rulate].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/rulate/icons/erolate.png"
},
{
"id": "ficbook",
"name": "ficbook",
"site": "https://ficbook.net",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/russian/ficbook.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/russian/LitSpace.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/ru/freedlit/icon.png"
},
{
"id": "jaomix.ru",
"name": "Jaomix",
"site": "https://jaomix.ru",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/russian/jaomix.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/ru/jaomix/icon.png"
},
{
"id": "ReN",
"name": "Renovels",
"site": "https://renovels.org",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/russian/renovels.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/ru/renovels/icon.png"
},
{
"id": "RLIB",
"name": "RanobeLib",
"site": "https://ranobelib.me",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/russian/ranobelib.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/russian/ranobehub.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/ru/ranobehub/icon.png"
},
{
"id": "RNRF",
"name": "РанобэРФ",
"site": "https://ранобэ.рф",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/russian/ranoberf.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/ru/ranoberf/icon.png"
},
{
"id": "TL",
"name": "NovelTL",
"site": "https://novel.tl",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/russian/novelTL.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/ru/noveltl/icon.png"
},
{
"id": "tl.rulate",
"name": "Rulate",
"site": "https://tl.rulate.ru",
"lang": "русский язык",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/russian/Rulate[rulate].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/rulate/icons/rulate.png"
}
],
"español, castellano": [
{
"id": "HasuTL",
"name": "Hasu Translations",
"site": "https://hasutl.wordpress.com/",
"lang": "español, castellano",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/spanish/hasutl.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/spanish/novelasligera.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/es/novelasligera/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/Rider21/lnreader-sources/plugins/js/plugins/spanish/skynovels.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/es/skynovels/icon.png"
},
{
"id": "TNL.com",
"name": "TuNovelaLigera",
"site": "https://tunovelaligera.com/",
"lang": "español, castellano",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/spanish/tunovelaligera.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/spanish/yukitls.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/turkish/epiknovel.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/turkish/lshnovel.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/turkish/TurkceLightNovels[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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/Rider21/lnreader-sources/plugins/js/plugins/turkish/WebNovelOku[madara].js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/multisrc/madara/icons/webnoveloku.png"
}
],
"Україна": [
{
"id": "smakolykytl",
"name": "Смаколики",
"site": "https://smakolykytl.site/",
"lang": "Україна",
"version": "1.0.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/ukraine/smakolykytl.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/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.0",
"url": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/js/plugins/vietnamese/LNHako.js",
"iconUrl": "https://raw.githubusercontent.com/Rider21/lnreader-sources/plugins/icons/src/vi/hakolightnovel/icon.png"
}
]
}
+1
View File
File diff suppressed because one or more lines are too long
Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Before

Width:  |  Height:  |  Size: 312 KiB

After

Width:  |  Height:  |  Size: 312 KiB

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 114 KiB

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 411 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

+1
View File
@@ -15,6 +15,7 @@ const dirname = path.join(__dirname, "..");
app.use(bodyParser.json()); app.use(bodyParser.json());
app.use("/static", express.static(path.join(dirname, "test_web", "static"))); app.use("/static", express.static(path.join(dirname, "test_web", "static")));
app.use("/icons", express.static(path.join(dirname, "icons")));
app.get("/all_plugins", (req, res) => { app.get("/all_plugins", (req, res) => {
const allPlugins = pluginApi.all_plugins(); const allPlugins = pluginApi.all_plugins();
res.json(allPlugins); res.json(allPlugins);
+12 -6
View File
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
@@ -25,12 +25,17 @@ exports.icon = "multisrc/madara/icons/armtl.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://ar-mtl.club/"; exports.site = "https://ar-mtl.club/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +175,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/arnovel.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://arnovel.me/"; exports.site = "https://arnovel.me/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "home/novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "الترتيب حسب", "values": [{ "label": "A-Z", "value": "alphabet" }, { "label": "الآخير", "value": "latest" }, { "label": "الأكثر مشاهدة", "value": "views" }, { "label": "التقييم", "value": "rating" }, { "label": "جديد", "value": "new-manga" }, { "label": "شائع", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "التصنيفات", "values": [{ "label": "أكشن", "value": "%d8%a3%d9%83%d8%b4%d9%86" }, { "label": "إتشي", "value": "%d8%a5%d8%aa%d8%b4%d9%80%d9%8a" }, { "label": "بالغ", "value": "%d8%a8%d8%a7%d9%84%d8%ba" }, { "label": "تاريخي", "value": "%d8%aa%d8%a7%d8%b1%d9%8a%d8%ae%d9%8a" }, { "label": "تراجدي", "value": "%d8%aa%d8%b1%d8%a7%d8%ac%d8%af%d9%8a" }, { "label": "جوسي", "value": "%d8%ac%d9%88%d8%b3%d9%8a" }, { "label": "حريم", "value": "%d8%ad%d8%b1%d9%8a%d9%85" }, { "label": "حياة مدرسية", "value": "%d8%ad%d9%8a%d8%a7%d8%a9-%d9%85%d8%af%d8%b1%d8%b3%d9%8a%d8%a9" }, { "label": "خارق لطبيعية", "value": "%d8%ae%d8%a7%d8%b1%d9%82-%d9%84%d8%b7%d8%a8%d9%8a%d8%b9%d9%8a%d8%a9" }, { "label": "خيال", "value": "%d8%ae%d9%8a%d8%a7%d9%84" }, { "label": "خيال علمي", "value": "%d8%ae%d9%8a%d8%a7%d9%84-%d8%b9%d9%84%d9%85%d9%8a" }, { "label": "دراما", "value": "%d8%af%d8%b1%d8%a7%d9%85%d8%a7" }, { "label": "راشد", "value": "%d8%b1%d8%a7%d8%b4%d8%af" }, { "label": "رعب", "value": "%d8%b1%d8%b9%d8%a8" }, { "label": "رومنسي", "value": "%d8%b1%d9%88%d9%85%d9%86%d8%b3%d9%8a" }, { "label": "رياضي", "value": "%d8%b1%d9%8a%d8%a7%d8%b6%d9%8a" }, { "label": "سينين", "value": "%d8%b3%d9%8a%d9%86%d9%8a%d9%86" }, { "label": "شريحة من الحياة", "value": "%d8%b4%d8%b1%d9%8a%d8%ad%d8%a9-%d9%85%d9%86-%d8%a7%d9%84%d8%ad%d9%8a%d8%a7%d8%a9" }, { "label": "شوجو", "value": "%d8%b4%d9%88%d8%ac%d9%88" }, { "label": "شونين", "value": "%d8%b4%d9%88%d9%86%d9%8a%d9%86" }, { "label": "غموض", "value": "%d8%ba%d9%85%d9%88%d8%b6" }, { "label": "فنون قتال", "value": "%d9%81%d9%86%d9%88%d9%86-%d9%82%d8%aa%d8%a7%d9%84" }, { "label": "كوميديا", "value": "%d9%83%d9%88%d9%85%d9%8a%d8%af%d9%8a%d8%a7" }, { "label": "مغامرات", "value": "%d9%85%d8%ba%d8%a7%d9%85%d8%b1%d8%a7%d8%aa" }, { "label": "منتهية", "value": "%d9%85%d9%86%d8%aa%d9%87%d9%8a%d8%a9" }, { "label": "ميكا", "value": "%d9%85%d9%8a%d9%83%d8%a7" }, { "label": "نفسي", "value": "%d9%86%d9%81%d8%b3%d9%8a" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/hizomanga.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://hizomanga.com/"; exports.site = "https://hizomanga.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "manga-genre/" + filters.genres + '/';
let url = exports.site + "serie" + '/page/' + pageNo + sortOrder; }
else {
url += "serie/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "ترتيب حسب", "values": [{ "label": "A-Z", "value": "alphabet" }, { "label": "New", "value": "new-manga" }, { "label": "الأحدث", "value": "latest" }, { "label": "الأكثر مشاهدة", "value": "views" }, { "label": "التقييم", "value": "rating" }, { "label": "الرائج", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "التصنيفات", "values": [{ "label": "آلات", "value": "mechanisms" }, { "label": "أكشن", "value": "action" }, { "label": "إثارة", "value": "excitement" }, { "label": "إيسكاي", "value": "%d8%a5%d9%8a%d8%b3%d9%83%d8%a7%d9%8a" }, { "label": "الحياة اليومية", "value": "slice-of-life" }, { "label": "الحياة مدرسية", "value": "school-life" }, { "label": "تاريخي", "value": "historical" }, { "label": "تراجيدي", "value": "tragic" }, { "label": "جريمة", "value": "%d8%ac%d8%b1%d9%8a%d9%85%d8%a9" }, { "label": "جندر بندر", "value": "%d8%ac%d9%86%d8%af%d8%b1-%d8%a8%d9%86%d8%af%d8%b1" }, { "label": "جوسي", "value": "josei" }, { "label": "حريم", "value": "harem" }, { "label": "خارق للطبيعة", "value": "supernatural" }, { "label": "خيال", "value": "fantasy" }, { "label": "خيال علمي", "value": "sci-fi" }, { "label": "دراما", "value": "drama" }, { "label": "دموي", "value": "%d8%af%d9%85%d9%88%d9%8a" }, { "label": "راشد", "value": "mature" }, { "label": "رعب", "value": "horror" }, { "label": "رومانسي", "value": "romance" }, { "label": "رياضة", "value": "sports" }, { "label": "زمنكاني", "value": "my-time" }, { "label": "زومبي", "value": "%d8%b2%d9%88%d9%85%d8%a8%d9%8a" }, { "label": "سينين", "value": "seinen" }, { "label": "شريحة من الحياة", "value": "%d8%b4%d8%b1%d9%8a%d8%ad%d8%a9-%d9%85%d9%86-%d8%a7%d9%84%d8%ad%d9%8a%d8%a7%d8%a9" }, { "label": "شوجو", "value": "shoujo" }, { "label": "شونين", "value": "shounen" }, { "label": "طبي", "value": "%d8%b7%d8%a8%d9%8a" }, { "label": "غموض", "value": "ambiguity" }, { "label": "فنون قتالية", "value": "martial-arts" }, { "label": "قوة خارقة", "value": "superpower" }, { "label": "كوميدي", "value": "comedy" }, { "label": "مغامرات", "value": "adventure" }, { "label": "نفسي", "value": "psychological" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/novel4up.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://novel4up.com/"; exports.site = "https://novel4up.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "ترتيب حسب:", "values": [{ "label": "أ-ي", "value": "alphabet" }, { "label": "الأحدث", "value": "latest" }, { "label": "الأكثر مشاهدة", "value": "views" }, { "label": "التقييم", "value": "rating" }, { "label": "الجديد", "value": "new-manga" }, { "label": "الشائع", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "التصنيفات", "values": [{ "label": "أكشن", "value": "action" }, { "label": "الخارق للطبيعة", "value": "supernatural" }, { "label": "تاريخي", "value": "historical" }, { "label": "تحقيق", "value": "detective" }, { "label": "تراجيديا", "value": "tragedy" }, { "label": "حريم", "value": "harem" }, { "label": "حياة مدرسية", "value": "school-life" }, { "label": "خيال علمي", "value": "sci-fi" }, { "label": "دراما", "value": "drama" }, { "label": "رعب", "value": "horror" }, { "label": "رومانسي", "value": "romance" }, { "label": "رياضة", "value": "sports" }, { "label": "سحر", "value": "magic" }, { "label": "شريحة من الحياة", "value": "slice-of-life" }, { "label": "شوانهوا", "value": "xuanhuan" }, { "label": "شوجو", "value": "shoujo" }, { "label": "شونين", "value": "shounen" }, { "label": "غموض", "value": "mystery" }, { "label": "فانتازيا", "value": "fantasy" }, { "label": "فنون قتال", "value": "martial-arts" }, { "label": "كوميديا", "value": "comedy" }, { "label": "مغامرة", "value": "adventure" }, { "label": "ميكا", "value": "mecha" }, { "label": "نفسي", "value": "psychological" }, { "label": "ون شوت", "value": "one-shot" }, { "label": "ووشيا", "value": "wuxia" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/riwyat.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://riwyat.com/"; exports.site = "https://riwyat.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "GENRES", "values": [{ "label": "أكشن", "value": "%d8%a3%d9%83%d8%b4%d9%86" }, { "label": "أيتشي", "value": "%d8%a3%d9%8a%d8%aa%d8%b4%d9%8a" }, { "label": "استراتجي", "value": "%d8%a7%d8%b3%d8%aa%d8%b1%d8%a7%d8%aa%d8%ac%d9%8a" }, { "label": "العصر الحديث", "value": "%d8%a7%d9%84%d8%b9%d8%b5%d8%b1-%d8%a7%d9%84%d8%ad%d8%af%d9%8a%d8%ab" }, { "label": "انتقام", "value": "%d8%a7%d9%86%d8%aa%d9%82%d8%a7%d9%85" }, { "label": "بالغ", "value": "%d8%a8%d8%a7%d9%84%d8%ba" }, { "label": "بناء مملكة", "value": "%d8%a8%d9%86%d8%a7%d8%a1-%d9%85%d9%85%d9%84%d9%83%d8%a9" }, { "label": "بوليسي", "value": "%d8%a8%d9%88%d9%84%d9%8a%d8%b3%d9%8a" }, { "label": "تاريخي", "value": "%d8%aa%d8%a7%d8%b1%d9%8a%d8%ae%d9%8a" }, { "label": "جوسي", "value": "%d8%ac%d9%88%d8%b3%d9%8a" }, { "label": "حريم", "value": "%d8%ad%d8%b1%d9%8a%d9%85" }, { "label": "حياة يومية", "value": "%d8%ad%d9%8a%d8%a7%d8%a9-%d9%8a%d9%88%d9%85%d9%8a%d8%a9" }, { "label": "خيال", "value": "%d8%ae%d9%8a%d8%a7%d9%84" }, { "label": "خيال علمي", "value": "%d8%ae%d9%8a%d8%a7%d9%84-%d8%b9%d9%84%d9%85%d9%8a" }, { "label": "دراما", "value": "%d8%af%d8%b1%d8%a7%d9%85%d8%a7" }, { "label": "رعب", "value": "%d8%b1%d8%b9%d8%a8" }, { "label": "رومانسية", "value": "%d8%b1%d9%88%d9%85%d8%a7%d9%86%d8%b3%d9%8a%d8%a9" }, { "label": "رياضي", "value": "%d8%b1%d9%8a%d8%a7%d8%b6%d9%8a" }, { "label": "زيانشيا", "value": "xianxia" }, { "label": "سنين", "value": "%d8%b3%d9%86%d9%8a%d9%86" }, { "label": "شريحة حياة", "value": "%d8%b4%d8%b1%d9%8a%d8%ad%d8%a9-%d8%ad%d9%8a%d8%a7%d8%a9" }, { "label": "شوانهوان", "value": "xuanhuan" }, { "label": "شوجو", "value": "%d8%b4%d9%88%d8%ac%d9%88" }, { "label": "شونين", "value": "%d8%b4%d9%88%d9%86%d9%8a%d9%86" }, { "label": "شيانشيا", "value": "%d8%b4%d9%8a%d8%a7%d9%86%d8%b4%d9%8a%d8%a7" }, { "label": "عسكري", "value": "%d8%b9%d8%b3%d9%83%d8%b1%d9%8a" }, { "label": "غموض", "value": "%d8%ba%d9%85%d9%88%d8%b6" }, { "label": "فانتازيا", "value": "%d9%81%d8%a7%d9%86%d8%aa%d8%a7%d8%b2%d9%8a%d8%a7" }, { "label": "فنون قتالية", "value": "%d9%81%d9%86%d9%88%d9%86-%d9%82%d8%aa%d8%a7%d9%84%d9%8a%d8%a9" }, { "label": "قوى خارقة", "value": "%d9%82%d9%88%d9%89-%d8%ae%d8%a7%d8%b1%d9%82%d8%a9" }, { "label": "كوميديا", "value": "%d9%83%d9%88%d9%85%d9%8a%d8%af%d9%8a%d8%a7" }, { "label": "كوميك", "value": "%d9%83%d9%88%d9%85%d9%8a%d9%83" }, { "label": "للكبار", "value": "%d9%84%d9%84%d9%83%d8%a8%d8%a7%d8%b1" }, { "label": "مأساة", "value": "%d9%85%d8%a3%d8%b3%d8%a7%d8%a9" }, { "label": "مانجا", "value": "%d9%85%d8%a7%d9%86%d8%ac%d8%a7" }, { "label": "مانها", "value": "%d9%85%d8%a7%d9%86%d9%87%d8%a7" }, { "label": "مانهوا", "value": "%d9%85%d8%a7%d9%86%d9%87%d9%88%d8%a7" }, { "label": "مدرسي", "value": "%d9%85%d8%af%d8%b1%d8%b3%d9%8a" }, { "label": "مصاصي دماء", "value": "%d9%85%d8%b5%d8%a7%d8%b5%d9%8a-%d8%af%d9%85%d8%a7%d8%a1" }, { "label": "مغامرة", "value": "%d9%85%d8%ba%d8%a7%d9%85%d8%b1%d8%a9" }, { "label": "مكتملة", "value": "%d9%85%d9%83%d8%aa%d9%85%d9%84%d8%a9" }, { "label": "نفسي", "value": "%d9%86%d9%81%d8%b3%d9%8a" }, { "label": "نهاية العالم", "value": "%d9%86%d9%87%d8%a7%d9%8a%d8%a9-%d8%a7%d9%84%d8%b9%d8%a7%d9%84%d9%85" }, { "label": "واب تون", "value": "%d9%88%d8%a7%d8%a8-%d8%aa%d9%88%d9%86" }, { "label": "وان شوت", "value": "%d9%88%d8%a7%d9%86-%d8%b4%d9%88%d8%aa" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+12 -6
View File
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
@@ -25,12 +25,17 @@ exports.icon = "multisrc/madara/icons/teamxnovel.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://teamxnovel.com/"; exports.site = "https://teamxnovel.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +175,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/boxnovel.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://boxnovel.com/"; exports.site = "https://boxnovel.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "manga-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "GENRES", "values": [{ "label": "Action", "value": "action" }, { "label": "Adventure", "value": "adventure" }, { "label": "Comedy", "value": "comedy" }, { "label": "Drama", "value": "drama" }, { "label": "Ecchi", "value": "ecchi" }, { "label": "Fantasy", "value": "fantasy" }, { "label": "Gender Bender", "value": "gender-bender" }, { "label": "Harem", "value": "harem" }, { "label": "Historical", "value": "historical" }, { "label": "Horror", "value": "horror" }, { "label": "Josei", "value": "josei" }, { "label": "Martial Arts", "value": "martial-arts" }, { "label": "Mature", "value": "mature" }, { "label": "Mecha", "value": "mecha" }, { "label": "Mystery", "value": "mystery" }, { "label": "Psychological", "value": "psychological" }, { "label": "Romance", "value": "romance" }, { "label": "School Life", "value": "school-life" }, { "label": "Sci-fi", "value": "sci-fi" }, { "label": "Seinen", "value": "seinen" }, { "label": "Shoujo", "value": "shoujo" }, { "label": "Shounen", "value": "shounen" }, { "label": "Slice of Life", "value": "slice-of-life" }, { "label": "Smut", "value": "smut" }, { "label": "Sports", "value": "sports" }, { "label": "Supernatural", "value": "supernatural" }, { "label": "Tragedy", "value": "tragedy" }, { "label": "Wuxia", "value": "wuxia" }, { "label": "Xianxia", "value": "xianxia" }, { "label": "Xuanhuan", "value": "xuanhuan" }, { "label": "Yaoi", "value": "yaoi" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+12 -6
View File
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
@@ -25,12 +25,17 @@ exports.icon = "multisrc/madara/icons/clicknovel.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://clicknovel.net/"; exports.site = "https://clicknovel.net/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +175,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [];
+12 -6
View File
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
@@ -25,12 +25,17 @@ exports.icon = "multisrc/madara/icons/cratenovel.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://cratenovel.com/"; exports.site = "https://cratenovel.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +175,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/daonovel.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://daonovel.com/"; exports.site = "https://daonovel.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novels-list" + '/page/' + pageNo + sortOrder; }
else {
url += "novels-list/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/fanstranslations.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://fanstranslations.com/"; exports.site = "https://fanstranslations.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/firstkissnovel.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://1stkissnovel.org/"; exports.site = "https://1stkissnovel.org/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "GENRES", "values": [{ "label": "Action", "value": "action" }, { "label": "Adult", "value": "adult" }, { "label": "Adventure", "value": "adventure" }, { "label": "Anime", "value": "anime" }, { "label": "Apocalypse", "value": "apocalypse" }, { "label": "Boy's Love", "value": "boys-love" }, { "label": "Comedy", "value": "comedy" }, { "label": "Completed", "value": "completed" }, { "label": "Cooking", "value": "cooking" }, { "label": "Demons", "value": "demons" }, { "label": "Detective", "value": "detective" }, { "label": "Drama", "value": "drama" }, { "label": "Ecchi", "value": "ecchi" }, { "label": "Fan-Fiction", "value": "fan-fiction" }, { "label": "Fantasy", "value": "fantasy" }, { "label": "Food", "value": "food" }, { "label": "Game", "value": "game" }, { "label": "Gender Bender", "value": "gender-bender" }, { "label": "Girls Love", "value": "girls-love" }, { "label": "Harem", "value": "harem" }, { "label": "Historical", "value": "historical" }, { "label": "Horror", "value": "horror" }, { "label": "Humor", "value": "humor" }, { "label": "Isekai", "value": "isekai" }, { "label": "Josei", "value": "josei" }, { "label": "Magic", "value": "magic" }, { "label": "Magical", "value": "magical" }, { "label": "Manhua", "value": "manhua" }, { "label": "Manhwa", "value": "manhwa" }, { "label": "Martial Arts", "value": "martial-arts" }, { "label": "Mature", "value": "mature" }, { "label": "Mecha", "value": "mecha" }, { "label": "Medical", "value": "medical" }, { "label": "Military", "value": "military" }, { "label": "Moder", "value": "moder" }, { "label": "Modern", "value": "modern" }, { "label": "Murim", "value": "murim" }, { "label": "Music", "value": "music" }, { "label": "Mystery", "value": "mystery" }, { "label": "Psychological", "value": "psychological" }, { "label": "Reverse", "value": "reverse" }, { "label": "Reverse harem", "value": "reverse-harem" }, { "label": "Romance", "value": "romance" }, { "label": "School Life", "value": "school-life" }, { "label": "Sci-fi", "value": "sci-fi" }, { "label": "Seinen", "value": "seinen" }, { "label": "Shoujo", "value": "shoujo" }, { "label": "Shoujo Ai", "value": "shoujo-ai" }, { "label": "Shounen", "value": "shounen" }, { "label": "Shounen Ai", "value": "shounen-ai" }, { "label": "Slice of Life", "value": "slice-of-life" }, { "label": "Smut", "value": "smut" }, { "label": "Sports", "value": "sports" }, { "label": "Super power", "value": "super-power" }, { "label": "Superhero", "value": "superhero" }, { "label": "Supernatural", "value": "supernatural" }, { "label": "Thriller", "value": "thriller" }, { "label": "Tragedy", "value": "tragedy" }, { "label": "Urban Life", "value": "urban-life" }, { "label": "Vampire", "value": "vampire" }, { "label": "Webtoons", "value": "webtoons" }, { "label": "Wuxia", "value": "wuxia" }, { "label": "Xianxia", "value": "xianxia" }, { "label": "Xuanhuan", "value": "xuanhuan" }, { "label": "Yaoi", "value": "yaoi" }, { "label": "Yuri", "value": "yuri" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/freenovelme.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://freenovel.me/"; exports.site = "https://freenovel.me/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "GENRES", "values": [{ "label": "Action", "value": "action" }, { "label": "Adult", "value": "adult" }, { "label": "Adventure", "value": "adventure" }, { "label": "Cartoon", "value": "cartoon" }, { "label": "Comedy", "value": "comedy" }, { "label": "Cooking", "value": "cooking" }, { "label": "Detective", "value": "detective" }, { "label": "Drama", "value": "drama" }, { "label": "Fantasy", "value": "fantasy" }, { "label": "Game", "value": "game" }, { "label": "Gender Bender", "value": "gender-bender" }, { "label": "Historical", "value": "historical" }, { "label": "History", "value": "history" }, { "label": "Horror", "value": "horror" }, { "label": "Josei", "value": "josei" }, { "label": "Live action", "value": "live-action" }, { "label": "Martial", "value": "martial" }, { "label": "Martial Arts", "value": "martial-arts" }, { "label": "Mature", "value": "mature" }, { "label": "Mecha", "value": "mecha" }, { "label": "Mystery", "value": "mystery" }, { "label": "One shot", "value": "one-shot" }, { "label": "Premium", "value": "premium" }, { "label": "Psychological", "value": "psychological" }, { "label": "Reincarnation", "value": "reincarnation" }, { "label": "Romance", "value": "romance" }, { "label": "School Life", "value": "school-life" }, { "label": "Sci-fi", "value": "sci-fi" }, { "label": "Slice of Life", "value": "slice-of-life" }, { "label": "Smut", "value": "smut" }, { "label": "Sports", "value": "sports" }, { "label": "Supernatural", "value": "supernatural" }, { "label": "Tragedy", "value": "tragedy" }, { "label": "Wuxia", "value": "wuxia" }, { "label": "Xianxia", "value": "xianxia" }, { "label": "Xuanhuan", "value": "xuanhuan" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/guavaread.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://guavaread.com/"; exports.site = "https://guavaread.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "GENRES", "values": [{ "label": "Action", "value": "action" }, { "label": "Adult", "value": "adult" }, { "label": "Adventure", "value": "adventure" }, { "label": "Comedy", "value": "comedy" }, { "label": "Complete", "value": "complete" }, { "label": "Cooking", "value": "cooking" }, { "label": "Detective", "value": "detective" }, { "label": "Drama", "value": "drama" }, { "label": "Dropped", "value": "dropped" }, { "label": "Ecchi", "value": "ecchi" }, { "label": "Fantasy", "value": "fantasy" }, { "label": "Gender Bender", "value": "gender-bender" }, { "label": "Historical", "value": "historical" }, { "label": "Horror", "value": "horror" }, { "label": "Josei", "value": "josei" }, { "label": "Mature", "value": "mature" }, { "label": "Mystery", "value": "mystery" }, { "label": "Original Story", "value": "original-story" }, { "label": "Pilot", "value": "pilot" }, { "label": "Psychological", "value": "psychological" }, { "label": "R-15", "value": "r-15" }, { "label": "R-19", "value": "r-19" }, { "label": "Reverse Harem", "value": "reverse-harem" }, { "label": "Romance", "value": "romance" }, { "label": "School Life", "value": "school-life" }, { "label": "Sci-fi", "value": "sci-fi" }, { "label": "Shoujo", "value": "shoujo" }, { "label": "Slice of Life", "value": "slice-of-life" }, { "label": "Smut", "value": "smut" }, { "label": "Supernatural", "value": "supernatural" }, { "label": "Tragedy", "value": "tragedy" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/lightnovelheaven.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://lightnovelheaven.com/"; exports.site = "https://lightnovelheaven.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "series" + '/page/' + pageNo + sortOrder; }
else {
url += "series/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+138
View File
@@ -0,0 +1,138 @@
"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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio");
const isAbsoluteUrl_1 = require("@libs/isAbsoluteUrl");
const fetch_1 = require("@libs/fetch");
exports.id = "LNR.org";
exports.name = "LightNovelReader";
exports.icon = "src/en/lightnovelreader/icon.png";
exports.version = "1.0.0";
exports.site = "https://lightnovelreader.org";
const baseUrl = exports.site;
const popularNovels = function (page) {
return __awaiter(this, void 0, void 0, function* () {
const url = baseUrl + "/ranking/top-rated/" + page;
const result = yield (0, fetch_1.fetchApi)(url);
const body = yield result.text();
const loadedCheerio = (0, cheerio_1.load)(body);
const novels = [];
loadedCheerio(".category-items.ranking-category.cm-list > ul > li").each(function () {
let novelUrl = loadedCheerio(this).find("a").attr("href");
if (novelUrl && !(0, isAbsoluteUrl_1.isUrlAbsolute)(novelUrl)) {
novelUrl = baseUrl + novelUrl;
}
if (novelUrl) {
const novelName = loadedCheerio(this)
.find(".category-name a")
.text()
.trim();
let novelCover = loadedCheerio(this)
.find(".category-img img")
.attr("src");
if (novelCover && !(0, isAbsoluteUrl_1.isUrlAbsolute)(novelCover)) {
novelCover = baseUrl + novelCover;
}
const novel = {
url: novelUrl,
name: novelName,
cover: novelCover,
};
novels.push(novel);
}
});
return novels;
});
};
exports.popularNovels = popularNovels;
const parseNovelAndChapters = function (novelUrl) {
return __awaiter(this, void 0, void 0, function* () {
const url = novelUrl;
const result = yield (0, fetch_1.fetchApi)(url);
const body = yield result.text();
let loadedCheerio = (0, cheerio_1.load)(body);
const novel = {
url: novelUrl,
chapters: [],
};
novel.name = loadedCheerio(".section-header-title > h2").text();
let novelCover = loadedCheerio(".novels-detail img").attr("src");
novel.cover = novelCover
? (0, isAbsoluteUrl_1.isUrlAbsolute)(novelCover)
? novelCover
: baseUrl + novelCover
: undefined;
novel.summary = loadedCheerio("div.container > div > div.col-12.col-xl-9 > div > div:nth-child(5) > div")
.text()
.trim();
novel.author = loadedCheerio("div.novels-detail-right > ul > li:nth-child(6) > .novels-detail-right-in-right > a")
.text()
.trim();
novel.genres = loadedCheerio("body > section:nth-child(4) > div > div > div.col-12.col-xl-9 > div > div:nth-child(2) > div > div.novels-detail-right > ul > li:nth-child(3) > div.novels-detail-right-in-right")
.text()
.trim();
novel.status = loadedCheerio("div.novels-detail-right > ul > li:nth-child(2) > .novels-detail-right-in-right")
.text()
.trim();
loadedCheerio(".cm-tabs-content > ul > li").each(function () {
var _a;
let chapterUrl = loadedCheerio(this).find("a").attr("href");
if (chapterUrl && !(0, isAbsoluteUrl_1.isUrlAbsolute)(chapterUrl)) {
chapterUrl = baseUrl + chapterUrl;
}
if (chapterUrl) {
const chapterName = loadedCheerio(this).find("a").text().trim();
const releaseDate = null;
const chapter = {
name: chapterName,
releaseTime: releaseDate,
url: chapterUrl,
};
(_a = novel.chapters) === null || _a === void 0 ? void 0 : _a.push(chapter);
}
});
return novel;
});
};
exports.parseNovelAndChapters = parseNovelAndChapters;
const parseChapter = function (chapterUrl) {
return __awaiter(this, void 0, void 0, function* () {
const url = chapterUrl;
const result = yield (0, fetch_1.fetchApi)(url);
const body = yield result.text();
const loadedCheerio = (0, cheerio_1.load)(body);
const chapterText = loadedCheerio("#chapterText").html() || "";
return chapterText;
});
};
exports.parseChapter = parseChapter;
const searchNovels = function (searchTerm) {
return __awaiter(this, void 0, void 0, function* () {
const url = baseUrl + `/search/autocomplete?dataType=json&query=${searchTerm}`;
const result = yield (0, fetch_1.fetchApi)(url);
const body = yield result.json();
const novels = [];
body.results.forEach((item) => novels.push({
url: item.link,
name: item.original_title,
cover: item.image,
}));
return novels;
});
};
exports.searchNovels = searchNovels;
const fetchImage = function (url) {
return __awaiter(this, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url, {});
});
};
exports.fetchImage = fetchImage;
+24 -24
View File
@@ -9,38 +9,40 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
}); });
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
// import dayjs from 'dayjs'; // import dayjs from 'dayjs';
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
// import { parseMadaraDate } from "@libs/parseMadaraDate"; const parseMadaraDate_1 = require("@libs/parseMadaraDate");
// import { isUrlAbsolute } from '@libs/isAbsoluteUrl'; // import { isUrlAbsolute } from '@libs/isAbsoluteUrl';
// import { showToast } from "@libs/showToast"; // import { showToast } from "@libs/showToast";
// import { Filter, FilterInputs } from "@libs/filterInputs"; const filterInputs_1 = require("@libs/filterInputs");
// import { NovelStatus } from '@libs/novelStatus'; // import { NovelStatus } from '@libs/novelStatus';
// import { defaultCover } from "@libs/defaultCover"; // import { defaultCover } from "@libs/defaultCover";
exports.id = "Ltnovel.com"; exports.id = "Ltnovel.com";
exports.name = "Ltnovel.com"; exports.name = "Ltnovel.com";
exports.icon = "multisrc/readwn/icon/ltnovel.png"; exports.icon = "multisrc/readwn/icons/ltnovel.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://www.ltnovel.com/"; exports.site = "https://www.ltnovel.com/";
// export const filters: Filter[] = [];
const baseUrl = exports.site;
const popularNovels = function (page, { filters, showLatestNovels }) { const popularNovels = function (page, { filters, showLatestNovels }) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const novels = []; const novels = [];
const pageNo = page - 1; const pageNo = page - 1;
const url = baseUrl + 'list/all/all-onclick-' + pageNo + '.html'; let url = exports.site + 'list/';
url += ((filters === null || filters === void 0 ? void 0 : filters.genres) || 'all') + '/';
url += ((filters === null || filters === void 0 ? void 0 : filters.status) || 'all') + '-';
url += (showLatestNovels ? 'lastdotime' : (filters === null || filters === void 0 ? void 0 : filters.sort) || 'newstime') + '-';
url += pageNo + '.html';
const result = yield (0, fetch_1.fetchApi)(url); const result = yield (0, fetch_1.fetchApi)(url);
const body = yield result.text(); const body = yield result.text();
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('li.novel-item').each(function () { loadedCheerio('li.novel-item').each(function () {
const novelName = loadedCheerio(this).find('h4').text(); const novelName = loadedCheerio(this).find('h4').text();
const novelUrl = baseUrl + loadedCheerio(this).find('a').attr('href'); const novelUrl = exports.site + loadedCheerio(this).find('a').attr('href');
const coverUri = loadedCheerio(this) const coverUri = loadedCheerio(this)
.find('.novel-cover > img') .find('.novel-cover > img')
.attr('data-src'); .attr('data-src');
const novelCover = baseUrl + coverUri; const novelCover = exports.site + coverUri;
const novel = { name: novelName, cover: novelCover, url: novelUrl }; const novel = { name: novelName, cover: novelCover, url: novelUrl };
novels.push(novel); novels.push(novel);
}); });
@@ -59,7 +61,7 @@ const parseNovelAndChapters = function (novelUrl) {
}; };
novel.name = loadedCheerio('h1.novel-title').text(); novel.name = loadedCheerio('h1.novel-title').text();
const coverUri = loadedCheerio('figure.cover > img').attr('data-src'); const coverUri = loadedCheerio('figure.cover > img').attr('data-src');
novel.cover = baseUrl + coverUri; novel.cover = exports.site + coverUri;
novel.summary = loadedCheerio('.summary') novel.summary = loadedCheerio('.summary')
.text() .text()
.replace('Summary', '') .replace('Summary', '')
@@ -76,7 +78,7 @@ const parseNovelAndChapters = function (novelUrl) {
novel.genres = novel.genres.slice(0, -1); novel.genres = novel.genres.slice(0, -1);
novel.author = loadedCheerio('span[itemprop=author]').text(); novel.author = loadedCheerio('span[itemprop=author]').text();
let novelChapters = []; let novelChapters = [];
const novelId = novelUrl.replace('.html', '').replace(baseUrl, ''); const novelId = novelUrl.replace('.html', '').replace(exports.site, '');
const latestChapterNo = parseInt(loadedCheerio('.header-stats') const latestChapterNo = parseInt(loadedCheerio('.header-stats')
.find('span > strong') .find('span > strong')
.first() .first()
@@ -89,20 +91,20 @@ const parseNovelAndChapters = function (novelUrl) {
.find('a .chapter-title') .find('a .chapter-title')
.text() .text()
.trim(); .trim();
const chapterUrl = baseUrl + ((_a = loadedCheerio(this).find('a').attr('href')) === null || _a === void 0 ? void 0 : _a.trim()); const chapterUrl = exports.site + ((_a = loadedCheerio(this).find('a').attr('href')) === null || _a === void 0 ? void 0 : _a.trim());
const releaseDate = loadedCheerio(this) const releaseDate = loadedCheerio(this)
.find('a .chapter-update') .find('a .chapter-update')
.text() .text()
.trim(); .trim();
lastChapterNo = parseInt(loadedCheerio(this).find('a .chapter-no').text().trim()); lastChapterNo = parseInt(loadedCheerio(this).find('a .chapter-no').text().trim());
const chapter = { name: chapterName, releaseTime: releaseDate, url: chapterUrl }; const chapter = { name: chapterName, releaseTime: (0, parseMadaraDate_1.parseMadaraDate)(releaseDate), url: chapterUrl };
novelChapters.push(chapter); novelChapters.push(chapter);
}); });
// Itterate once more before loop to finish off // Itterate once more before loop to finish off
lastChapterNo++; lastChapterNo++;
for (let i = lastChapterNo; i <= latestChapterNo; i++) { for (let i = lastChapterNo; i <= latestChapterNo; i++) {
const chapterName = 'Chapter ' + i; const chapterName = 'Chapter ' + i;
const chapterUrl = baseUrl + novelId + '_' + i + '.html'; const chapterUrl = exports.site + novelId + '_' + i + '.html';
const releaseDate = null; const releaseDate = null;
const chapter = { name: chapterName, releaseTime: releaseDate, url: chapterUrl }; const chapter = { name: chapterName, releaseTime: releaseDate, url: chapterUrl };
novelChapters.push(chapter); novelChapters.push(chapter);
@@ -124,12 +126,12 @@ const parseChapter = function (chapterUrl) {
exports.parseChapter = parseChapter; exports.parseChapter = parseChapter;
const searchNovels = (searchTerm) => __awaiter(void 0, void 0, void 0, function* () { const searchNovels = (searchTerm) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const searchUrl = baseUrl + 'e/search/index.php'; const searchUrl = exports.site + 'e/search/index.php';
const result = yield (0, fetch_1.fetchApi)(searchUrl, { const result = yield (0, fetch_1.fetchApi)(searchUrl, {
headers: { headers: {
'Content-Type': 'application/x-www-form-urlencoded', 'Content-Type': 'application/x-www-form-urlencoded',
Referer: baseUrl + 'search.html', Referer: exports.site + 'search.html',
Origin: baseUrl, Origin: exports.site,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36',
}, },
method: 'POST', method: 'POST',
@@ -144,9 +146,9 @@ const searchNovels = (searchTerm) => __awaiter(void 0, void 0, void 0, function*
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('li.novel-item').each(function () { loadedCheerio('li.novel-item').each(function () {
const novelName = loadedCheerio(this).find('h4').text(); const novelName = loadedCheerio(this).find('h4').text();
const novelUrl = baseUrl + loadedCheerio(this).find('a').attr('href'); const novelUrl = exports.site + loadedCheerio(this).find('a').attr('href');
const coverUri = baseUrl + loadedCheerio(this).find('img').attr('data-src'); const coverUri = exports.site + loadedCheerio(this).find('img').attr('data-src');
const novelCover = baseUrl + coverUri; const novelCover = exports.site + coverUri;
const novel = { const novel = {
name: novelName, name: novelName,
cover: novelCover, cover: novelCover,
@@ -157,7 +159,5 @@ const searchNovels = (searchTerm) => __awaiter(void 0, void 0, void 0, function*
return novels; return novels;
}); });
exports.searchNovels = searchNovels; exports.searchNovels = searchNovels;
const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () { exports.fetchImage = fetch_1.fetchFile;
return yield (0, fetch_1.fetchFile)(url, {}); exports.filters = [{ "key": "sort", "label": "Sort By", "values": [{ "label": "New", "value": "newstime" }, { "label": "Popular", "value": "onclick" }, { "label": "Updates", "value": "lastdotime" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "status", "label": "Status", "values": [{ "label": "All", "value": "all" }, { "label": "Completed", "value": "Completed" }, { "label": "Ongoing", "value": "Ongoing" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "Genre / Category", "values": [{ "label": "All", "value": "all" }, { "label": "Action", "value": "action" }, { "label": "Adult", "value": "adult" }, { "label": "Adventure", "value": "adventure" }, { "label": "Comedy", "value": "comedy" }, { "label": "Contemporary Romance", "value": "contemporary-romance" }, { "label": "Drama", "value": "drama" }, { "label": "Eastern Fantasy", "value": "eastern-fantasy" }, { "label": "Ecchi", "value": "ecchi" }, { "label": "Fantasy", "value": "fantasy" }, { "label": "Fantasy Romance", "value": "fantasy-romance" }, { "label": "Game", "value": "game" }, { "label": "Gender Bender", "value": "gender-bender" }, { "label": "Harem", "value": "harem" }, { "label": "Historical", "value": "historical" }, { "label": "Horror", "value": "horror" }, { "label": "Josei", "value": "josei" }, { "label": "Lolicon", "value": "lolicon" }, { "label": "Magical Realism", "value": "magical-realism" }, { "label": "Martial Arts", "value": "martial-arts" }, { "label": "Mature", "value": "mature" }, { "label": "Mecha", "value": "mecha" }, { "label": "Mystery", "value": "mystery" }, { "label": "Psychological", "value": "psychological" }, { "label": "Romance", "value": "romance" }, { "label": "School Life", "value": "school-life" }, { "label": "Sci-fi", "value": "sci-fi" }, { "label": "Seinen", "value": "seinen" }, { "label": "Shoujo", "value": "shoujo" }, { "label": "Shounen", "value": "shounen" }, { "label": "Shounen Ai", "value": "shounen-ai" }, { "label": "Slice of Life", "value": "slice-of-life" }, { "label": "Smut", "value": "smut" }, { "label": "Sports", "value": "sports" }, { "label": "Supernatural", "value": "supernatural" }, { "label": "Tragedy", "value": "tragedy" }, { "label": "Video Games", "value": "video-games" }, { "label": "Wuxia", "value": "wuxia" }, { "label": "Xianxia", "value": "xianxia" }, { "label": "Xuanhuan", "value": "xuanhuan" }, { "label": "Yaoi", "value": "yaoi" }], "inputType": filterInputs_1.FilterInputs.Picker }];
});
exports.fetchImage = fetchImage;
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/lunarletters.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://www.lunarletters.com/"; exports.site = "https://www.lunarletters.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "series" + '/page/' + pageNo + sortOrder; }
else {
url += "series/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+12 -6
View File
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
@@ -25,12 +25,17 @@ exports.icon = "multisrc/madara/icons/mtlnovel.club.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://mtlnovel.club/"; exports.site = "https://mtlnovel.club/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +175,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/mtl-novel.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://mtl-novel.com/"; exports.site = "https://mtl-novel.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "manga-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "GENRES", "values": [{ "label": "Action", "value": "action" }, { "label": "Adult", "value": "adult" }, { "label": "Adventure", "value": "adventure" }, { "label": "Chinese", "value": "chinese" }, { "label": "Comedy", "value": "comedy" }, { "label": "Conan", "value": "conan" }, { "label": "Drama", "value": "drama" }, { "label": "Erciyuan", "value": "erciyuan" }, { "label": "Fairy Tail", "value": "fairy-tail" }, { "label": "Faloo", "value": "faloo" }, { "label": "Fan-Fiction", "value": "fan-fiction" }, { "label": "Fantasy", "value": "fantasy" }, { "label": "FoodWars!", "value": "foodwars" }, { "label": "Game", "value": "game" }, { "label": "Gender Bender", "value": "gender-bender" }, { "label": "Harem", "value": "harem" }, { "label": "Historical", "value": "historical" }, { "label": "Horror", "value": "horror" }, { "label": "Hunter x Hunter", "value": "hunter-x-hunter" }, { "label": "Japanese", "value": "japanese" }, { "label": "Jojo", "value": "jojo" }, { "label": "Josei", "value": "josei" }, { "label": "Korean", "value": "korean" }, { "label": "Martial Arts", "value": "martial-arts" }, { "label": "Marvel", "value": "marvel" }, { "label": "Mature", "value": "mature" }, { "label": "Mecha", "value": "mecha" }, { "label": "Military", "value": "military" }, { "label": "Mystery", "value": "mystery" }, { "label": "Naruto", "value": "naruto" }, { "label": "One piece", "value": "one-piece" }, { "label": "Pokemon", "value": "pokemon" }, { "label": "Psychological", "value": "psychological" }, { "label": "Romance", "value": "romance" }, { "label": "School Life", "value": "school-life" }, { "label": "Sci-fi", "value": "sci-fi" }, { "label": "Seinen", "value": "seinen" }, { "label": "Shoujo", "value": "shoujo" }, { "label": "Shoujo Ai", "value": "shoujo-ai" }, { "label": "Shounen Ai", "value": "shounen-ai" }, { "label": "Slice of Life", "value": "slice-of-life" }, { "label": "Smut", "value": "smut" }, { "label": "Sport", "value": "sport" }, { "label": "Sports", "value": "sports" }, { "label": "Supernatural", "value": "supernatural" }, { "label": "System", "value": "system" }, { "label": "Tragedy", "value": "tragedy" }, { "label": "Urban", "value": "urban" }, { "label": "Urban Life", "value": "urban-life" }, { "label": "Wuxia", "value": "wuxia" }, { "label": "Xianxia", "value": "xianxia" }, { "label": "Xuanhuan", "value": "xuanhuan" }, { "label": "Yaoi", "value": "yaoi" }, { "label": "Yuri", "value": "yuri" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/mostnovel.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://mostnovel.com/"; exports.site = "https://mostnovel.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "manga-genre/" + filters.genres + '/';
let url = exports.site + "manga" + '/page/' + pageNo + sortOrder; }
else {
url += "manga/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "GENRES", "values": [{ "label": "ACG", "value": "acg" }, { "label": "Action", "value": "action" }, { "label": "Adult", "value": "adult" }, { "label": "Adventure", "value": "adventure" }, { "label": "AGA", "value": "aga" }, { "label": "Anime", "value": "anime" }, { "label": "Anime & Comics", "value": "anime-comics" }, { "label": "Bender", "value": "bender" }, { "label": "BL", "value": "bl" }, { "label": "Cartoon", "value": "cartoon" }, { "label": "Comedy", "value": "comedy" }, { "label": "Comic", "value": "comic" }, { "label": "Contemporary Romance", "value": "contemporary-romance" }, { "label": "Cooking", "value": "cooking" }, { "label": "Cultivation", "value": "cultivation" }, { "label": "Detective", "value": "detective" }, { "label": "Doujinshi", "value": "doujinshi" }, { "label": "Drama", "value": "drama" }, { "label": "Eastern Fantasy", "value": "eastern-fantasy" }, { "label": "Ecchi", "value": "ecchi" }, { "label": "Fantasy", "value": "fantasy" }, { "label": "Gender Bender", "value": "gender-bender" }, { "label": "Harem", "value": "harem" }, { "label": "Historical", "value": "historical" }, { "label": "Horror", "value": "horror" }, { "label": "Horror&Thriller", "value": "horrorthriller" }, { "label": "Josei", "value": "josei" }, { "label": "Live action", "value": "live-action" }, { "label": "Magical Realism", "value": "magical-realism" }, { "label": "Manga", "value": "manga" }, { "label": "Manhua", "value": "manhua" }, { "label": "Manhwa", "value": "manhwa" }, { "label": "Martial Arts", "value": "martial-arts" }, { "label": "Mature", "value": "mature" }, { "label": "Mecha", "value": "mecha" }, { "label": "Modern", "value": "modern" }, { "label": "Movies", "value": "movies" }, { "label": "Mystery", "value": "mystery" }, { "label": "One shot", "value": "one-shot" }, { "label": "Psychological", "value": "psychological" }, { "label": "Romance", "value": "romance" }, { "label": "School Life", "value": "school-life" }, { "label": "Sci-fi", "value": "sci-fi" }, { "label": "Seinen", "value": "seinen" }, { "label": "Shoujo", "value": "shoujo" }, { "label": "Shoujo Ai", "value": "shoujo-ai" }, { "label": "Shounen", "value": "shounen" }, { "label": "Shounen Ai", "value": "shounen-ai" }, { "label": "Slice of Life", "value": "slice-of-life" }, { "label": "Smart MC", "value": "smart-mc" }, { "label": "Smut", "value": "smut" }, { "label": "Soft Yaoi", "value": "soft-yaoi" }, { "label": "Soft Yuri", "value": "soft-yuri" }, { "label": "Sports", "value": "sports" }, { "label": "Supernatural", "value": "supernatural" }, { "label": "Tragedy", "value": "tragedy" }, { "label": "Urban Life", "value": "urban-life" }, { "label": "Video Games", "value": "video-games" }, { "label": "Webtoon", "value": "webtoon" }, { "label": "Wuxia", "value": "wuxia" }, { "label": "Xianxia", "value": "xianxia" }, { "label": "Xuanhuan", "value": "xuanhuan" }, { "label": "Yaoi", "value": "yaoi" }, { "label": "Yuri", "value": "yuri" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/mysticalseries.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://mysticalmerries.com/"; exports.site = "https://mysticalmerries.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "genre/" + filters.genres + '/';
let url = exports.site + "series" + '/page/' + pageNo + sortOrder; }
else {
url += "series/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "GENRES", "values": [{ "label": "Action", "value": "action" }, { "label": "Adaptation", "value": "adaptation" }, { "label": "Adventure", "value": "adventure" }, { "label": "bilibili", "value": "bilibili" }, { "label": "Chinese Novel", "value": "chinese-novel" }, { "label": "Comedy", "value": "comedy" }, { "label": "Crossdressing", "value": "crossdressing" }, { "label": "Drama", "value": "drama" }, { "label": "Dropped", "value": "dropped" }, { "label": "Family", "value": "family" }, { "label": "Fantasy", "value": "fantasy" }, { "label": "Gender Bender", "value": "gender-bender" }, { "label": "Historical", "value": "historical" }, { "label": "Horror", "value": "horror" }, { "label": "Isekai", "value": "isekai" }, { "label": "Korean Novel", "value": "korean-novell" }, { "label": "Manga", "value": "manga" }, { "label": "Manhua", "value": "manhua" }, { "label": "Manhwa", "value": "manhwa" }, { "label": "Modern Romance", "value": "modern-romance" }, { "label": "Mystery", "value": "mystery" }, { "label": "Office Workers", "value": "office-workers" }, { "label": "One shot", "value": "one-shot" }, { "label": "Pilot Novel", "value": "pilot-novel" }, { "label": "R15", "value": "r15" }, { "label": "R19", "value": "r19" }, { "label": "Regression", "value": "regression" }, { "label": "Reincarnation", "value": "reincarnation" }, { "label": "Reverse Harem", "value": "reverse-harem" }, { "label": "Romance Fantasy", "value": "romance-fantasy" }, { "label": "School Life", "value": "school-life" }, { "label": "Sci-fi", "value": "sci-fi" }, { "label": "Slice of Life", "value": "slice-of-life" }, { "label": "Smut", "value": "smut" }, { "label": "Supernatural", "value": "supernatural" }, { "label": "Violence", "value": "violence" }], "inputType": filterInputs_1.FilterInputs.Picker }];
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/neosekaitranslations.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://www.neosekaitranslations.com/"; exports.site = "https://www.neosekaitranslations.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "GENRES", "values": [{ "label": "Action", "value": "action" }, { "label": "Adventure", "value": "adventure" }, { "label": "Comedy", "value": "comedy" }, { "label": "Drama", "value": "drama" }, { "label": "Fantasy", "value": "fantasy" }, { "label": "Harem", "value": "harem" }, { "label": "Horror", "value": "horror" }, { "label": "Mature", "value": "mature" }, { "label": "Mecha", "value": "mecha" }, { "label": "Mystery", "value": "mystery" }, { "label": "Psychological", "value": "psychological" }, { "label": "Romance", "value": "romance" }, { "label": "School Life", "value": "school-life" }, { "label": "Sci-Fi", "value": "sci-fi" }, { "label": "Slice of Life", "value": "slice-of-life" }], "inputType": filterInputs_1.FilterInputs.Picker }];
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/nocturnetranslations.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://nocturnetls.net/"; exports.site = "https://nocturnetls.net/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "manga-genre/" + filters.genres + '/';
let url = exports.site + "novels" + '/page/' + pageNo + sortOrder; }
else {
url += "novels/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "GENRES", "values": [{ "label": "Action", "value": "action" }, { "label": "Adult", "value": "adult" }, { "label": "Adventure", "value": "adventure" }, { "label": "Anime", "value": "anime" }, { "label": "Cartoon", "value": "cartoon" }, { "label": "Comedy", "value": "comedy" }, { "label": "Comic", "value": "comic" }, { "label": "Cooking", "value": "cooking" }, { "label": "Detective", "value": "detective" }, { "label": "Doujinshi", "value": "doujinshi" }, { "label": "Drama", "value": "drama" }, { "label": "Ecchi", "value": "ecchi" }, { "label": "Fantasy", "value": "fantasy" }, { "label": "Gender Bender", "value": "gender-bender" }, { "label": "Harem", "value": "harem" }, { "label": "Historical", "value": "historical" }, { "label": "Horror", "value": "horror" }, { "label": "Josei", "value": "josei" }, { "label": "Live action", "value": "live-action" }, { "label": "Manga", "value": "manga" }, { "label": "Manhua", "value": "manhua" }, { "label": "Manhwa", "value": "manhwa" }, { "label": "Martial Arts", "value": "martial-arts" }, { "label": "Mature", "value": "mature" }, { "label": "Mecha", "value": "mecha" }, { "label": "Mystery", "value": "mystery" }, { "label": "One shot", "value": "one-shot" }, { "label": "Psychological", "value": "psychological" }, { "label": "Romance", "value": "romance" }, { "label": "School Life", "value": "school-life" }, { "label": "Sci-fi", "value": "sci-fi" }, { "label": "Seinen", "value": "seinen" }, { "label": "Shoujo", "value": "shoujo" }, { "label": "Shoujo Ai", "value": "shoujo-ai" }, { "label": "Shounen", "value": "shounen" }, { "label": "Shounen Ai", "value": "shounen-ai" }, { "label": "Slice of Life", "value": "slice-of-life" }, { "label": "Smut", "value": "smut" }, { "label": "Soft Yaoi", "value": "soft-yaoi" }, { "label": "Soft Yuri", "value": "soft-yuri" }, { "label": "Sports", "value": "sports" }, { "label": "Supernatural", "value": "supernatural" }, { "label": "Tragedy", "value": "tragedy" }, { "label": "Webtoon", "value": "webtoon" }, { "label": "Yaoi", "value": "yaoi" }, { "label": "Yuri", "value": "yuri" }], "inputType": filterInputs_1.FilterInputs.Picker }];
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
@@ -25,12 +25,17 @@ exports.icon = "multisrc/madara/icons/noobchantranslation.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://noobchan.xyz/"; exports.site = "https://noobchan.xyz/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +175,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/novelmultiverse.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://www.novelmultiverse.com/"; exports.site = "https://www.novelmultiverse.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "GENRES", "values": [{ "label": "Action", "value": "action" }, { "label": "Adult", "value": "adult" }, { "label": "Adventure", "value": "adventure" }, { "label": "Anime", "value": "anime" }, { "label": "Cartoon", "value": "cartoon" }, { "label": "Comedy", "value": "comedy" }, { "label": "Comic", "value": "comic" }, { "label": "Cooking", "value": "cooking" }, { "label": "Detective", "value": "detective" }, { "label": "Doujinshi", "value": "doujinshi" }, { "label": "Drama", "value": "drama" }, { "label": "Ecchi", "value": "ecchi" }, { "label": "Fantasy", "value": "fantasy" }, { "label": "Gender Bender", "value": "gender-bender" }, { "label": "Harem", "value": "harem" }, { "label": "Historical", "value": "historical" }, { "label": "Horror", "value": "horror" }, { "label": "Josei", "value": "josei" }, { "label": "Live action", "value": "live-action" }, { "label": "Manga", "value": "manga" }, { "label": "Manhua", "value": "manhua" }, { "label": "Manhwa", "value": "manhwa" }, { "label": "Martial Arts", "value": "martial-arts" }, { "label": "Mature", "value": "mature" }, { "label": "Mecha", "value": "mecha" }, { "label": "Mystery", "value": "mystery" }, { "label": "One shot", "value": "one-shot" }, { "label": "Original", "value": "original" }, { "label": "Psychological", "value": "psychological" }, { "label": "Romance", "value": "romance" }, { "label": "School Life", "value": "school-life" }, { "label": "Sci-fi", "value": "sci-fi" }, { "label": "Seinen", "value": "seinen" }, { "label": "Shoujo", "value": "shoujo" }, { "label": "Shoujo Ai", "value": "shoujo-ai" }, { "label": "Shounen", "value": "shounen" }, { "label": "Shounen Ai", "value": "shounen-ai" }, { "label": "Slice of Life", "value": "slice-of-life" }, { "label": "Smut", "value": "smut" }, { "label": "Soft Yaoi", "value": "soft-yaoi" }, { "label": "Soft Yuri", "value": "soft-yuri" }, { "label": "Sports", "value": "sports" }, { "label": "Supernatural", "value": "supernatural" }, { "label": "Tragedy", "value": "tragedy" }, { "label": "Translation", "value": "translation" }, { "label": "Webtoon", "value": "webtoon" }, { "label": "Wuxia", "value": "wuxia" }, { "label": "Xianxia", "value": "xianxia" }, { "label": "Xuanhuan", "value": "xuanhuan" }, { "label": "Yaoi", "value": "yaoi" }, { "label": "Yuri", "value": "yuri" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+14 -7
View File
@@ -12,25 +12,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
const dayjs_1 = __importDefault(require("dayjs")); const dayjs_1 = __importDefault(require("dayjs"));
exports.id = "novelr18"; exports.id = "novelr18";
exports.name = "NovelR18 [madara]"; exports.name = "NovelR18 [madara]";
exports.icon = "multisrc/madara/icons/novelr18.png"; exports.icon = "multisrc/madara/icons/novelr18.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://novelr18.com/"; exports.site = "https://novelr18.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "novel-genre/" + filters.genres + '/';
let url = exports.site + "novel" + '/page/' + pageNo + sortOrder; }
else {
url += "novel/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Sort by :", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest Update", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "Newly Added Novels", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+13 -6
View File
@@ -12,9 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
const filterInputs_1 = require("@libs/filterInputs");
const defaultCover_1 = require("@libs/defaultCover"); const defaultCover_1 = require("@libs/defaultCover");
const novelStatus_1 = require("@libs/novelStatus"); const novelStatus_1 = require("@libs/novelStatus");
const parseMadaraDate_1 = require("@libs/parseMadaraDate"); const parseMadaraDate_1 = require("@libs/parseMadaraDate");
@@ -25,12 +26,17 @@ exports.icon = "multisrc/madara/icons/noveltranslate.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://noveltranslate.com/"; exports.site = "https://noveltranslate.com/";
const baseUrl = exports.site; const baseUrl = exports.site;
const popularNovels = (pageNo, { showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () { const popularNovels = (pageNo, { filters, showLatestNovels }) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const sortOrder = showLatestNovels let url = exports.site;
? '?m_orderby=latest' if (filters === null || filters === void 0 ? void 0 : filters.genres) {
: '/?m_orderby=rating'; url += "manga-genre/" + filters.genres + '/';
let url = exports.site + "all-novels" + '/page/' + pageNo + sortOrder; }
else {
url += "all-novels/";
}
url += '/page/' + pageNo + '/' +
'?m_orderby=' + (showLatestNovels ? 'latest' : ((filters === null || filters === void 0 ? void 0 : filters.sort) || 'rating'));
const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text()); const body = yield (0, fetch_1.fetchApi)(url).then(res => res.text());
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('.manga-title-badges').remove(); loadedCheerio('.manga-title-badges').remove();
@@ -170,3 +176,4 @@ const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, fetch_1.fetchFile)(url); return yield (0, fetch_1.fetchFile)(url);
}); });
exports.fetchImage = fetchImage; exports.fetchImage = fetchImage;
exports.filters = [{ "key": "sort", "label": "Order by", "values": [{ "label": "Rating", "value": "rating" }, { "label": "A-Z", "value": "alphabet" }, { "label": "Latest", "value": "latest" }, { "label": "Most Views", "value": "views" }, { "label": "New", "value": "new-manga" }, { "label": "Trending", "value": "trending" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "GENRES", "values": [{ "label": "Action", "value": "action" }, { "label": "Adult", "value": "adult" }, { "label": "Adventure", "value": "adventure" }, { "label": "Bleach", "value": "bleach" }, { "label": "Chinese", "value": "chinese" }, { "label": "Comedy", "value": "comedy" }, { "label": "Conan", "value": "conan" }, { "label": "cooking", "value": "cooking" }, { "label": "Dragon Ball", "value": "dragon-ball" }, { "label": "Drama", "value": "drama" }, { "label": "Ecchi", "value": "ecchi" }, { "label": "Erciyuan", "value": "erciyuan" }, { "label": "Fairy Tail", "value": "fairy-tail" }, { "label": "Faloo", "value": "faloo" }, { "label": "Fan-Fiction", "value": "fan-fiction" }, { "label": "Fantasy", "value": "fantasy" }, { "label": "FoodWars!", "value": "foodwars" }, { "label": "Game", "value": "game" }, { "label": "Gender Bender", "value": "gender-bender" }, { "label": "Harem", "value": "harem" }, { "label": "Historical", "value": "historical" }, { "label": "Horror", "value": "horror" }, { "label": "Hunter x Hunter", "value": "hunter-x-hunter" }, { "label": "Isekai", "value": "isekai" }, { "label": "Japanese", "value": "japanese" }, { "label": "Jojo", "value": "jojo" }, { "label": "Josei", "value": "josei" }, { "label": "Korean", "value": "korean" }, { "label": "Martial Arts", "value": "martial-arts" }, { "label": "Marvel", "value": "marvel" }, { "label": "Mature", "value": "mature" }, { "label": "Mecha", "value": "mecha" }, { "label": "Military", "value": "military" }, { "label": "Mystery", "value": "mystery" }, { "label": "Naruto", "value": "naruto" }, { "label": "One piece", "value": "one-piece" }, { "label": "Pokemon", "value": "pokemon" }, { "label": "Political", "value": "political" }, { "label": "Psychological", "value": "psychological" }, { "label": "Romance", "value": "romance" }, { "label": "School Life", "value": "school-life" }, { "label": "Sci-fi", "value": "sci-fi" }, { "label": "Seinen", "value": "seinen" }, { "label": "Shoujo", "value": "shoujo" }, { "label": "Shoujo Ai", "value": "shoujo-ai" }, { "label": "Shounen", "value": "shounen" }, { "label": "Shounen Ai", "value": "shounen-ai" }, { "label": "Slice of Life", "value": "slice-of-life" }, { "label": "Smut", "value": "smut" }, { "label": "Sport", "value": "sport" }, { "label": "Sports", "value": "sports" }, { "label": "Supernatural", "value": "supernatural" }, { "label": "System", "value": "system" }, { "label": "Toriko", "value": "toriko" }, { "label": "Tragedy", "value": "tragedy" }, { "label": "Urban", "value": "urban" }, { "label": "Urban Life", "value": "urban-life" }, { "label": "Wuxia", "value": "wuxia" }, { "label": "Xianxia", "value": "xianxia" }, { "label": "Xuanhuan", "value": "xuanhuan" }, { "label": "Yaoi", "value": "yaoi" }, { "label": "Yuri", "value": "yuri" }], "inputType": filterInputs_1.FilterInputs.Picker }];
+24 -24
View File
@@ -9,38 +9,40 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
}); });
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0; exports.filters = exports.fetchImage = exports.searchNovels = exports.parseChapter = exports.parseNovelAndChapters = exports.popularNovels = exports.site = exports.version = exports.icon = exports.name = exports.id = void 0;
const cheerio_1 = require("cheerio"); const cheerio_1 = require("cheerio");
// import dayjs from 'dayjs'; // import dayjs from 'dayjs';
const fetch_1 = require("@libs/fetch"); const fetch_1 = require("@libs/fetch");
// import { parseMadaraDate } from "@libs/parseMadaraDate"; const parseMadaraDate_1 = require("@libs/parseMadaraDate");
// import { isUrlAbsolute } from '@libs/isAbsoluteUrl'; // import { isUrlAbsolute } from '@libs/isAbsoluteUrl';
// import { showToast } from "@libs/showToast"; // import { showToast } from "@libs/showToast";
// import { Filter, FilterInputs } from "@libs/filterInputs"; const filterInputs_1 = require("@libs/filterInputs");
// import { NovelStatus } from '@libs/novelStatus'; // import { NovelStatus } from '@libs/novelStatus';
// import { defaultCover } from "@libs/defaultCover"; // import { defaultCover } from "@libs/defaultCover";
exports.id = "Novelmt.com"; exports.id = "Novelmt.com";
exports.name = "Novelmt.com"; exports.name = "Novelmt.com";
exports.icon = "multisrc/readwn/icon/novelmt.png"; exports.icon = "multisrc/readwn/icons/novelmt.png";
exports.version = "1.0.0"; exports.version = "1.0.0";
exports.site = "https://www.novelmt.com/"; exports.site = "https://www.novelmt.com/";
// export const filters: Filter[] = [];
const baseUrl = exports.site;
const popularNovels = function (page, { filters, showLatestNovels }) { const popularNovels = function (page, { filters, showLatestNovels }) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const novels = []; const novels = [];
const pageNo = page - 1; const pageNo = page - 1;
const url = baseUrl + 'list/all/all-onclick-' + pageNo + '.html'; let url = exports.site + 'list/';
url += ((filters === null || filters === void 0 ? void 0 : filters.genres) || 'all') + '/';
url += ((filters === null || filters === void 0 ? void 0 : filters.status) || 'all') + '-';
url += (showLatestNovels ? 'lastdotime' : (filters === null || filters === void 0 ? void 0 : filters.sort) || 'newstime') + '-';
url += pageNo + '.html';
const result = yield (0, fetch_1.fetchApi)(url); const result = yield (0, fetch_1.fetchApi)(url);
const body = yield result.text(); const body = yield result.text();
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('li.novel-item').each(function () { loadedCheerio('li.novel-item').each(function () {
const novelName = loadedCheerio(this).find('h4').text(); const novelName = loadedCheerio(this).find('h4').text();
const novelUrl = baseUrl + loadedCheerio(this).find('a').attr('href'); const novelUrl = exports.site + loadedCheerio(this).find('a').attr('href');
const coverUri = loadedCheerio(this) const coverUri = loadedCheerio(this)
.find('.novel-cover > img') .find('.novel-cover > img')
.attr('data-src'); .attr('data-src');
const novelCover = baseUrl + coverUri; const novelCover = exports.site + coverUri;
const novel = { name: novelName, cover: novelCover, url: novelUrl }; const novel = { name: novelName, cover: novelCover, url: novelUrl };
novels.push(novel); novels.push(novel);
}); });
@@ -59,7 +61,7 @@ const parseNovelAndChapters = function (novelUrl) {
}; };
novel.name = loadedCheerio('h1.novel-title').text(); novel.name = loadedCheerio('h1.novel-title').text();
const coverUri = loadedCheerio('figure.cover > img').attr('data-src'); const coverUri = loadedCheerio('figure.cover > img').attr('data-src');
novel.cover = baseUrl + coverUri; novel.cover = exports.site + coverUri;
novel.summary = loadedCheerio('.summary') novel.summary = loadedCheerio('.summary')
.text() .text()
.replace('Summary', '') .replace('Summary', '')
@@ -76,7 +78,7 @@ const parseNovelAndChapters = function (novelUrl) {
novel.genres = novel.genres.slice(0, -1); novel.genres = novel.genres.slice(0, -1);
novel.author = loadedCheerio('span[itemprop=author]').text(); novel.author = loadedCheerio('span[itemprop=author]').text();
let novelChapters = []; let novelChapters = [];
const novelId = novelUrl.replace('.html', '').replace(baseUrl, ''); const novelId = novelUrl.replace('.html', '').replace(exports.site, '');
const latestChapterNo = parseInt(loadedCheerio('.header-stats') const latestChapterNo = parseInt(loadedCheerio('.header-stats')
.find('span > strong') .find('span > strong')
.first() .first()
@@ -89,20 +91,20 @@ const parseNovelAndChapters = function (novelUrl) {
.find('a .chapter-title') .find('a .chapter-title')
.text() .text()
.trim(); .trim();
const chapterUrl = baseUrl + ((_a = loadedCheerio(this).find('a').attr('href')) === null || _a === void 0 ? void 0 : _a.trim()); const chapterUrl = exports.site + ((_a = loadedCheerio(this).find('a').attr('href')) === null || _a === void 0 ? void 0 : _a.trim());
const releaseDate = loadedCheerio(this) const releaseDate = loadedCheerio(this)
.find('a .chapter-update') .find('a .chapter-update')
.text() .text()
.trim(); .trim();
lastChapterNo = parseInt(loadedCheerio(this).find('a .chapter-no').text().trim()); lastChapterNo = parseInt(loadedCheerio(this).find('a .chapter-no').text().trim());
const chapter = { name: chapterName, releaseTime: releaseDate, url: chapterUrl }; const chapter = { name: chapterName, releaseTime: (0, parseMadaraDate_1.parseMadaraDate)(releaseDate), url: chapterUrl };
novelChapters.push(chapter); novelChapters.push(chapter);
}); });
// Itterate once more before loop to finish off // Itterate once more before loop to finish off
lastChapterNo++; lastChapterNo++;
for (let i = lastChapterNo; i <= latestChapterNo; i++) { for (let i = lastChapterNo; i <= latestChapterNo; i++) {
const chapterName = 'Chapter ' + i; const chapterName = 'Chapter ' + i;
const chapterUrl = baseUrl + novelId + '_' + i + '.html'; const chapterUrl = exports.site + novelId + '_' + i + '.html';
const releaseDate = null; const releaseDate = null;
const chapter = { name: chapterName, releaseTime: releaseDate, url: chapterUrl }; const chapter = { name: chapterName, releaseTime: releaseDate, url: chapterUrl };
novelChapters.push(chapter); novelChapters.push(chapter);
@@ -124,12 +126,12 @@ const parseChapter = function (chapterUrl) {
exports.parseChapter = parseChapter; exports.parseChapter = parseChapter;
const searchNovels = (searchTerm) => __awaiter(void 0, void 0, void 0, function* () { const searchNovels = (searchTerm) => __awaiter(void 0, void 0, void 0, function* () {
const novels = []; const novels = [];
const searchUrl = baseUrl + 'e/search/index.php'; const searchUrl = exports.site + 'e/search/index.php';
const result = yield (0, fetch_1.fetchApi)(searchUrl, { const result = yield (0, fetch_1.fetchApi)(searchUrl, {
headers: { headers: {
'Content-Type': 'application/x-www-form-urlencoded', 'Content-Type': 'application/x-www-form-urlencoded',
Referer: baseUrl + 'search.html', Referer: exports.site + 'search.html',
Origin: baseUrl, Origin: exports.site,
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36',
}, },
method: 'POST', method: 'POST',
@@ -144,9 +146,9 @@ const searchNovels = (searchTerm) => __awaiter(void 0, void 0, void 0, function*
const loadedCheerio = (0, cheerio_1.load)(body); const loadedCheerio = (0, cheerio_1.load)(body);
loadedCheerio('li.novel-item').each(function () { loadedCheerio('li.novel-item').each(function () {
const novelName = loadedCheerio(this).find('h4').text(); const novelName = loadedCheerio(this).find('h4').text();
const novelUrl = baseUrl + loadedCheerio(this).find('a').attr('href'); const novelUrl = exports.site + loadedCheerio(this).find('a').attr('href');
const coverUri = baseUrl + loadedCheerio(this).find('img').attr('data-src'); const coverUri = exports.site + loadedCheerio(this).find('img').attr('data-src');
const novelCover = baseUrl + coverUri; const novelCover = exports.site + coverUri;
const novel = { const novel = {
name: novelName, name: novelName,
cover: novelCover, cover: novelCover,
@@ -157,7 +159,5 @@ const searchNovels = (searchTerm) => __awaiter(void 0, void 0, void 0, function*
return novels; return novels;
}); });
exports.searchNovels = searchNovels; exports.searchNovels = searchNovels;
const fetchImage = (url) => __awaiter(void 0, void 0, void 0, function* () { exports.fetchImage = fetch_1.fetchFile;
return yield (0, fetch_1.fetchFile)(url, {}); exports.filters = [{ "key": "sort", "label": "Sort By", "values": [{ "label": "New", "value": "newstime" }, { "label": "Popular", "value": "onclick" }, { "label": "Updates", "value": "lastdotime" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "status", "label": "Status", "values": [{ "label": "All", "value": "all" }, { "label": "Completed", "value": "Completed" }, { "label": "Ongoing", "value": "Ongoing" }], "inputType": filterInputs_1.FilterInputs.Picker }, { "key": "genres", "label": "Genre / Category", "values": [{ "label": "All", "value": "all" }, { "label": "Action", "value": "action" }, { "label": "Adult", "value": "adult" }, { "label": "Adventure", "value": "adventure" }, { "label": "Billionaire", "value": "billionaire" }, { "label": "CEO", "value": "ceo" }, { "label": "Chinese", "value": "chinese" }, { "label": "Comedy", "value": "comedy" }, { "label": "Contemporary Romance", "value": "contemporary-romance" }, { "label": "Drama", "value": "drama" }, { "label": "Eastern Fantasy", "value": "eastern-fantasy" }, { "label": "Ecchi", "value": "ecchi" }, { "label": "Erciyuan", "value": "erciyuan" }, { "label": "Faloo", "value": "faloo" }, { "label": "Fan-Fiction", "value": "fan-fiction" }, { "label": "Fantasy", "value": "fantasy" }, { "label": "Fantasy Romance", "value": "fantasy-romance" }, { "label": "Farming", "value": "farming" }, { "label": "Game", "value": "game" }, { "label": "Games", "value": "games" }, { "label": "Gay Romance", "value": "gay-romance" }, { "label": "Gender Bender", "value": "gender-bender" }, { "label": "Harem", "value": "harem" }, { "label": "Historical", "value": "historical" }, { "label": "Historical Romance", "value": "historical-romance" }, { "label": "Horror", "value": "horror" }, { "label": "Isekai", "value": "isekai" }, { "label": "Japanese", "value": "japanese" }, { "label": "Josei", "value": "josei" }, { "label": "Korean", "value": "korean" }, { "label": "Lolicon", "value": "lolicon" }, { "label": "Magic", "value": "magic" }, { "label": "Magical Realism", "value": "magical-realism" }, { "label": "Martial Arts", "value": "martial-arts" }, { "label": "Mature", "value": "mature" }, { "label": "Mecha", "value": "mecha" }, { "label": "Military", "value": "military" }, { "label": "Modern Life", "value": "modern-life" }, { "label": "Modern Romance", "value": "modern-romance" }, { "label": "Mystery", "value": "mystery" }, { "label": "Psychological", "value": "psychological" }, { "label": "Romance", "value": "romance" }, { "label": "Romantic", "value": "romantic" }, { "label": "School Life", "value": "school-life" }, { "label": "Sci-fi", "value": "sci-fi" }, { "label": "Seinen", "value": "seinen" }, { "label": "Shoujo", "value": "shoujo" }, { "label": "Shoujo Ai", "value": "shoujo-ai" }, { "label": "Shounen", "value": "shounen" }, { "label": "Shounen Ai", "value": "shounen-ai" }, { "label": "Slice of Life", "value": "slice-of-life" }, { "label": "Smut", "value": "smut" }, { "label": "Sports", "value": "sports" }, { "label": "Supernatural", "value": "supernatural" }, { "label": "Tragedy", "value": "tragedy" }, { "label": "Two-dimensional", "value": "two-dimensional" }, { "label": "Urban", "value": "urban" }, { "label": "Urban Life", "value": "urban-life" }, { "label": "Video Games", "value": "video-games" }, { "label": "Virtual Reality", "value": "virtual-reality" }, { "label": "Wuxia", "value": "wuxia" }, { "label": "Xianxia", "value": "xianxia" }, { "label": "Xuanhuan", "value": "xuanhuan" }, { "label": "Yaoi", "value": "yaoi" }, { "label": "Yuri", "value": "yuri" }], "inputType": filterInputs_1.FilterInputs.Picker }];
});
exports.fetchImage = fetchImage;

Some files were not shown because too many files have changed in this diff Show More