diff --git a/.github/summary.yaml b/.github/summary.yaml index f2aca663..7cad6eea 100644 --- a/.github/summary.yaml +++ b/.github/summary.yaml @@ -1 +1 @@ -total: 1111 \ No newline at end of file +total: 1118 diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt index 6f33597f..84a6ee10 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt @@ -123,7 +123,7 @@ internal class ExHentaiParser( url.addEncodedQueryParameter("next", next.toString()) url.addQueryParameter("f_search", filter.toSearchQuery()) - var fCats = filter.types.toFCats() + val fCats = filter.types.toFCats() if (fCats != 0) { url.addEncodedQueryParameter("f_cats", (1023 - fCats).toString()) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/vi/OioiVn.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/vi/OioiVn.kt index ad61f7c4..612cd172 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/vi/OioiVn.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/vi/OioiVn.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.cupfox.vi +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.cupfox.CupFoxParser +@Broken @MangaSourceParser("OIOIVN", "OioiVn", "vi") internal class OioiVn(context: MangaLoaderContext) : CupFoxParser(context, MangaParserSource.OIOIVN, "oioivn.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt index 9ea529fa..68055965 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt @@ -20,7 +20,7 @@ internal class TuMangaOnlineParser(context: MangaLoaderContext) : PagedMangaPars pageSize = 24, ) { - override val configKeyDomain = ConfigKey.Domain("visortmo.com") + override val configKeyDomain = ConfigKey.Domain("zonatmo.com") override fun onCreateConfig(keys: MutableCollection>) { super.onCreateConfig(keys) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/MangaMana.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/MangaMana.kt index aeba33a8..15a06dab 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/MangaMana.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/MangaMana.kt @@ -180,7 +180,7 @@ internal class MangaMana(context: MangaLoaderContext) : PagedMangaParser(context altTitle = doc.selectFirst(".mangalist_item_othernames")?.text().orEmpty(), url = href, publicUrl = href.toAbsoluteUrl(domain), - rating = div.getElementById("avgrating")?.ownText()?.toFloat()?.div(5f) ?: RATING_UNKNOWN, + rating = div.getElementById("avgrating")?.ownText()?.toFloatOrNull()?.div(5f) ?: RATING_UNKNOWN, isNsfw = isNsfw, coverUrl = img.orEmpty(), description = div.selectFirst(".mangalist_item_description")?.text().orEmpty(), @@ -243,7 +243,7 @@ internal class MangaMana(context: MangaLoaderContext) : PagedMangaParser(context }, author = doc.selectFirst("div.show_details span[itemprop=author]")?.text().orEmpty(), description = doc.selectFirst("dd[itemprop=description]")?.text(), - rating = doc.getElementById("avgrating")?.ownText()?.toFloat()?.div(5f) ?: RATING_UNKNOWN, + rating = doc.getElementById("avgrating")?.ownText()?.toFloatOrNull()?.div(5f) ?: RATING_UNKNOWN, tags = doc.select("ul.list-unstyled li a.category").mapNotNullToSet { val key = it.attr("href").substringAfterLast('=') MangaTag( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/es/YugenMangasEs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/es/YugenMangasEs.kt index 6d19ed44..de01288a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/es/YugenMangasEs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/es/YugenMangasEs.kt @@ -9,4 +9,4 @@ import org.koitharu.kotatsu.parsers.site.heancms.HeanCms @Broken // Not dead but changed template @MangaSourceParser("YUGEN_MANGAS_ES", "YugenMangas.lat", "es", ContentType.HENTAI) internal class YugenMangasEs(context: MangaLoaderContext) : - HeanCms(context, MangaParserSource.YUGEN_MANGAS_ES, "lectorikigai.erigu.com") + HeanCms(context, MangaParserSource.YUGEN_MANGAS_ES, "lectorikigai.efope.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/fr/PerfScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/fr/PerfScan.kt index db5adfc6..3e1164f1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/fr/PerfScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/fr/PerfScan.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.heancms.fr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.heancms.HeanCms +@Broken @MangaSourceParser("PERF_SCAN", "PerfScan", "fr") internal class PerfScan(context: MangaLoaderContext) : HeanCms(context, MangaParserSource.PERF_SCAN, "perf-scan.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/MangaEsp.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/MangaEsp.kt index 3dec2abd..a4c0b5af 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/MangaEsp.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/MangaEsp.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.heancmsalt.es +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.heancmsalt.HeanCmsAlt +@Broken @MangaSourceParser("MANGAESP", "MangaEsp", "es") internal class MangaEsp(context: MangaLoaderContext) : HeanCmsAlt(context, MangaParserSource.MANGAESP, "mangaesp.net", 15) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/hotcomics/de/Toomics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/hotcomics/de/Toomics.kt index 63932a1e..4b5fedbb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/hotcomics/de/Toomics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/hotcomics/de/Toomics.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.hotcomics.de +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.hotcomics.HotComicsParser import java.util.Locale +@Broken @MangaSourceParser("TOOMICS", "Toomics", "de") internal class Toomics(context: MangaLoaderContext) : HotComicsParser(context, MangaParserSource.TOOMICS, "toomics.top/de") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/RezoScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/RezoScans.kt new file mode 100644 index 00000000..b8bf9872 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/RezoScans.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.keyoapp.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser + +@MangaSourceParser("REZOSCANS", "RezoScans", "en") +internal class RezoScans(context: MangaLoaderContext) : + KeyoappParser(context, MangaParserSource.REZOSCANS, "rezoscans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AnisaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AnisaScans.kt index 21c00f50..769bf9b2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AnisaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AnisaScans.kt @@ -1,12 +1,10 @@ package org.koitharu.kotatsu.parsers.site.madara.en -import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@Broken @MangaSourceParser("ANISASCANS", "AnisaScans", "en") internal class AnisaScans(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.ANISASCANS, "anisascans.in", 36) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BestManhuaCom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BestManhuaCom.kt index e07045bc..36689cb4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BestManhuaCom.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BestManhuaCom.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("BESTMANHUACOM", "BestManhua.com", "en") internal class BestManhuaCom(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.BESTMANHUACOM, "bestmanhua.com", 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt index 07dd077c..bb591013 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("COCOMIC", "CoComic", "en", ContentType.HENTAI) internal class CoComic(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.COCOMIC, "cocomic.co") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScan.kt index fe30391d..c3bcc0a1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScan.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("DARKSCAN", "Dark-Scan", "en") internal class DarkScan(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.DARKSCAN, "dark-scan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScans.kt index c988c13e..8c1c4d66 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScans.kt @@ -1,13 +1,90 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.json.JSONObject import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.exception.AuthRequiredException +import org.koitharu.kotatsu.parsers.exception.ParseException +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.CryptoAES +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.parseFailed +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow +import org.koitharu.kotatsu.parsers.util.src +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.toRelativeUrl +import java.util.Base64 @MangaSourceParser("DARK_SCANS", "DarkScans", "en") internal class DarkScans(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.DARK_SCANS, "darkscans.net", 18) { override val listUrl = "mangas/" override val tagPrefix = "mangas-genre/" + + override suspend fun getPages(chapter: MangaChapter): List { + val fullUrl = chapter.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + val chapterProtector = doc.getElementById("chapter-protector-data") + if (chapterProtector == null) { + throw if (doc.selectFirst(selectRequiredLogin) != null) { + AuthRequiredException(source) + } else { + val root = doc.body().selectFirst(selectBodyPage) ?: throw ParseException( + "No image found, try to log in", + fullUrl, + ) + return root.select(selectPage).map { div -> + val img = div.selectFirstOrThrow("img") + val url = img.src()?.toRelativeUrl(domain) ?: div.parseFailed("Image src not found") + MangaPage( + id = generateUid(url), + url = url.replace("http:", "https:"), + preview = null, + source = source, + ) + } + } + } else { + + val chapterProtectorHtml = chapterProtector.attr("src") + .takeIf { it.startsWith("data:text/javascript;base64,") } + ?.substringAfter("data:text/javascript;base64,") + ?.let { + Base64.getDecoder().decode(it).decodeToString() + } + ?: chapterProtector.html() + + val password = chapterProtectorHtml.substringAfter("wpmangaprotectornonce='").substringBefore("';") + val chapterData = JSONObject( + chapterProtectorHtml.substringAfter("chapter_data='").substringBefore("';").replace("\\/", "/"), + ) + val unsaltedCiphertext = context.decodeBase64(chapterData.getString("ct")) + val salt = chapterData.getString("s").toString().decodeHex() + val ciphertext = "Salted__".toByteArray(Charsets.UTF_8) + salt + unsaltedCiphertext + + val rawImgArray = CryptoAES(context).decrypt(context.encodeBase64(ciphertext), password) + val imgArrayString = rawImgArray.filterNot { c -> c == '[' || c == ']' || c == '\\' || c == '"' } + + return imgArrayString.split(",").map { url -> + MangaPage( + id = generateUid(url), + url = url.replace("http:", "https:"), + preview = null, + source = source, + ) + } + + } + } + + private fun String.decodeHex(): ByteArray { + check(length % 2 == 0) { "Must have an even length" } + + return chunked(2).map { it.toInt(16).toByte() }.toByteArray() + } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/EliteManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/EliteManga.kt index 5c919e83..1b8c5af9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/EliteManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/EliteManga.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ELITEMANGA", "EliteManga", "en") internal class EliteManga(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.ELITEMANGA, "www.redmanga.org") + MadaraParser(context, MangaParserSource.ELITEMANGA, "www.beinmanga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GoodGirls.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GoodGirls.kt index a2536dc2..9b4bfb29 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GoodGirls.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GoodGirls.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("GOODGIRLS", "GoodGirls", "en") internal class GoodGirls(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.GOODGIRLS, "goodgirls.moe", 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuxManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuxManga.kt index 800344f7..487f2093 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuxManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuxManga.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("LUXMANGA", "LuxManga", "en") internal class LuxManga(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.LUXMANGA, "luxmanga.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaEffect.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaEffect.kt index e68f4f1e..74f7f15a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaEffect.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaEffect.kt @@ -6,10 +6,10 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@Broken +@Broken // Redirect to @MANGAREAD @MangaSourceParser("MANGAEFFECT", "MangaEffect", "en") internal class MangaEffect(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MANGAEFFECT, "mangaeffect.com") { + MadaraParser(context, MangaParserSource.MANGAEFFECT, "www.mangaread.org") { override val datePattern = "dd.MM.yyyy" override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt index 3b7d2cae..0da11801 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt @@ -6,6 +6,6 @@ import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("MANGAHALL", "MangaHall", "en", ContentType.HENTAI) +@MangaSourceParser("MANGAHALL", "MangaHolic", "en", ContentType.HENTAI) internal class MangaHall(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MANGAHALL, "mangageek.org", 24) + MadaraParser(context, MangaParserSource.MANGAHALL, "mangaholic.org", 24) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaQueen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaQueen.kt index 3e5c2e20..3c2be2e2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaQueen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaQueen.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGA_QUEEN", "MangaQueen", "en") internal class MangaQueen(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.MANGA_QUEEN, "mangaqueen.com", 16) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaNew.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaNew.kt index f32517ec..1d3fa019 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaNew.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaNew.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANHWANEW", "ManhwaNew", "en") internal class ManhwaNew(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.MANHWANEW, "manhwanew.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MortalsGroove.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MortalsGroove.kt index eb43cbc2..859fd94e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MortalsGroove.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MortalsGroove.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MORTALSGROOVE", "MortalsGroove", "en") internal class MortalsGroove(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.MORTALSGROOVE, "mortalsgroove.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MsyPublisher.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MsyPublisher.kt new file mode 100644 index 00000000..bedd4cad --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MsyPublisher.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MSYPUBLISHER", "MsyPublisher", "en") +internal class MsyPublisher(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MSYPUBLISHER, "msypublisher.com", 20) { + override val listUrl = "manhua/" + override val selectGenre = "manhua-genre/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NewManhua.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NewManhua.kt index 7da9e1a8..fbc50b83 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NewManhua.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NewManhua.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("NEWMANHUA", "NewManhua", "en") internal class NewManhua(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.NEWMANHUA, "newmanhua.com", pageSize = 16) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NvManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NvManga.kt index afdc1ca0..8b1da2cc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NvManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NvManga.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("NVMANGA", "NvManga", "en") internal class NvManga(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.NVMANGA, "1manhwa.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ResetScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ResetScans.kt index 15071077..023b3cd5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ResetScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ResetScans.kt @@ -13,7 +13,7 @@ import java.util.Collections.emptyMap @MangaSourceParser("RESETSCANS", "ResetScans", "en") internal class ResetScans(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.RESETSCANS, "reset-scans.co", 18) { + MadaraParser(context, MangaParserSource.RESETSCANS, "rspro.xyz", 18) { override val datePattern = "MMM dd" override suspend fun loadChapters(mangaUrl: String, document: Document): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/EmperorScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/EmperorScan.kt index 0c1a3955..7371c6e7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/EmperorScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/EmperorScan.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("EMPERORSCAN", "EmperorScan", "es") internal class EmperorScan(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.EMPERORSCAN, "emperormanga.net") + MadaraParser(context, MangaParserSource.EMPERORSCAN, "seriesemperor.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KnightnoScanlation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KnightnoScanlation.kt index c1193401..876564ee 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KnightnoScanlation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KnightnoScanlation.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("KNIGHTNOSCANLATION", "TwoBlueScans", "es") internal class KnightnoScanlation(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.KNIGHTNOSCANLATION, "lectorkns.com") { + MadaraParser(context, MangaParserSource.KNIGHTNOSCANLATION, "lectorkns.eyudud.net") { override val listUrl = "sr/" override val tagPrefix = "generos/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KoinoboriScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KoinoboriScan.kt index 64a1ddc1..9a54ed6c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KoinoboriScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KoinoboriScan.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.es +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken // Not dead but changed template @MangaSourceParser("KOINOBORISCAN", "KoinoboriScan", "es") internal class KoinoboriScan(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.KOINOBORISCAN, "koinoboriscan.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RightdarkScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RightdarkScan.kt index 268ea752..d378b6c4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RightdarkScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RightdarkScan.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.es +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("RIGHTDARKSCAN", "RightDarkScan", "es") internal class RightdarkScan(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.RIGHTDARKSCAN, "rsdleft.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TecnoProjects.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TecnoProjects.kt new file mode 100644 index 00000000..c12eb49b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TecnoProjects.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("TECNOPROJECTS", "TecnoProjects", "es") +internal class TecnoProjects(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.TECNOPROJECTS, "tecnoprojects.com") { + override val datePattern = "dd 'de' MMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/FrScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/FrScan.kt index 488b89c7..64dfbbbb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/FrScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/FrScan.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.parsers.site.madara.fr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaChapter @@ -8,6 +9,7 @@ import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* +@Broken @MangaSourceParser("FRSCAN", "Fr-Scan", "fr") internal class FrScan(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.FRSCAN, "fr-scan.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Readergen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Readergen.kt index ccd49d29..b3f107da 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Readergen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Readergen.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.fr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("READERGEN", "ReaderGen", "fr") internal class Readergen(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.READERGEN, "fr.readergen.fr", 18) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt index ebcdada9..4314b8ff 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt @@ -8,7 +8,7 @@ import java.util.* @MangaSourceParser("SHINIGAMI", "Shinigami", "id") internal class Shinigami(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.SHINIGAMI, "shinigami03.com", 10) { + MadaraParser(context, MangaParserSource.SHINIGAMI, "shinigami05.com", 10) { override val tagPrefix = "genre/" override val listUrl = "series/" override val sourceLocale: Locale = Locale.ENGLISH diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawManga.kt new file mode 100644 index 00000000..6b6e5059 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawManga.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.ja + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("RAWMANGA", "RawManga", "ja") +internal class RawManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.RAWMANGA, "rawmanga.su", 24) { + override val listUrl = "r/" + override val selectPage = "div.mg-item" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt index caf8bc30..4112cfb9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.pt +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("ARGOSCOMICS", "ArgosComics", "pt") internal class ArgosComics(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.ARGOSCOMICS, "argoscomics.com.br") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CeriseScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CeriseScans.kt index 6dc642a7..fb1fbcfe 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CeriseScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CeriseScans.kt @@ -6,9 +6,9 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@Broken +@Broken // Not dead, changed template @MangaSourceParser("CERISE_SCANS", "CeriseScans", "pt") internal class CeriseScans(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.CERISE_SCANS, "cerisetoon.com") { + MadaraParser(context, MangaParserSource.CERISE_SCANS, "cerise.leitorweb.com") { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MomonohanaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MomonohanaScan.kt index c9b48bd4..1e9420e9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MomonohanaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MomonohanaScan.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.pt +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MOMONOHANASCAN", "MomonohanaScan", "pt") internal class MomonohanaScan(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.MOMONOHANASCAN, "momonohanascan.com", 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Moonwitchinlovescan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Moonwitchinlovescan.kt index 93df8952..274ddee3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Moonwitchinlovescan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Moonwitchinlovescan.kt @@ -1,14 +1,13 @@ package org.koitharu.kotatsu.parsers.site.madara.pt -import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@Broken -@MangaSourceParser("MOONWITCHINLOVESCAN", "MoonWitchinLoveScan", "pt") + +@MangaSourceParser("MOONWITCHINLOVESCAN", "MoonWitchinScan", "pt") internal class Moonwitchinlovescan(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.MOONWITCHINLOVESCAN, "moonwitchinlovescan.com", 10) { + MadaraParser(context, MangaParserSource.MOONWITCHINLOVESCAN, "moonwitchscan.com.br", 10) { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SinensisScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SinensisScans.kt index 54e2e1c9..92af7b00 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SinensisScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SinensisScans.kt @@ -9,6 +9,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @Broken // Not dead, changed template @MangaSourceParser("SINENSISSCANS", "SinensisScans", "pt") internal class SinensisScans(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.SINENSISSCANS, "sinensistoon.com") { + MadaraParser(context, MangaParserSource.SINENSISSCANS, "sinensis.leitorweb.com") { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/VillainessScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/VillainessScan.kt index 4fca33ef..912e5505 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/VillainessScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/VillainessScan.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.madara.pt +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("VILLAINESSSCAN", "VillainessScan", "pt", ContentType.HENTAI) internal class VillainessScan(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.VILLAINESSSCAN, "villainessscan.xyz", pageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/BestManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/BestManga.kt index efe45e37..77ff0c1e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/BestManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/BestManga.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.ru +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("BEST_MANGA", "BestManga", "ru") internal class BestManga(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.BEST_MANGA, "bestmanga.club") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/KingsManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/KingsManga.kt index f1419856..d9c4745e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/KingsManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/KingsManga.kt @@ -2,12 +2,13 @@ package org.koitharu.kotatsu.parsers.site.madara.th import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("KINGS_MANGA", "KingsManga", "th") +@MangaSourceParser("KINGS_MANGA", "SuperDoujin", "th", ContentType.HENTAI) internal class KingsManga(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.KINGS_MANGA, "www.kings-manga.co") { + MadaraParser(context, MangaParserSource.KINGS_MANGA, "www.superdoujin.org") { override val postReq = true override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/NekoPost.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/NekoPost.kt index 232b8e51..54f2015b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/NekoPost.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/NekoPost.kt @@ -1,13 +1,16 @@ package org.koitharu.kotatsu.parsers.site.madara.th +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("NEKOPOST", "NekoPost", "th") +@Broken // Redirect to @KINGS_MANGA +@MangaSourceParser("NEKOPOST", "NekoPost", "th", ContentType.HENTAI) internal class NekoPost(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.NEKOPOST, "www.nekopost.co") { + MadaraParser(context, MangaParserSource.NEKOPOST, "www.superdoujin.org") { override val postReq = true override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/CloverManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/CloverManga.kt index bf1dd979..51de0309 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/CloverManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/CloverManga.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.tr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken // Redirect to @WEBTOONHATTI @MangaSourceParser("CLOVERMANGA", "CloverManga", "tr") internal class CloverManga(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.CLOVERMANGA, "clover-manga.com", 20) + MadaraParser(context, MangaParserSource.CLOVERMANGA, "webtoonhatti.net", 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LunaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LunaScans.kt index 5325eb51..110dc847 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LunaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LunaScans.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LUNASCANS", "LunaScans", "tr", ContentType.HENTAI) internal class LunaScans(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.LUNASCANS, "lunascans.org") { + MadaraParser(context, MangaParserSource.LUNASCANS, "tuhafscans.com") { override val postReq = true override val datePattern = "dd MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/HentaiVnFit.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/HentaiVnFit.kt index fd039970..52deab53 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/HentaiVnFit.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/HentaiVnFit.kt @@ -6,9 +6,9 @@ import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("HENTAIVNFIT", "HentaiVnFit", "vi", ContentType.HENTAI) -internal class HentaiVnCafe(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.HENTAIVNFIT, "hentaivn.fit", 24) { +@MangaSourceParser("HENTAIVNFIT", "HentaiVn.vin", "vi", ContentType.HENTAI) +internal class HentaiVnFit(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.HENTAIVNFIT, "hentaivn.vin", 24) { override val listUrl = "truyen-hentai/" override val tagPrefix = "the-loai/" override val datePattern = "dd/MM/yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt index ce1c6d07..1fbd9b63 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt @@ -10,7 +10,7 @@ import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("MANJANOON", "Manjanoon", "ar") internal class Manjanoon(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.MANJANOON, "manjanoon.xyz", pageSize = 21, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANJANOON, "manjanoon.com", pageSize = 21, searchPageSize = 10) { override suspend fun getDetails(manga: Manga): Manga { val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/VexManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/VexManga.kt index 24d73e6b..d3ac80c5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/VexManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/VexManga.kt @@ -10,10 +10,10 @@ import java.text.DateFormat import java.text.SimpleDateFormat import java.util.* -@Broken +@Broken // Not dead but changed template @MangaSourceParser("VEXMANGA", "VexManga", "ar") internal class VexManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.VEXMANGA, "vexmanga.com", pageSize = 10, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.VEXMANGA, "vortexscans.org", pageSize = 10, searchPageSize = 10) { override val selectMangaList = ".listarchives .latest-recom" override val selectChapter = ".ulChapterList > a" override val filterCapabilities: MangaListFilterCapabilities diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DrakeScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DrakeScans.kt index 0d47dd63..0b4bcafc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DrakeScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DrakeScans.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("DRAKESCANS", "DrakeComic", "en") internal class DrakeScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.DRAKESCANS, "drakecomic.com", 20, 10) + MangaReaderParser(context, MangaParserSource.DRAKESCANS, "drakecomic.org", 20, 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Elarcpage.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Elarcpage.kt index 182db24b..83358553 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Elarcpage.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Elarcpage.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("ELARCPAGE", "ElarcPage", "en") internal class Elarcpage(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.ELARCPAGE, "elarctoon.com", pageSize = 20, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt index 53cc8f8f..74f35bbd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("EROSSCANS", "ErosScans", "en") internal class ErosScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.EROSSCANS, "erosscans.xyz", pageSize = 20, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.EROSSCANS, "eros-scans.xyz", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FuryManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FuryManga.kt index ad9cebcc..ba63cb7f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FuryManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FuryManga.kt @@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("FURYMANGA", "KingOfScans", "en") internal class FuryManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.FURYMANGA, "kingofscans.com", pageSize = 30, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.FURYMANGA, "myshojo.com", pageSize = 30, searchPageSize = 10) { override val listUrl = "/comics" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaFreak.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaFreak.kt index 6e0094a5..08173d52 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaFreak.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaFreak.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("MANHWA_FREAK", "ManhwaFreak", "en") internal class ManhwaFreak(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.MANHWA_FREAK, "manhwafreak.xyz", pageSize = 30, searchPageSize = 42) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaLover.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaLover.kt index d9ccb75b..61eb7628 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaLover.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaLover.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType @@ -7,6 +8,7 @@ import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("MANHWALOVER", "ManhwaLover", "en", ContentType.HENTAI) internal class ManhwaLover(context: MangaLoaderContext) : MangaReaderParser( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manjanoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manjanoon.kt index c20cf5dc..cb2aaf6e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manjanoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manjanoon.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("MANJANOON_EN", "NoonScan.net", "en") internal class Manjanoon(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.MANJANOON_EN, "noonscan.net", pageSize = 20, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RaiScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RaiScans.kt index 0d9b50d2..8359ce55 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RaiScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RaiScans.kt @@ -5,8 +5,8 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("RAISCANS", "RaiScans", "en") +@MangaSourceParser("RAISCANS", "KenScans", "en") internal class RaiScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.RAISCANS, "kenmanga.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.RAISCANS, "kenscans.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SnowScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SnowScans.kt index 77deba63..c154675c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SnowScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SnowScans.kt @@ -1,12 +1,14 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken // Redirect to @FLIXSCANS @MangaSourceParser("SNOWSCANS", "SnowScans", "en") internal class SnowScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.SNOWSCANS, "snowscans.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.SNOWSCANS, "flixscans.net", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SuryaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SuryaScans.kt index 707b54c5..89348ad8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SuryaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SuryaScans.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("SURYASCANS", "SuryaScans", "en") internal class SuryaScans(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.SURYASCANS, "suryacomics.com", pageSize = 5, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/TecnoScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/TecnoScans.kt index d89583cf..f0d70ef8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/TecnoScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/TecnoScans.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("TECNOSCANS", "TecnoScans", "en") internal class TecnoScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.TECNOSCANS, "olyscans.xyz", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.TECNOSCANS, "oliosscans.xyz", pageSize = 20, searchPageSize = 10) { override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/VarnaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/VarnaScan.kt index 6a196fa1..624ff672 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/VarnaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/VarnaScan.kt @@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("VARNASCAN", "VarnaScan", "en") internal class VarnaScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.VARNASCAN, "varnascan.com", pageSize = 20, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.VARNASCAN, "varnascan.net", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/YdComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/YdComics.kt index 8eac84a7..1ea5bfa6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/YdComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/YdComics.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("YDCOMICS", "YdComics", "en") internal class YdComics(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.YDCOMICS, "yd-comics.com", pageSize = 20, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt index def5b4ab..527c755d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt @@ -8,7 +8,13 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("INARIPIKAV", "InariPikav", "es") internal class InariPikav(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.INARIPIKAV, "inaripikav.org", pageSize = 10, searchPageSize = 10) { + MangaReaderParser( + context, + MangaParserSource.INARIPIKAV, + "inarimanga.cooksu.net", + pageSize = 10, + searchPageSize = 10, + ) { override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/UkiyoToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/UkiyoToon.kt index 992dec97..3e0b8bdd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/UkiyoToon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/UkiyoToon.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("UKIYOTOON", "UkiyoToon", "es") internal class UkiyoToon(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.UKIYOTOON, "ukiyotoon.com", 30, 10) { + MangaReaderParser(context, MangaParserSource.UKIYOTOON, "nakamatoon.com", 30, 10) { override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LunarHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LunarHentai.kt index 51ff123b..a4a49376 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LunarHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LunarHentai.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.fr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("LUNARHENTAI", "GloryScans", "fr") internal class LunarHentai(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.LUNARHENTAI, "gloryscans.fr", pageSize = 40, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/VfScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/VfScan.kt index 1e6390aa..d5532252 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/VfScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/VfScan.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.fr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("VFSCAN", "VfScan", "fr") internal class VfScan(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.VFSCAN, "www.vfscan.net", pageSize = 18, searchPageSize = 18) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comicaso.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comicaso.kt index c4d6e581..2de50f3b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comicaso.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comicaso.kt @@ -1,13 +1,20 @@ package org.koitharu.kotatsu.parsers.site.mangareader.id -import org.koitharu.kotatsu.parsers.Broken +import org.json.JSONObject import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities +import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import java.util.ArrayList +import java.util.Base64 -@Broken @MangaSourceParser("COMICASO", "Comicaso", "id") internal class Comicaso(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.COMICASO, "comicaso.id", pageSize = 20, searchPageSize = 10) { @@ -17,4 +24,38 @@ internal class Comicaso(context: MangaLoaderContext) : get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, ) + + override suspend fun getPages(chapter: MangaChapter): List { + val chapterUrl = chapter.url.toAbsoluteUrl(domain) + val docs = webClient.httpGet(chapterUrl).parseHtml() + + val script = docs.select(selectScript) + var decode = "" + for (i in script) { + if (i.attr("src").startsWith("data:text/javascript;base64,")) { + decode = Base64.getDecoder().decode(i.attr("src").replace("data:text/javascript;base64,", "")) + .decodeToString() + if (decode.startsWith("ts_reader.run")) { + break + } + } + } + val images = JSONObject(decode.substringAfter('(').substringBeforeLast(')')) + .getJSONArray("sources") + .getJSONObject(0) + .getJSONArray("images") + + val pages = ArrayList(images.length()) + for (i in 0 until images.length()) { + pages.add( + MangaPage( + id = generateUid(images.getString(i)), + url = images.getString(i).replace("http:", "https:"), + preview = null, + source = source, + ), + ) + } + return pages + } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/CosmicScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/CosmicScans.kt index a87f5bc4..c5970f3f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/CosmicScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/CosmicScans.kt @@ -9,7 +9,7 @@ import java.util.* @MangaSourceParser("COSMIC_SCANS", "CosmicScans.id", "id") internal class CosmicScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.COSMIC_SCANS, "cosmicscans.id", pageSize = 30, searchPageSize = 30) { + MangaReaderParser(context, MangaParserSource.COSMIC_SCANS, "cosmic1.co", pageSize = 30, searchPageSize = 30) { override val sourceLocale: Locale = Locale.ENGLISH override val filterCapabilities: MangaListFilterCapabilities diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Ikiru.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Ikiru.kt new file mode 100644 index 00000000..5392cbf2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Ikiru.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale + +@MangaSourceParser("IKIRU", "Ikiru", "id") +internal class Ikiru(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.IKIRU, "ikiru.me", pageSize = 20, searchPageSize = 10) { + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikIndoParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikIndoParser.kt index ecef96f4..f7d025c1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikIndoParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikIndoParser.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("KOMIKINDO", "KomikIndo", "id") internal class KomikIndoParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.KOMIKINDO, "komikindo.co", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KOMIKINDO, "komiksin.id", pageSize = 20, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt index d62f377d..56ea67fc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt @@ -9,6 +9,6 @@ import java.util.* @MangaSourceParser("KOMIKLOKALCFD", "KomikLokal.mom", "id", ContentType.HENTAI) internal class KomiklokalCfd(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.KOMIKLOKALCFD, "komiklokal.shop", pageSize = 30, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KOMIKLOKALCFD, "komikmu.fun", pageSize = 30, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt index 56189459..9c4dc086 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANHWAINDO", "ManhwaIndo", "id") internal class ManhwaIndoParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.MANHWAINDO, "manhwaindo.net", pageSize = 30, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANHWAINDO, "www.manhwaindo.st", pageSize = 30, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val listUrl = "/series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaPlus.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaPlus.kt index 36c2a11d..52e864ee 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaPlus.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaPlus.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.parsers.site.mangareader.id +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType @@ -8,6 +9,7 @@ import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* +@Broken @MangaSourceParser("MANHWAPLUS", "ManhwaPlus", "id", ContentType.HENTAI) internal class ManhwaPlus(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.MANHWAPLUS, "manhwablue.com", 20, 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MasterKomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MasterKomik.kt index de88bbc9..5bc230f3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MasterKomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MasterKomik.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MASTERKOMIK", "Tenshi", "id") internal class MasterKomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.MASTERKOMIK, "tenshi.id", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.MASTERKOMIK, "tenshi.pw", pageSize = 20, searchPageSize = 20) { override val datePattern = "MMM d, yyyy" override val listUrl = "/komik" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Doujin69.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Doujin69.kt index 14ebf94a..b4bfb48d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Doujin69.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Doujin69.kt @@ -1,6 +1,5 @@ package org.koitharu.kotatsu.parsers.site.mangareader.th -import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType @@ -8,7 +7,6 @@ import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@Broken @MangaSourceParser("DOUJIN69", "Doujin69", "th", type = ContentType.HENTAI) internal class Doujin69(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.DOUJIN69, "doujin69.com", pageSize = 40, searchPageSize = 21) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SoManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/SoManga.kt similarity index 65% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SoManga.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/SoManga.kt index 5daf0af7..a953c48f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SoManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/SoManga.kt @@ -1,12 +1,10 @@ -package org.koitharu.kotatsu.parsers.site.mangareader.id +package org.koitharu.kotatsu.parsers.site.mangareader.th import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("SOMANGA", "SoManga", "id") +@MangaSourceParser("SOMANGA", "SoManga", "th") internal class SoManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.SOMANGA, "so-manga.com", pageSize = 5, searchPageSize = 25) { - override val datePattern = "MMM d, yyyy" -} + MangaReaderParser(context, MangaParserSource.SOMANGA, "so-manga.com", pageSize = 5, searchPageSize = 25) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaManga.kt index 7facd7e6..7ce80f08 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaManga.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaListFilterCapabilities import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("ATHENAMANGA", "AthenaManga", "tr") internal class AthenaManga(context: MangaLoaderContext) : MangaReaderParser(context, MangaParserSource.ATHENAMANGA, "athenamanga.com", pageSize = 20, searchPageSize = 10) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NoxScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NoxScans.kt index 08ddeff1..2df60833 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NoxScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NoxScans.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("NOXSCANS", "NoxScans", "tr") internal class NoxScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.NOXSCANS, "noxscans.com", pageSize = 30, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.NOXSCANS, "www.noxscans.com", pageSize = 30, searchPageSize = 20) { override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SummerToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SummerToon.kt index 652a743a..1f172076 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SummerToon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SummerToon.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SUMMERTOON", "SummerToon", "tr") internal class SummerToon(context: MangaLoaderContext) : - MangaReaderParser(context, MangaParserSource.SUMMERTOON, "summertoon.biz", pageSize = 10, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.SUMMERTOON, "summertoon.co", pageSize = 10, searchPageSize = 10) { override val filterCapabilities: MangaListFilterCapabilities get() = super.filterCapabilities.copy( isTagsExclusionSupported = false, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/MmrcmsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/MmrcmsParser.kt index 738189b0..b51207ee 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/MmrcmsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/MmrcmsParser.kt @@ -129,7 +129,7 @@ internal abstract class MmrcmsParser( coverUrl = div.selectFirst("img")?.src().orEmpty(), title = div.selectFirst("div.media-body h5")?.text().orEmpty(), altTitle = null, - rating = div.selectFirst("span")?.ownText()?.toFloat()?.div(5f) ?: RATING_UNKNOWN, + rating = div.selectFirst("span")?.ownText()?.toFloatOrNull()?.div(5f) ?: RATING_UNKNOWN, tags = emptySet(), author = null, state = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/BentoScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/BentoScan.kt index 89365e19..485232b6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/BentoScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/BentoScan.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.fr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser import java.util.* +@Broken @MangaSourceParser("BENTOSCAN", "BentoScan", "fr") internal class BentoScan(context: MangaLoaderContext) : MmrcmsParser(context, MangaParserSource.BENTOSCAN, "bentoscan.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScan.kt index bf7b9c57..a6b2771f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScan.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.fr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser import java.util.* +@Broken @MangaSourceParser("MANGA_SCAN", "MangaScan", "fr") internal class MangaScan(context: MangaLoaderContext) : MmrcmsParser(context, MangaParserSource.MANGA_SCAN, "mangascan-fr.net") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanMangaVfWs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanMangaVfWs.kt index 5e3e39cf..86784d35 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanMangaVfWs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanMangaVfWs.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.fr +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser import java.util.* +@Broken @MangaSourceParser("SCANMANGAVF_WS", "ScanMangaVf.ws", "fr") internal class ScanMangaVfWs(context: MangaLoaderContext) : MmrcmsParser(context, MangaParserSource.SCANMANGAVF_WS, "scanmanga-vf.me") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/id/KomikId.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/id/KomikId.kt index da3d070b..fd3bea11 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/id/KomikId.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/id/KomikId.kt @@ -1,11 +1,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.id +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser import java.util.* +@Broken @MangaSourceParser("KOMIKID", "KomikId", "id") internal class KomikId(context: MangaLoaderContext) : MmrcmsParser(context, MangaParserSource.KOMIKID, "komikid.com") { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/OtakuSanctuaryParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/OtakuSanctuaryParser.kt index 17975b00..7204f223 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/OtakuSanctuaryParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/OtakuSanctuaryParser.kt @@ -113,7 +113,7 @@ internal abstract class OtakuSanctuaryParser( coverUrl = div.selectFirst("img")?.src().orEmpty(), title = div.selectFirst("h4")?.text().orEmpty(), altTitle = null, - rating = div.selectFirst(".rating")?.ownText()?.toFloat()?.div(10f) ?: RATING_UNKNOWN, + rating = div.selectFirst(".rating")?.ownText()?.toFloatOrNull()?.div(10f) ?: RATING_UNKNOWN, tags = emptySet(), author = null, state = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LuratoonScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LuratoonScansParser.kt index ae92fbf2..2f28045a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LuratoonScansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LuratoonScansParser.kt @@ -13,7 +13,7 @@ import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat import java.util.zip.ZipInputStream -@Broken // Not dead but totally changed structure +@Broken // Not dead but changed template @MangaSourceParser("RANDOMSCANS", "LuratoonScan", "pt") internal class LuratoonScansParser(context: MangaLoaderContext) : SinglePageMangaParser(context, MangaParserSource.RANDOMSCANS), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MangaOnline.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MangaOnline.kt index 23137e8c..9219a4cd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MangaOnline.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MangaOnline.kt @@ -71,7 +71,7 @@ internal class MangaOnline(context: MangaLoaderContext) : PagedMangaParser(conte title = div.selectLast(".data h3")?.text().orEmpty(), coverUrl = div.selectFirst("img")?.src().orEmpty(), altTitle = null, - rating = div.selectFirst(".rating")?.ownText()?.toFloat()?.div(10f) ?: RATING_UNKNOWN, + rating = div.selectFirst(".rating")?.ownText()?.toFloatOrNull()?.div(10f) ?: RATING_UNKNOWN, tags = emptySet(), description = null, state = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/SinmhParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/SinmhParser.kt index c8e3cf26..38ad8366 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/SinmhParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/SinmhParser.kt @@ -113,7 +113,7 @@ internal abstract class SinmhParser( coverUrl = div.selectFirst("img")?.src().orEmpty(), title = div.selectFirst("p > a, h3 > a")?.text().orEmpty(), altTitle = null, - rating = div.selectFirst("span.total_votes")?.ownText()?.toFloat()?.div(5f) ?: RATING_UNKNOWN, + rating = div.selectFirst("span.total_votes")?.ownText()?.toFloatOrNull()?.div(5f) ?: RATING_UNKNOWN, tags = emptySet(), author = null, state = null, @@ -191,7 +191,7 @@ internal abstract class SinmhParser( override suspend fun getPages(chapter: MangaChapter): List { val host = webClient.httpGet("/js/config.js".toAbsoluteUrl(domain)).parseRaw().substringAfter("domain\":[\"") - .substringBefore("\"]}") + .substringBefore("\"]}").replace("http:", "https:") val chapterUrl = chapter.url.toAbsoluteUrl(domain) val docs = webClient.httpGet(chapterUrl).parseHtml() @@ -204,6 +204,8 @@ internal abstract class SinmhParser( images.map { val imageUrl = when { it.startsWith("https:\\/\\/") -> it.replace("\\", "") + it.startsWith("http:\\/\\/") -> it.replace("\\", "").replace("http:", "https:") + it.startsWith("\\/") -> host + it.replace("\\", "") it.startsWith("/") -> "$host$it" else -> "$host/$path$it" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/zh/Ykmh.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/zh/Ykmh.kt new file mode 100644 index 00000000..7df9fd77 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/zh/Ykmh.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.sinmh.zh + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.sinmh.SinmhParser + +@MangaSourceParser("YKMH", "Ykmh", "zh") +internal class Ykmh(context: MangaLoaderContext) : + SinmhParser(context, MangaParserSource.YKMH, "www.ykmh.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt index 71d61f17..ce97ed8b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt @@ -56,6 +56,7 @@ internal abstract class WpComicsParser( @JvmField protected val ongoing: Set = setOf( "Đang tiến hành", + "Đang cập nhật", "Ongoing", "Updating", "連載中", @@ -64,6 +65,7 @@ internal abstract class WpComicsParser( @JvmField protected val finished: Set = setOf( "Hoàn thành", + "Đã hoàn thành", "Complete", "Completed", "完結済み", diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/TopTruyenViet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/TopTruyenViet.kt new file mode 100644 index 00000000..70c83864 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/TopTruyenViet.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.wpcomics.vi + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.wpcomics.WpComicsParser + +@MangaSourceParser("TOPTRUYENVIET", "TopTruyen.pro", "vi") +internal class TopTruyenViet(context: MangaLoaderContext) : + WpComicsParser(context, MangaParserSource.TOPTRUYENVIET, "www.toptruyenzz.pro", 36) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/AiyuMangaScanlation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/AiyuMangaScanlation.kt index 340f84c6..d241a481 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/AiyuMangaScanlation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/AiyuMangaScanlation.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.es +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser +@Broken @MangaSourceParser("AIYUMANGASCANLATION", "AiyuManhua", "es") internal class AiyuMangaScanlation(context: MangaLoaderContext) : ZeistMangaParser(context, MangaParserSource.AIYUMANGASCANLATION, "www.aiyumanhua.com") {