From aec87a9a67bd5d8ff11d3efe2187129033a4d04e Mon Sep 17 00:00:00 2001 From: devi Date: Sat, 22 Jul 2023 09:38:56 +0200 Subject: [PATCH 1/3] add source and fix japscan --- .../kotatsu/parsers/site/JapScanParser.kt | 104 +++++++-- .../parsers/site/madara/MadaraParser.kt | 70 +++--- .../parsers/site/madara/ar/FalconManga.kt | 14 ++ .../parsers/site/madara/ar/KolManga.kt | 11 + .../parsers/site/madara/ar/MangaLeks.kt | 15 ++ .../parsers/site/madara/en/ArcaneScans.kt | 11 + .../kotatsu/parsers/site/madara/en/Comiz.kt | 14 ++ .../parsers/site/madara/en/DuckManga.kt | 14 ++ .../kotatsu/parsers/site/madara/en/Grabber.kt | 15 ++ .../parsers/site/madara/en/Hentai3z.kt | 15 ++ .../parsers/site/madara/en/Hentaixdickgirl.kt | 49 +++++ .../kotatsu/parsers/site/madara/en/JiManga.kt | 11 + .../parsers/site/madara/en/MangaDass.kt | 202 ++++++++++++++++++ .../parsers/site/madara/en/MangaDna.kt | 198 +++++++++++++++++ .../parsers/site/madara/en/MangaFastNet.kt | 14 ++ .../parsers/site/madara/en/Mangagoyaoi.kt | 14 ++ .../kotatsu/parsers/site/madara/en/Manhwaz.kt | 105 +++++++++ .../parsers/site/madara/en/Paritehaber.kt | 14 ++ .../parsers/site/madara/en/Rio2MangaNet.kt | 11 + .../parsers/site/madara/en/ShibaManga.kt | 14 ++ .../parsers/site/madara/en/WebComic.kt | 14 ++ .../kotatsu/parsers/site/madara/es/Cocorip.kt | 14 ++ .../site/madara/es/DragonTranslationParser.kt | 88 ++++++++ .../parsers/site/madara/es/KoinoboriScan.kt | 14 ++ .../parsers/site/madara/es/Lectorunitoon.kt | 15 ++ .../parsers/site/madara/es/RightdarkScan.kt | 11 + .../site/madara/es/TraduccionesMoonlight.kt | 14 ++ .../kotatsu/parsers/site/madara/id/Indo18h.kt | 14 ++ .../parsers/site/madara/id/ManhwaPlus.kt | 103 +++++++++ .../parsers/site/madara/ru/Mangazavr.kt | 16 ++ .../parsers/site/madara/th/Manhuabug.kt | 16 ++ .../parsers/site/madara/th/Manhuakey.kt | 16 ++ .../parsers/site/madara/tr/KuroiManga.kt | 16 ++ .../parsers/site/madara/tr/NiveraFansub.kt | 16 ++ .../parsers/site/madara/tr/ViyaFansub.kt | 16 ++ .../parsers/site/madara/vi/MangaZodiac.kt | 12 ++ .../site/mangareader/MangaReaderParser.kt | 48 ++++- .../parsers/site/mangareader/ar/Areascans.kt | 20 ++ .../parsers/site/mangareader/ar/BeastScans.kt | 20 ++ .../parsers/site/mangareader/en/BabelToon.kt | 65 ++++++ .../parsers/site/mangareader/en/FreakScans.kt | 15 ++ .../parsers/site/mangareader/en/QueenScans.kt | 17 ++ ...ragonTranslationParser.kt => SkyMangas.kt} | 11 +- .../site/mangareader/id/DoujinDesuRip.kt | 20 ++ .../parsers/site/mangareader/id/Komikcast.kt | 28 +-- .../site/mangareader/id/KomiklokalCfd.kt | 20 ++ .../site/mangareader/id/ManhwaIndoIcu.kt | 20 ++ .../parsers/site/mangareader/id/Nonbiri.kt | 18 ++ .../parsers/site/mangareader/ja/MangaMate.kt | 21 ++ .../parsers/site/mangareader/th/MangaMoons.kt | 18 ++ .../site/mangareader/tr/AfroditScans.kt | 18 ++ .../site/mangareader/tr/AthenaFansub.kt | 19 ++ .../parsers/site/mangareader/tr/NyxManga.kt | 19 ++ .../site/mangareader/tr/SpartanManga.kt | 19 ++ 54 files changed, 1634 insertions(+), 92 deletions(-) create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/FalconManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/KolManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLeks.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ArcaneScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Comiz.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DuckManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Grabber.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentai3z.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentaixdickgirl.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/JiManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDass.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDna.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFastNet.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangagoyaoi.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwaz.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Paritehaber.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Rio2MangaNet.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ShibaManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebComic.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Cocorip.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DragonTranslationParser.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KoinoboriScan.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Lectorunitoon.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RightdarkScan.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TraduccionesMoonlight.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Indo18h.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/ManhwaPlus.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/Mangazavr.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuabug.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuakey.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KuroiManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/NiveraFansub.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ViyaFansub.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/MangaZodiac.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Areascans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/BeastScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BabelToon.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/QueenScans.kt rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/{DragonTranslationParser.kt => SkyMangas.kt} (61%) create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinDesuRip.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Nonbiri.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaMate.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaMoons.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AfroditScans.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaFansub.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NyxManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SpartanManga.kt diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/JapScanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/JapScanParser.kt index 98a590d0..f9bb0a91 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/JapScanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/JapScanParser.kt @@ -49,7 +49,7 @@ internal class JapScanParser(context: MangaLoaderContext) : PagedMangaParser(con override val configKeyDomain = ConfigKey.Domain("www.japscan.lol", "japscan.ws") override val headers: Headers = Headers.Builder() - .add("User-Agent", UserAgents.CHROME_DESKTOP) + .add("User-Agent", UserAgents.CHROME_MOBILE) .build() override suspend fun getListPage( @@ -68,21 +68,19 @@ internal class JapScanParser(context: MangaLoaderContext) : PagedMangaParser(con .build() val root = webClient.httpGet(url).parseHtml() .requireElementById("main") - .selectFirstOrThrow(".flex-wrap") - return root.select(".mainTitle") - .map { p -> - val div = checkNotNull(p.parent()) - val a = div.selectFirstOrThrow("a") - val href = a.attrAsRelativeUrl("href") + .selectFirstOrThrow(".p-2.row.d-flex") + return root.select("div.col-4") + .map { div -> + val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href") Manga( id = generateUid(href), - title = p.text(), + title = div.selectFirstOrThrow("p.p-1 a").text(), altTitle = null, url = href, publicUrl = href.toAbsoluteUrl(domain), rating = RATING_UNKNOWN, isNsfw = false, - coverUrl = div.selectFirstOrThrow("img").attrAsAbsoluteUrl("src"), + coverUrl = div.selectFirstOrThrow("img.img-fluid").attrAsAbsoluteUrl("src"), tags = setOf(), state = null, author = null, @@ -128,6 +126,27 @@ internal class JapScanParser(context: MangaLoaderContext) : PagedMangaParser(con ) } + private fun extractQuotedContent(input: String): List { + val regex = Regex("'(.*?)'") + return regex.findAll(input).map { it.groupValues[1] }.toList() + } + + private fun listJSToKey(jsList: MutableList, offsettab: Int, listKey: List): MutableList { + for (i in 0 until jsList.size) { + if (jsList[i].contains("0x")) { + var decoupeHexa = jsList[i].split("('")[1] + decoupeHexa = decoupeHexa.split("')")[0] + var indexkey = Integer.decode(decoupeHexa) - offsettab - 1 + if (indexkey < 0) { + indexkey = listKey.size - 1 + } + jsList[i] = listKey[indexkey] + } + } + + return jsList + } + override suspend fun getPages(chapter: MangaChapter): List { val chapterUrl = chapter.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(chapterUrl).parseHtml() @@ -137,20 +156,67 @@ internal class JapScanParser(context: MangaLoaderContext) : PagedMangaParser(con val embeddedData = doc.requireElementById("data").attr("data-data") val script = webClient.httpGet(scriptUrl).parseRaw() - val shortkeyRegex = Regex("""'([\dA-Z]{2})'""", RegexOption.IGNORE_CASE) - val longkeyRegex = Regex("""'([\dA-Z]{20})'""", RegexOption.IGNORE_CASE) + var tabKey = "'" + script.split("=['")[1] + tabKey = tabKey.split("];")[0] + val listKey = tabKey.split("','").toMutableList() + + var decoupeOffset = script.split("-0x")[1] + decoupeOffset = "0x" + decoupeOffset.split(";")[0] + + val offsettab = Integer.decode(decoupeOffset) + + var decoupeFuncOrder = script.split("while(!![])")[1] + decoupeFuncOrder = decoupeFuncOrder.split("if")[0] + + val listKeyOrder = extractQuotedContent(decoupeFuncOrder).toMutableList() + + if (listKeyOrder.size < 3) { + throw Exception("L'ordre des clés n'a pas pu être déterminé") + } + var goodorder = false + for (i in 0 until listKey.size) { + for (z in 0 until listKeyOrder.size) { + if (listKey[Integer.decode(listKeyOrder[z]) - offsettab - 1].contains("[0-9]".toRegex())) { + goodorder = true + } else { + goodorder = false + break + } + } + + if (goodorder) { + break + } + + val firstElement = listKey.removeAt(0) + listKey.add(firstElement) + } + + if (!goodorder) { + throw Exception("L'ordre des clés n'a pas pu être déterminé") + } + + val zjscalc = script.split("/[A-Z0-9]/gi,")[1] + + val calc1 = zjscalc.split(",")[0] + var calc1tab = calc1.split("+").toMutableList() + calc1tab = listJSToKey(calc1tab, offsettab, listKey) + + val calc2 = zjscalc.split(",")[1] + var calc2tab = calc2.split("+").toMutableList() + calc2tab = listJSToKey(calc2tab, offsettab, listKey) - val longTables = longkeyRegex.findAll(script).map { - it.groupValues[1] - }.toList() + var key1 = calc1tab.joinToString("") + var key2 = calc2tab.joinToString("") - val shortTables = shortkeyRegex.findAll(script).map { - it.groupValues[1] - }.toList() + key1 = key1.replace("'", "") + key2 = key2.replace("'", "") + key1 = key1.replace(" ", "") + key2 = key2.replace(" ", "") val keyTables = listOf( - shortTables[1].reversed() + longTables[1].reversed() + longTables[4].reversed() + longTables[0].reversed(), - shortTables[2].reversed() + longTables[3].reversed() + longTables[5].reversed() + longTables[2].reversed(), + key1.reversed(), + key2.reversed(), ) var error: Exception? = null diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt index 774661fa..1df46ad5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt @@ -264,13 +264,14 @@ internal abstract class MadaraParser( protected open val selectgenre = "div.genres-content a" protected open val selectdate = "span.chapter-release-date i" protected open val selectchapter = "li.wp-manga-chapter" + protected open val selectTestAsync = "div.listing-chapters_wrap" override suspend fun getDetails(manga: Manga): Manga = coroutineScope { val fullUrl = manga.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(fullUrl).parseHtml() val body = doc.body() - val testchekasync = body.select("div.listing-chapters_wrap") + val testchekasync = body.select(selectTestAsync) val chaptersDeferred = if (testchekasync.isNullOrEmpty()) { async { loadChapters(manga.url, doc) } @@ -329,10 +330,10 @@ internal abstract class MadaraParser( ) } + protected open suspend fun getChapters(manga: Manga, doc: Document): List { - val root2 = doc.body().selectFirstOrThrow("div.content-area") val dateFormat = SimpleDateFormat(datePattern, sourceLocale) - return root2.select(selectchapter).mapChapters(reversed = true) { i, li -> + return doc.body().select(selectchapter).mapChapters(reversed = true) { i, li -> val a = li.selectFirst("a") val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") val link = href + stylepage @@ -389,6 +390,8 @@ internal abstract class MadaraParser( } } + protected open val selectPage = "div.page-break" + override suspend fun getPages(chapter: MangaChapter): List { val fullUrl = chapter.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(fullUrl).parseHtml() @@ -396,7 +399,7 @@ internal abstract class MadaraParser( val chapterProtector = doc.getElementById("chapter-protector-data") if (chapterProtector == null) { val root = doc.body().selectFirstOrThrow("div.main-col-inner").selectFirstOrThrow("div.reading-content") - return root.select("div.page-break").map { div -> + return root.select(selectPage).map { div -> val img = div.selectFirstOrThrow("img") val url = img.src()?.toRelativeUrl(domain) ?: div.parseFailed("Image src not found") MangaPage( @@ -436,30 +439,31 @@ internal abstract class MadaraParser( val d = date?.lowercase() ?: return 0 return when { d.endsWith(" ago") || d.endsWith(" atrás") || // Handle translated 'ago' in Portuguese. - d.startsWith("há ") || // other translated 'ago' in Portuguese. - d.endsWith(" hace") || // other translated 'ago' in Spanish - d.endsWith(" önce") || // Handle translated 'ago' in Turkish. - d.endsWith(" trước") || // Handle translated 'ago' in Viêt Nam. - d.startsWith("il y a") || // Handle translated 'ago' in French. - //If there is no ago but just a motion of time - // short Hours - d.endsWith(" h") || - // short Day - d.endsWith(" d") || - // Day in Portuguese - d.endsWith(" días") || d.endsWith(" día") || - // Day in French - d.endsWith(" jour") || d.endsWith(" jours") || - // Hours in Portuguese - d.endsWith(" horas") || d.endsWith(" hora") || - // Hours in french - d.endsWith(" heure") || d.endsWith(" heures") || - // Minutes in English - d.endsWith(" mins") || - // Minutes in Portuguese - d.endsWith(" minutos") || d.endsWith(" minuto") || - //Minutes in French - d.endsWith(" minute") || d.endsWith(" minutes") -> parseRelativeDate(date) + d.startsWith("há ") || // other translated 'ago' in Portuguese. + d.endsWith(" hace") || // other translated 'ago' in Spanish + d.endsWith(" назад") || // other translated 'ago' in Russian + d.endsWith(" önce") || // Handle translated 'ago' in Turkish. + d.endsWith(" trước") || // Handle translated 'ago' in Viêt Nam. + d.startsWith("il y a") || // Handle translated 'ago' in French. + //If there is no ago but just a motion of time + // short Hours + d.endsWith(" h") || + // short Day + d.endsWith(" d") || + // Day in Portuguese + d.endsWith(" días") || d.endsWith(" día") || + // Day in French + d.endsWith(" jour") || d.endsWith(" jours") || + // Hours in Portuguese + d.endsWith(" horas") || d.endsWith(" hora") || + // Hours in french + d.endsWith(" heure") || d.endsWith(" heures") || + // Minutes in English + d.endsWith(" mins") || + // Minutes in Portuguese + d.endsWith(" minutos") || d.endsWith(" minuto") || + //Minutes in French + d.endsWith(" minute") || d.endsWith(" minutes") -> parseRelativeDate(date) // Handle 'yesterday' and 'today', using midnight d.startsWith("year") -> Calendar.getInstance().apply { @@ -505,6 +509,7 @@ internal abstract class MadaraParser( "day", "days", "d", + "день", ).anyWordIn(date) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number) }.timeInMillis WordSet("jam", "saat", "heure", "hora", "horas", "hour", "hours", "h").anyWordIn(date) -> cal.apply { @@ -523,6 +528,7 @@ internal abstract class MadaraParser( "minuto", "mins", "phút", + "минут", ).anyWordIn(date) -> cal.apply { add( Calendar.MINUTE, @@ -554,10 +560,10 @@ internal abstract class MadaraParser( private fun createRequestTemplate() = ("action=madara_load_more&page=1&template=madara-core%2Fcontent%2Fcontent-search&vars%5Bs%5D=&vars%5B" + - "orderby%5D=meta_value_num&vars%5Bpaged%5D=1&vars%5Btemplate%5D=search&vars%5Bmeta_query" + - "%5D%5B0%5D%5Brelation%5D=AND&vars%5Bmeta_query%5D%5Brelation%5D=OR&vars%5Bpost_type" + - "%5D=wp-manga&vars%5Bpost_status%5D=publish&vars%5Bmeta_key%5D=_latest_update&vars%5Border" + - "%5D=desc&vars%5Bmanga_archives_item_layout%5D=default").split( + "orderby%5D=meta_value_num&vars%5Bpaged%5D=1&vars%5Btemplate%5D=search&vars%5Bmeta_query" + + "%5D%5B0%5D%5Brelation%5D=AND&vars%5Bmeta_query%5D%5Brelation%5D=OR&vars%5Bpost_type" + + "%5D=wp-manga&vars%5Bpost_status%5D=publish&vars%5Bmeta_key%5D=_latest_update&vars%5Border" + + "%5D=desc&vars%5Bmanga_archives_item_layout%5D=default").split( '&', ).map { val pos = it.indexOf('=') diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/FalconManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/FalconManga.kt new file mode 100644 index 00000000..adb4508c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/FalconManga.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("FALCONMANGA", "FalconManga", "ar") +internal class FalconManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.FALCONMANGA, "falconmanga.com") { + + override val datePattern = "d MMMM، yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/KolManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/KolManga.kt new file mode 100644 index 00000000..69d87f6b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/KolManga.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("KOLMANGA", "KolManga", "ar") +internal class KolManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.KOLMANGA, "kolmanga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLeks.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLeks.kt new file mode 100644 index 00000000..167a6abd --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLeks.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGALEKS", "MangaLeks", "ar") +internal class MangaLeks(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGALEKS, "mangaleks.com") { + + override val datePattern = "yyyy/MM/dd" + override val postreq = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ArcaneScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ArcaneScans.kt new file mode 100644 index 00000000..14f2b5c0 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ArcaneScans.kt @@ -0,0 +1,11 @@ +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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ARCANESCANS", "ArcaneScans", "en") +internal class ArcaneScans(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.ARCANESCANS, "arcanescans.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Comiz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Comiz.kt new file mode 100644 index 00000000..c9481c20 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Comiz.kt @@ -0,0 +1,14 @@ +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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("COMIZ", "Comiz", "en") +internal class Comiz(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.COMIZ, "v2.comiz.net", 10) { + + override val isNsfwSource = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DuckManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DuckManga.kt new file mode 100644 index 00000000..1d358f94 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DuckManga.kt @@ -0,0 +1,14 @@ +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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("DUCKMANGA", "DuckManga", "en") +internal class DuckManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.DUCKMANGA, "duckmanga.com", 20) { + + override val isNsfwSource = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Grabber.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Grabber.kt new file mode 100644 index 00000000..beb7dffd --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Grabber.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("GRABBER", "Grabber", "en") +internal class Grabber(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.GRABBER, "grabber.zone", 20) { + + override val tagPrefix = "type/" + override val datePattern = "dd.MM.yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentai3z.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentai3z.kt new file mode 100644 index 00000000..9fc1a564 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentai3z.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("HENTAI3Z", "Hentai3z", "en") +internal class Hentai3z(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.HENTAI3Z, "hentai3z.xyz", pageSize = 20) { + + override val isNsfwSource = true + override val withoutAjax = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentaixdickgirl.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentaixdickgirl.kt new file mode 100644 index 00000000..f03054bf --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentaixdickgirl.kt @@ -0,0 +1,49 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + + +import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.parseFailed +import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow +import java.text.SimpleDateFormat + +@MangaSourceParser("HENTAIXDICKGIRL", "Hentaixdickgirl", "en") +internal class Hentaixdickgirl(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.HENTAIXDICKGIRL, "hentaixdickgirl.com", 16) { + + override val isNsfwSource = true + override val postreq = true + + override suspend fun getChapters(manga: Manga, doc: Document): List { + val root2 = doc.body().selectFirstOrThrow("div.listing-chapters_wrap") + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + return root2.select(selectchapter).mapChapters(reversed = true) { i, li -> + val a = li.selectFirst("a") + val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") + val link = href + stylepage + val dateText = li.selectFirst("a.c-new-tag")?.attr("title") ?: li.selectFirst(selectdate)?.text() + val name = a.selectFirst("p")?.text() ?: a.ownText() + MangaChapter( + id = generateUid(href), + name = name, + number = i + 1, + url = link, + uploadDate = parseChapterDate( + dateFormat, + dateText, + ), + source = source, + scanlator = null, + branch = null, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/JiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/JiManga.kt new file mode 100644 index 00000000..c660f327 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/JiManga.kt @@ -0,0 +1,11 @@ +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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("JIMANGA", "JiManga", "en") +internal class JiManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.JIMANGA, "jimanga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDass.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDass.kt new file mode 100644 index 00000000..89ecb306 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDass.kt @@ -0,0 +1,202 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + + +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.* +import java.text.SimpleDateFormat + +@MangaSourceParser("MANGADASS", "MangaDass", "en") +internal class MangaDass(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGADASS, "mangadass.com", 20) { + + override val isNsfwSource = true + override val datePattern = "dd MMM yyyy" + override val withoutAjax = true + override val selectchapter = "li.a-h" + override val selectdesc = "div.ss-manga" + + override suspend fun getListPage( + page: Int, + query: String?, + tags: Set?, + sortOrder: SortOrder, + ): List { + + val url = buildString { + append("https://") + append(domain) + val pages = page + 1 + + when { + !query.isNullOrEmpty() -> { + + append("/?s=") + append(query.urlEncoded()) + append("&page=") + append(pages.toString()) + } + + !tags.isNullOrEmpty() -> { + append("/$tagPrefix") + for (tag in tags) { + append(tag.key) + } + append("/") + append(pages.toString()) + append("?") + } + + else -> { + + append("/$listeurl") + append("/") + append(pages.toString()) + append("?") + } + } + append("orderby=") + when (sortOrder) { + SortOrder.POPULARITY -> append("views") + SortOrder.UPDATED -> append("latest") + SortOrder.NEWEST -> append("new-manga") + SortOrder.ALPHABETICAL -> append("alphabet") + else -> append("latest") + } + } + val doc = webClient.httpGet(url).parseHtml() + + + return doc.select("div.row.c-tabs-item__content").ifEmpty { + doc.select("div.page-item-detail") + }.map { div -> + val href = div.selectFirst("a")?.attrAsRelativeUrlOrNull("href") ?: div.parseFailed("Link not found") + val summary = div.selectFirst(".tab-summary") ?: div.selectFirst(".item-summary") + Manga( + id = generateUid(href), + url = href, + publicUrl = href.toAbsoluteUrl(div.host ?: domain), + coverUrl = div.selectFirst("img")?.src().orEmpty(), + title = (summary?.selectFirst("h3") ?: summary?.selectFirst("h4"))?.text().orEmpty(), + altTitle = null, + rating = div.selectFirst("span.total_votes")?.ownText()?.toFloatOrNull()?.div(5f) ?: -1f, + tags = summary?.selectFirst(".mg_genres")?.select("a")?.mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").removeSuffix('/').substringAfterLast('/'), + title = a.text().ifEmpty { return@mapNotNullToSet null }.toTitleCase(), + source = source, + ) + }.orEmpty(), + author = summary?.selectFirst(".mg_author")?.selectFirst("a")?.ownText(), + state = when (summary?.selectFirst(".mg_status")?.selectFirst(".summary-content")?.ownText() + ?.lowercase()) { + in ongoing -> MangaState.ONGOING + in finished -> MangaState.FINISHED + else -> null + }, + source = source, + isNsfw = isNsfwSource, + ) + } + } + + override suspend fun getDetails(manga: Manga): Manga = coroutineScope { + val fullUrl = manga.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + val body = doc.body() + + val chaptersDeferred = async { getChapters(manga, doc) } + + val desc = body.select(selectdesc).let { + if (it.select("p").text().isNotEmpty()) { + it.select("p").joinToString(separator = "\n\n") { p -> + p.text().replace("
", "\n") + } + } else { + it.text() + } + } + + val stateDiv = (body.selectFirst("div.post-content_item:contains(Status)"))?.selectLast("div.summary-content") + + val state = stateDiv?.let { + when (it.text()) { + in ongoing -> MangaState.ONGOING + in finished -> MangaState.FINISHED + else -> null + } + } + + val alt = + doc.body().select(".post-content_item:contains(Alt) .summary-content").firstOrNull()?.tableValue()?.text() + ?.trim() ?: doc.body().select(".post-content_item:contains(Nomes alternativos: ) .summary-content") + .firstOrNull()?.tableValue()?.text()?.trim() + + manga.copy( + tags = doc.body().select(selectgenre).mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").removeSuffix("/").substringAfterLast('/'), + title = a.text().toTitleCase(), + source = source, + ) + }, + description = desc, + altTitle = alt, + state = state, + chapters = chaptersDeferred.await(), + ) + } + + override suspend fun getChapters(manga: Manga, doc: Document): List { + val root2 = doc.body().selectFirstOrThrow("div.panel-manga-chapter") + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + return root2.select(selectchapter).mapChapters(reversed = true) { i, li -> + val a = li.selectFirst("a") + val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") + val link = href + stylepage + val dateText = li.selectFirst("a.c-new-tag")?.attr("title") ?: li.selectFirst(selectdate)?.text() + val name = a.selectFirst("p")?.text() ?: a.ownText() + MangaChapter( + id = generateUid(href), + name = name, + number = i + 1, + url = link, + uploadDate = parseChapterDate( + dateFormat, + dateText, + ), + source = source, + scanlator = null, + branch = null, + ) + } + } + + override suspend fun getPages(chapter: MangaChapter): List { + val fullUrl = chapter.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + val root = doc.body().selectFirstOrThrow("div.read-manga").selectFirstOrThrow("div.read-content") + return root.select("img").map { img -> + val url = img.src()?.toRelativeUrl(domain) ?: img.parseFailed("Image src not found") + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } + + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDna.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDna.kt new file mode 100644 index 00000000..6d19f071 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDna.kt @@ -0,0 +1,198 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + + +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.* +import java.text.SimpleDateFormat + +@MangaSourceParser("MANGADNA", "MangaDna", "en") +internal class MangaDna(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGADNA, "mangadna.com", 20) { + + override val isNsfwSource = true + override val datePattern = "dd MMM yyyy" + override val withoutAjax = true + override val selectdesc = "div.dsct" + override val selectchapter = "li.a-h" + + override suspend fun getListPage( + page: Int, + query: String?, + tags: Set?, + sortOrder: SortOrder, + ): List { + + val url = buildString { + append("https://") + append(domain) + val pages = page + 1 + + when { + !query.isNullOrEmpty() -> { + append("/page/") + append(pages.toString()) + append("/?s=") + append(query.urlEncoded()) + append("&post_type=wp-manga&") + } + + !tags.isNullOrEmpty() -> { + append("/$tagPrefix") + for (tag in tags) { + append(tag.key) + } + append("/page/") + append(pages.toString()) + append("?") + } + + else -> { + + append("/$listeurl") + append("/page/") + append(pages.toString()) + append("?") + } + } + append("m_orderby=") + when (sortOrder) { + SortOrder.POPULARITY -> append("views") + SortOrder.UPDATED -> append("latest") + SortOrder.NEWEST -> append("new-manga") + SortOrder.ALPHABETICAL -> append("alphabet") + else -> append("latest") + } + } + val doc = webClient.httpGet(url).parseHtml() + + + return doc.select("div.home-item").map { div -> + val href = div.selectFirst("a")?.attrAsRelativeUrlOrNull("href") ?: div.parseFailed("Link not found") + val summary = div.selectFirst(".tab-summary") ?: div.selectFirst(".hcontent") + Manga( + id = generateUid(href), + url = href, + publicUrl = href.toAbsoluteUrl(div.host ?: domain), + coverUrl = div.selectFirst("img")?.src().orEmpty(), + title = (summary?.selectFirst("h3") ?: summary?.selectFirst("h4"))?.text().orEmpty(), + altTitle = null, + rating = div.selectFirst("div.hitem-rate span")?.ownText()?.toFloatOrNull()?.div(5f) ?: -1f, + tags = summary?.selectFirst(".mg_genres")?.select("a")?.mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").removeSuffix('/').substringAfterLast('/'), + title = a.text().ifEmpty { return@mapNotNullToSet null }.toTitleCase(), + source = source, + ) + }.orEmpty(), + author = summary?.selectFirst(".mg_author")?.selectFirst("a")?.ownText(), + state = when (summary?.selectFirst(".mg_status")?.selectFirst(".summary-content")?.ownText() + ?.lowercase()) { + in ongoing -> MangaState.ONGOING + in finished -> MangaState.FINISHED + else -> null + }, + source = source, + isNsfw = isNsfwSource, + ) + } + } + + override suspend fun getDetails(manga: Manga): Manga = coroutineScope { + val fullUrl = manga.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + val body = doc.body() + + val chaptersDeferred = async { getChapters(manga, doc) } + + val desc = body.select(selectdesc).let { + if (it.select("p").text().isNotEmpty()) { + it.select("p").joinToString(separator = "\n\n") { p -> + p.text().replace("
", "\n") + } + } else { + it.text() + } + } + + val stateDiv = (body.selectFirst("div.post-content_item:contains(Status)"))?.selectLast("div.summary-content") + + val state = stateDiv?.let { + when (it.text()) { + in ongoing -> MangaState.ONGOING + in finished -> MangaState.FINISHED + else -> null + } + } + + val alt = + doc.body().select(".post-content_item:contains(Alt) .summary-content").firstOrNull()?.tableValue()?.text() + ?.trim() ?: doc.body().select(".post-content_item:contains(Nomes alternativos: ) .summary-content") + .firstOrNull()?.tableValue()?.text()?.trim() + + manga.copy( + tags = doc.body().select(selectgenre).mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").removeSuffix("/").substringAfterLast('/'), + title = a.text().toTitleCase(), + source = source, + ) + }, + description = desc, + altTitle = alt, + state = state, + chapters = chaptersDeferred.await(), + ) + } + + override suspend fun getChapters(manga: Manga, doc: Document): List { + val root2 = doc.body().selectFirstOrThrow("div.panel-manga-chapter") + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + return root2.select(selectchapter).mapChapters(reversed = true) { i, li -> + val a = li.selectFirst("a") + val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") + val link = href + stylepage + val dateText = li.selectFirst("a.c-new-tag")?.attr("title") ?: li.selectFirst(selectdate)?.text() + val name = a.selectFirst("p")?.text() ?: a.ownText() + MangaChapter( + id = generateUid(href), + name = name, + number = i + 1, + url = link, + uploadDate = parseChapterDate( + dateFormat, + dateText, + ), + source = source, + scanlator = null, + branch = null, + ) + } + } + + override suspend fun getPages(chapter: MangaChapter): List { + val fullUrl = chapter.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + val root = doc.body().selectFirstOrThrow("div.read-manga").selectFirstOrThrow("div.read-content") + return root.select("img").map { img -> + val url = img.src()?.toRelativeUrl(domain) ?: img.parseFailed("Image src not found") + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFastNet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFastNet.kt new file mode 100644 index 00000000..d109fe6b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFastNet.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGAFASTNET", "Manga Fast Net", "en") +internal class MangaFastNet(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGAFASTNET, "manhuafast.net") { + + override val withoutAjax = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangagoyaoi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangagoyaoi.kt new file mode 100644 index 00000000..6486c3bf --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangagoyaoi.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGAGOYAOI", "Mangagoyaoi", "en") +internal class Mangagoyaoi(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGAGOYAOI, "mangagoyaoi.com") { + + override val isNsfwSource = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwaz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwaz.kt new file mode 100644 index 00000000..a05c7294 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwaz.kt @@ -0,0 +1,105 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.* + +@MangaSourceParser("MANHWAZ", "Manhwaz", "en") +internal class Manhwaz(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANHWAZ, "manhwaz.com", 40) { + + override val listeurl = "genre/manhwa" + override val tagPrefix = "genre/" + override val withoutAjax = true + override val selectTestAsync = "div.list-chapter" + + override suspend fun getListPage( + page: Int, + query: String?, + tags: Set?, + sortOrder: SortOrder, + ): List { + + val url = buildString { + append("https://") + append(domain) + val pages = page + 1 + + when { + !query.isNullOrEmpty() -> { + + append("/search?s=") + append(query.urlEncoded()) + append("&page=") + append(pages.toString()) + } + + !tags.isNullOrEmpty() -> { + append("/$tagPrefix") + for (tag in tags) { + append(tag.key) + } + append("?page=") + append(pages.toString()) + append("&") + } + + else -> { + + append("/$listeurl") + append("?page=") + append(pages.toString()) + append("&") + } + } + append("m_orderby=") + when (sortOrder) { + SortOrder.POPULARITY -> append("views") + SortOrder.UPDATED -> append("latest") + SortOrder.NEWEST -> append("new-manga") + SortOrder.ALPHABETICAL -> append("alphabet") + else -> append("latest") + } + } + val doc = webClient.httpGet(url).parseHtml() + + return doc.select("div.row.c-tabs-item__content").ifEmpty { + doc.select("div.page-item-detail") + }.map { div -> + val href = div.selectFirst("a")?.attrAsRelativeUrlOrNull("href") ?: div.parseFailed("Link not found") + val summary = div.selectFirst(".tab-summary") ?: div.selectFirst(".item-summary") + Manga( + id = generateUid(href), + url = href, + publicUrl = href.toAbsoluteUrl(div.host ?: domain), + coverUrl = div.selectFirst("img")?.src().orEmpty(), + title = (summary?.selectFirst("h3") ?: summary?.selectFirst("h4"))?.text().orEmpty(), + altTitle = null, + rating = div.selectFirst("span.total_votes")?.ownText()?.toFloatOrNull()?.div(5f) ?: -1f, + tags = summary?.selectFirst(".mg_genres")?.select("a")?.mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").removeSuffix('/').substringAfterLast('/'), + title = a.text().ifEmpty { return@mapNotNullToSet null }.toTitleCase(), + source = source, + ) + }.orEmpty(), + author = summary?.selectFirst(".mg_author")?.selectFirst("a")?.ownText(), + state = when (summary?.selectFirst(".mg_status")?.selectFirst(".summary-content")?.ownText() + ?.lowercase()) { + in ongoing -> MangaState.ONGOING + in finished -> MangaState.FINISHED + else -> null + }, + source = source, + isNsfw = isNsfwSource, + ) + } + } +} + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Paritehaber.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Paritehaber.kt new file mode 100644 index 00000000..93d77e4f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Paritehaber.kt @@ -0,0 +1,14 @@ +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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("PARITEHABER", "Paritehaber", "en") +internal class Paritehaber(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.PARITEHABER, "www.paritehaber.com", 10) { + + override val isNsfwSource = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Rio2MangaNet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Rio2MangaNet.kt new file mode 100644 index 00000000..cf47b621 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Rio2MangaNet.kt @@ -0,0 +1,11 @@ +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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("RIO2MANGANET", "Rio2MangaNet", "en") +internal class Rio2MangaNet(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.RIO2MANGANET, "rio2manga.net", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ShibaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ShibaManga.kt new file mode 100644 index 00000000..b8a7eb0f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ShibaManga.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("SHIBAMANGA", "Shiba Manga", "en") +internal class ShibaManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.SHIBAMANGA, "shibamanga.com") { + + override val datePattern = "MM/dd/yyyy" +} + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebComic.kt new file mode 100644 index 00000000..8a2856c9 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebComic.kt @@ -0,0 +1,14 @@ +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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("WEBCOMIC", "WebComic", "en") +internal class WebComic(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.WEBCOMIC, "webcomic.me") { + + override val postreq = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Cocorip.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Cocorip.kt new file mode 100644 index 00000000..b3b72dab --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Cocorip.kt @@ -0,0 +1,14 @@ +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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("COCORIP", "Cocorip", "es") +internal class Cocorip(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.COCORIP, "cocorip.net", 16) { + + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DragonTranslationParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DragonTranslationParser.kt new file mode 100644 index 00000000..177932eb --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DragonTranslationParser.kt @@ -0,0 +1,88 @@ +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.Manga +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.host +import org.koitharu.kotatsu.parsers.util.parseFailed +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.urlEncoded +import java.util.EnumSet + +@MangaSourceParser("DRAGONTRANSLATION", "DragonTranslation", "es") +internal class DragonTranslationParser(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.DRAGONTRANSLATION, "dragontranslation.net", 30) { + + override val sortOrders: Set = EnumSet.of( + SortOrder.UPDATED, + ) + + override val selectPage = "div#chapter_imgs img" + + override suspend fun getListPage( + page: Int, + query: String?, + tags: Set?, + sortOrder: SortOrder, + ): List { + + val url = buildString { + append("https://") + append(domain) + val pages = page + 1 + + when { + !query.isNullOrEmpty() -> { + append("/mangas?buscar=") + append(query.urlEncoded()) + append("&page=") + append(pages.toString()) + } + + !tags.isNullOrEmpty() -> { + append("/mangas?tag=") + for (tag in tags) { + append(tag.key) + } + append("&page=") + append(pages.toString()) + } + + else -> { + + append("/mangas") + append("?page=") + append(pages.toString()) + } + } + } + val doc = webClient.httpGet(url).parseHtml() + + return doc.select("div.video-bg div.col-6 ").map { div -> + val href = + div.selectFirst("a.series-link")?.attrAsRelativeUrlOrNull("href") ?: div.parseFailed("Link not found") + Manga( + id = generateUid(href), + url = href, + publicUrl = href.toAbsoluteUrl(div.host ?: domain), + coverUrl = div.selectFirst("img.thumb-img")?.src().orEmpty(), + title = div.selectFirst("div.series-box h5")?.text().orEmpty(), + altTitle = null, + rating = div.selectFirst("span.total_votes")?.ownText()?.toFloatOrNull()?.div(5f) ?: -1f, + tags = emptySet(), + author = null, + state = null, + source = source, + isNsfw = isNsfwSource, + ) + } + } +} 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 new file mode 100644 index 00000000..9524ef25 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KoinoboriScan.kt @@ -0,0 +1,14 @@ +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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("KOINOBORISCAN", "Koinobori Scan", "es") +internal class KoinoboriScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.KOINOBORISCAN, "koinoboriscan.com") { + + override val postreq = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Lectorunitoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Lectorunitoon.kt new file mode 100644 index 00000000..c1acf9f4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Lectorunitoon.kt @@ -0,0 +1,15 @@ +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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("LECTORUNITOON", "Lectorunitoon", "es") +internal class Lectorunitoon(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.LECTORUNITOON, "lectorunitoon.com", 10) { + + override val tagPrefix = "generos/" + override val datePattern = "dd/MM/yyyy" +} 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 new file mode 100644 index 00000000..105eaa34 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RightdarkScan.kt @@ -0,0 +1,11 @@ +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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("RIGHTDARKSCAN", "Rightdark Scan", "es") +internal class RightdarkScan(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.RIGHTDARKSCAN, "rightdark-scan.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TraduccionesMoonlight.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TraduccionesMoonlight.kt new file mode 100644 index 00000000..c35df13b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TraduccionesMoonlight.kt @@ -0,0 +1,14 @@ +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.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("TRADUCCIONESMOONLIGHT", "Traducciones Moonlight", "es") +internal class TraduccionesMoonlight(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.TRADUCCIONESMOONLIGHT, "traduccionesmoonlight.com") { + + override val datePattern = "d MMMM, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Indo18h.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Indo18h.kt new file mode 100644 index 00000000..7d9a4053 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Indo18h.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.madara.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("INDO18H", "Indo18h", "id") +internal class Indo18h(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.INDO18H, "indo18h.com", 24) { + + override val isNsfwSource = true + override val withoutAjax = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/ManhwaPlus.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/ManhwaPlus.kt new file mode 100644 index 00000000..078dc626 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/ManhwaPlus.kt @@ -0,0 +1,103 @@ +package org.koitharu.kotatsu.parsers.site.madara.id + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.* +import java.util.Locale + +@MangaSourceParser("MANHWAPLUS", "Manhwa Plus", "id") +internal class ManhwaPlus(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANHWAPLUS, "manhwaplus.pro", 10) { + + override val isNsfwSource = true + override val tagPrefix = "genre/" + override val datePattern = "MMMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH + override val withoutAjax = true + override val listeurl = "series/" + + override suspend fun getListPage( + page: Int, + query: String?, + tags: Set?, + sortOrder: SortOrder, + ): List { + + val url = buildString { + append("https://") + append(domain) + val pages = page + 1 + + when { + !query.isNullOrEmpty() -> { + append("/page/") + append(pages.toString()) + append("/?s=") + append(query.urlEncoded()) + append("&post_type=wp-manga&") + } + + !tags.isNullOrEmpty() -> { + append("/$tagPrefix") + for (tag in tags) { + append(tag.key) + } + append("/page/") + append(pages.toString()) + append("?") + } + + else -> { + + append("/$listeurl") + append("/page/") + append(pages.toString()) + append("?") + } + } + } + val doc = webClient.httpGet(url).parseHtml() + + return doc.select("div.row.c-tabs-item__content").ifEmpty { + doc.select("div.page-item-detail") + }.map { div -> + val href = div.selectFirst("a")?.attrAsRelativeUrlOrNull("href") ?: div.parseFailed("Link not found") + val summary = div.selectFirst(".tab-summary") ?: div.selectFirst(".item-summary") + Manga( + id = generateUid(href), + url = href, + publicUrl = href.toAbsoluteUrl(div.host ?: domain), + coverUrl = div.selectFirst("img")?.attr("data-wpfc-original-src") ?: div.selectFirst("img")?.src() + .orEmpty(), + title = (summary?.selectFirst("h3") ?: summary?.selectFirst("h4") + ?: div.selectFirst("h5.series-title"))?.text().orEmpty(), + altTitle = null, + rating = div.selectFirst("span.total_votes")?.ownText()?.toFloatOrNull()?.div(5f) ?: -1f, + tags = summary?.selectFirst(".mg_genres")?.select("a")?.mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").removeSuffix('/').substringAfterLast('/'), + title = a.text().ifEmpty { return@mapNotNullToSet null }.toTitleCase(), + source = source, + ) + }.orEmpty(), + author = summary?.selectFirst(".mg_author")?.selectFirst("a")?.ownText(), + state = when (summary?.selectFirst(".mg_status")?.selectFirst(".summary-content")?.ownText() + ?.lowercase()) { + in ongoing -> MangaState.ONGOING + in finished -> MangaState.FINISHED + else -> null + }, + source = source, + isNsfw = isNsfwSource, + ) + } + } + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/Mangazavr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/Mangazavr.kt new file mode 100644 index 00000000..b43be1e4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/Mangazavr.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.ru + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("MANGAZAVR", "Mangazavr", "ru") +internal class Mangazavr(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGAZAVR, "mangazavr.ru") { + + override val datePattern = "dd.MM.yyyy" + override val isNsfwSource = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuabug.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuabug.kt new file mode 100644 index 00000000..c5e6b13d --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuabug.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import java.util.Locale + +@MangaSourceParser("MANHUABUG", "Manhuabug", "th") +internal class Manhuabug(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANHUABUG, "www.manhuabug.com", 10) { + + override val datePattern: String = "d MMMM yyyy" + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuakey.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuakey.kt new file mode 100644 index 00000000..35c5bfa6 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuakey.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import java.util.Locale + +@MangaSourceParser("MANHUAKEY", "Manhuakey", "th") +internal class Manhuakey(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANHUAKEY, "www.manhuakey.com", 10) { + + override val datePattern: String = "d MMMM yyyy" + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KuroiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KuroiManga.kt new file mode 100644 index 00000000..a847eda9 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KuroiManga.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("KUROIMANGA", "Kuroi Manga", "tr") +internal class KuroiManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.KUROIMANGA, "www.kuroimanga.com") { + + override val datePattern = "d MMMM yyyy" + override val isNsfwSource = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/NiveraFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/NiveraFansub.kt new file mode 100644 index 00000000..e08c505a --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/NiveraFansub.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("NIVERAFANSUB", "Nivera Fansub", "tr") +internal class NiveraFansub(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.NIVERAFANSUB, "niverafansub.com") { + + override val datePattern = "d MMMM yyyy" + override val isNsfwSource = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ViyaFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ViyaFansub.kt new file mode 100644 index 00000000..3ffb527a --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ViyaFansub.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.tr + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("VIYAFANSUB", "Viya Fansub", "tr") +internal class ViyaFansub(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.VIYAFANSUB, "viyafansub.com") { + + override val datePattern = "d MMMM yyyy" + override val isNsfwSource = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/MangaZodiac.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/MangaZodiac.kt new file mode 100644 index 00000000..251ef94e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/MangaZodiac.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.vi + + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + + +@MangaSourceParser("MANGAZODIAC", "Manga Zodiac", "vi") +internal class MangaZodiac(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.MANGAZODIAC, "mangazodiac.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt index 83a38464..ab1db903 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt @@ -29,6 +29,7 @@ import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl import org.koitharu.kotatsu.parsers.util.tryParse import org.koitharu.kotatsu.parsers.util.urlEncoded import java.text.SimpleDateFormat +import java.util.Base64 import java.util.EnumSet import java.util.Locale @@ -92,6 +93,7 @@ internal abstract class MangaReaderParser( tablemode.selectFirst(".infotable td:contains(Status)") ?: tablemode.selectFirst(".infotable td:contains(Statut)") ?: tablemode.selectFirst(".infotable td:contains(حالة العمل)") + ?: tablemode.selectFirst(".infotable td:contains(الحالة)") ?: tablemode.selectFirst(".infotable td:contains(Estado)") ?: docs.selectFirst(".infotable td:contains(สถานะ)") ?: tablemode.selectFirst(".infotable td:contains(Stato )") @@ -103,7 +105,7 @@ internal abstract class MangaReaderParser( ?: docs.selectFirst(".tsinfo div:contains(حالة العمل)") ?: docs.selectFirst(".tsinfo div:contains(Estado)") ?: docs.selectFirst(".tsinfo div:contains(สถานะ)") ?: docs.selectFirst(".tsinfo div:contains(Stato )") ?: docs.selectFirst(".tsinfo div:contains(Durum)") ?: docs.selectFirst(".tsinfo div:contains(Statüsü)") - ?: docs.selectFirst(".tsinfo div:contains(Statü)") + ?: docs.selectFirst(".tsinfo div:contains(Statü)") ?: docs.selectFirst(".tsinfo div:contains(الحالة)") } val state = if (tablemode != null) { @@ -120,7 +122,7 @@ internal abstract class MangaReaderParser( "En cours \uD83D\uDFE2", "En cours de publication", "Đang tiến hành", "Em lançamento", "em lançamento", "Em Lançamento", "Онгоінг", "Publishing", "Devam Ediyor", "Em Andamento", "In Corso", "Güncel", "Berjalan", "Продолжается", "Updating", "Lançando", "In Arrivo", "Emision", "En emision", "مستمر", "Curso", "En marcha", "Publicandose", "Publicando", "连载中", - "Devam ediyor", + "Devam ediyor", "Devam Etmekte", -> MangaState.ONGOING "Completed", "Completo", "Complété", "Fini", "Achevé", "Terminé", "Terminé ⚫", "Tamamlandı", "Đã hoàn thành", "Hoàn Thành", "مكتملة", @@ -204,8 +206,10 @@ internal abstract class MangaReaderParser( return parseMangaList(webClient.httpGet(url).parseHtml()) } + protected open val selectMangaliste = ".postbody .listupd .bs .bsx" + protected open fun parseMangaList(docs: Document): List { - return docs.select(".postbody .listupd .bs .bsx").mapNotNull { + return docs.select(selectMangaliste).mapNotNull { val a = it.selectFirst("a") ?: return@mapNotNull null val relativeUrl = a.attrAsRelativeUrl("href") val rating = it.selectFirst(".numscore")?.text() @@ -228,12 +232,15 @@ internal abstract class MangaReaderParser( } } + protected open val encodedSrc = false + protected open val selectScript = "div.wrapper script" + override suspend fun getPages(chapter: MangaChapter): List { val chapterUrl = chapter.url.toAbsoluteUrl(domain) val docs = webClient.httpGet(chapterUrl).parseHtml() val test = docs.select("script:containsData(ts_reader)") - if (test.isNullOrEmpty()) { + if (test.isNullOrEmpty() and !encodedSrc) { return docs.select("div#readerarea img").map { img -> val url = img.imageUrl() MangaPage( @@ -244,11 +251,32 @@ internal abstract class MangaReaderParser( ) } } else { - val script = docs.selectFirstOrThrow("script:containsData(ts_reader)") - val images = JSONObject(script.data().substringAfter('(').substringBeforeLast(')')) - .getJSONArray("sources") - .getJSONObject(0) - .getJSONArray("images") + val images = if (encodedSrc) { + 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 + } + } + + } + JSONObject(decode.substringAfter('(').substringBeforeLast(')')) + .getJSONArray("sources") + .getJSONObject(0) + .getJSONArray("images") + + } else { + val script = docs.selectFirstOrThrow("script:containsData(ts_reader)") + JSONObject(script.data().substringAfter('(').substringBeforeLast(')')) + .getJSONArray("sources") + .getJSONObject(0) + .getJSONArray("images") + } + val pages = ArrayList(images.length()) for (i in 0 until images.length()) { pages.add( @@ -292,7 +320,7 @@ internal abstract class MangaReaderParser( return@withLock tagMap } - private fun Element.imageUrl(): String { + protected open fun Element.imageUrl(): String { return attrAsAbsoluteUrlOrNull("src") ?: attrAsAbsoluteUrlOrNull("data-src") ?: attrAsAbsoluteUrlOrNull("data-cfsrc") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Areascans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Areascans.kt new file mode 100644 index 00000000..ee750f16 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Areascans.kt @@ -0,0 +1,20 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.ar + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.text.SimpleDateFormat +import java.util.Locale + +@MangaSourceParser("AREASCANS", "Areascans", "ar") +internal class Areascans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.AREASCANS, pageSize = 20, searchPageSize = 10) { + + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("www.areascans.net") + + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("ar", "AR")) + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/BeastScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/BeastScans.kt new file mode 100644 index 00000000..b5427628 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/BeastScans.kt @@ -0,0 +1,20 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.ar + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.text.SimpleDateFormat +import java.util.Locale + +@MangaSourceParser("BEASTSCANS", "Beast Scans", "ar") +internal class BeastScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.BEASTSCANS, pageSize = 20, searchPageSize = 10) { + + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("beast-scans.com") + + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("ar", "AR")) + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BabelToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BabelToon.kt new file mode 100644 index 00000000..70f14dc9 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BabelToon.kt @@ -0,0 +1,65 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.tryParse +import java.text.SimpleDateFormat +import java.util.Locale + +@MangaSourceParser("BABELTOON", "BabelToon", "en") +internal class BabelToon(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.BABELTOON, pageSize = 20, searchPageSize = 10) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("babeltoon.com") + + override val listUrl = "/series" + override val selectMangaliste = ".postbody .listupd .maindet .inmain" + override val chapterDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH) + + + override suspend fun getDetails(manga: Manga): Manga { + val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val chapters = docs.select(".eplister > ul > li").mapChapters(reversed = true) { index, element -> + val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null + MangaChapter( + id = generateUid(url), + name = element.selectFirst(".epl-num")?.text() ?: "Chapter ${index + 1}", + url = url, + number = index + 1, + scanlator = null, + uploadDate = chapterDateFormat.tryParse(element.selectFirst(".epl-date")?.text()), + branch = null, + source = source, + ) + } + return parseInfo(docs, manga, chapters) + } + + override suspend fun getPages(chapter: MangaChapter): List { + val chapterUrl = chapter.url.toAbsoluteUrl(domain) + val docs = webClient.httpGet(chapterUrl).parseHtml() + + return docs.select("div.epcontent img").map { img -> + val url = img.imageUrl() + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } +} + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakScans.kt new file mode 100644 index 00000000..e0305869 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakScans.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("FREAKSCANS", "FreakScans", "en") +internal class FreakScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.FREAKSCANS, pageSize = 20, searchPageSize = 20) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("freakscans.com") + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/QueenScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/QueenScans.kt new file mode 100644 index 00000000..95b9fec2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/QueenScans.kt @@ -0,0 +1,17 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("QUEENSCANS", "QueenScans", "en") +internal class QueenScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.QUEENSCANS, pageSize = 30, searchPageSize = 10) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("queenscans.com") + + override val listUrl = "/comics" + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/DragonTranslationParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/SkyMangas.kt similarity index 61% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/DragonTranslationParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/SkyMangas.kt index be71c210..c4f911a2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/DragonTranslationParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/SkyMangas.kt @@ -8,12 +8,13 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.text.SimpleDateFormat import java.util.Locale -@MangaSourceParser("DRAGONTRANSLATION", "DragonTranslation", "es") -internal class DragonTranslationParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.DRAGONTRANSLATION, pageSize = 20, searchPageSize = 10) { +@MangaSourceParser("SKYMANGAS", "Sky Mangas", "es") +internal class SkyMangas(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.SKYMANGAS, pageSize = 20, searchPageSize = 10) { override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("dragontranslation.net") + get() = ConfigKey.Domain("skymangas.com") - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH) + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("es", "ES")) + override val encodedSrc = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinDesuRip.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinDesuRip.kt new file mode 100644 index 00000000..646591cc --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinDesuRip.kt @@ -0,0 +1,20 @@ +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.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.text.SimpleDateFormat +import java.util.Locale + +@MangaSourceParser("DOUJINDESURIP", "Doujin Desu Rip", "id") +internal class DoujinDesuRip(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.DOUJINDESURIP, pageSize = 10, searchPageSize = 10) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("doujindesu.rip") + + override val isNsfwSource = true + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt index 2a58038e..7418c703 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt @@ -2,29 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.id import org.json.JSONObject import org.jsoup.nodes.Document -import org.jsoup.nodes.Element import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey -import org.koitharu.kotatsu.parsers.model.Manga -import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaPage -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.model.MangaState -import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN -import org.koitharu.kotatsu.parsers.model.WordSet +import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrl -import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrlOrNull -import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl -import org.koitharu.kotatsu.parsers.util.domain -import org.koitharu.kotatsu.parsers.util.generateUid -import org.koitharu.kotatsu.parsers.util.mapChapters -import org.koitharu.kotatsu.parsers.util.mapNotNullToSet -import org.koitharu.kotatsu.parsers.util.parseHtml -import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow -import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl -import org.koitharu.kotatsu.parsers.util.tryParse +import org.koitharu.kotatsu.parsers.util.* import java.text.DateFormat import java.util.Calendar @@ -118,13 +101,6 @@ internal class Komikcast(context: MangaLoaderContext) : } } - private fun Element.imageUrl(): String { - return attrAsAbsoluteUrlOrNull("src") - ?: attrAsAbsoluteUrlOrNull("data-src") - ?: attrAsAbsoluteUrlOrNull("data-cfsrc") - ?: "" - } - override suspend fun getPages(chapter: MangaChapter): List { val chapterUrl = chapter.url.toAbsoluteUrl(domain) val docs = webClient.httpGet(chapterUrl).parseHtml() 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 new file mode 100644 index 00000000..d5a237a1 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt @@ -0,0 +1,20 @@ +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.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.text.SimpleDateFormat +import java.util.Locale + +@MangaSourceParser("KOMIKLOKALCFD", "Komiklokal Cfd", "id") +internal class KomiklokalCfd(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.KOMIKLOKALCFD, pageSize = 30, searchPageSize = 10) { + + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("komiklokal.cfd") + + override val isNsfwSource = true + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH) +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt new file mode 100644 index 00000000..41213148 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt @@ -0,0 +1,20 @@ +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.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.text.SimpleDateFormat +import java.util.Locale + +@MangaSourceParser("MANHWAINDOICU", "Manhwa Indo Icu", "id") +internal class ManhwaIndoIcu(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.MANHWAINDOICU, pageSize = 30, searchPageSize = 10) { + + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("manhwaindo.icu") + + override val isNsfwSource = true + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH) +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Nonbiri.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Nonbiri.kt new file mode 100644 index 00000000..0936db89 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Nonbiri.kt @@ -0,0 +1,18 @@ +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.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.text.SimpleDateFormat +import java.util.Locale + +@MangaSourceParser("NONBIRI", "Nonbiri", "id") +internal class Nonbiri(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.NONBIRI, pageSize = 15, searchPageSize = 10) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("nonbiri.space") + + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaMate.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaMate.kt new file mode 100644 index 00000000..03422c3e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaMate.kt @@ -0,0 +1,21 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.ja + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.text.SimpleDateFormat +import java.util.Locale + +@MangaSourceParser("MANGAMATE", "Manga Mate", "ja") +internal class MangaMate(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.MANGAMATE, pageSize = 10, searchPageSize = 10) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("manga-mate.org") + + + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("M月 d, yyyy", Locale.ENGLISH) + override val encodedSrc = true + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaMoons.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaMoons.kt new file mode 100644 index 00000000..cf0be222 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaMoons.kt @@ -0,0 +1,18 @@ +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.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.text.SimpleDateFormat +import java.util.Locale + +@MangaSourceParser("MANGAMOONS", "Manga Moons", "th") +internal class MangaMoons(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.MANGAMOONS, pageSize = 20, searchPageSize = 10) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("manga-moons.net") + + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th", "TH")) +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AfroditScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AfroditScans.kt new file mode 100644 index 00000000..a87369b8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AfroditScans.kt @@ -0,0 +1,18 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.text.SimpleDateFormat +import java.util.Locale + +@MangaSourceParser("AFRODITSCANS", "Afrodit Scans", "tr") +internal class AfroditScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.AFRODITSCANS, pageSize = 24, searchPageSize = 10) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("afroditscans.com") + + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("tr")) +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaFansub.kt new file mode 100644 index 00000000..a1b09849 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaFansub.kt @@ -0,0 +1,19 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.text.SimpleDateFormat +import java.util.Locale + +@MangaSourceParser("ATHENAFANSUB", "AthenaFansub", "tr") +internal class AthenaFansub(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.ATHENAFANSUB, pageSize = 20, searchPageSize = 10) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("athenafansub.com") + + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr", "TR")) +} + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NyxManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NyxManga.kt new file mode 100644 index 00000000..fe8c121a --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NyxManga.kt @@ -0,0 +1,19 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.text.SimpleDateFormat +import java.util.Locale + +@MangaSourceParser("NYXMANGA", "Nyx Manga", "tr") +internal class NyxManga(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.NYXMANGA, pageSize = 14, searchPageSize = 10) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("nyxmanga.com") + + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr", "TR")) +} + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SpartanManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SpartanManga.kt new file mode 100644 index 00000000..7dd15675 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SpartanManga.kt @@ -0,0 +1,19 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.tr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.config.ConfigKey +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.text.SimpleDateFormat +import java.util.Locale + +@MangaSourceParser("SPARTANMANGA", "Spartan Manga", "tr") +internal class SpartanManga(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.SPARTANMANGA, pageSize = 40, searchPageSize = 20) { + override val configKeyDomain: ConfigKey.Domain + get() = ConfigKey.Domain("spartanmanga.com.tr") + + override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr", "TR")) +} + From 9afc046d7beca055f28c3b2ccdf447672330ce8c Mon Sep 17 00:00:00 2001 From: devi Date: Sat, 22 Jul 2023 11:15:18 +0200 Subject: [PATCH 2/3] Change logic date on mangareader Change logic domain on mangareader --- .../site/mangareader/MangaReaderParser.kt | 10 ++++-- .../parsers/site/mangareader/ar/Areascans.kt | 12 +------ .../parsers/site/mangareader/ar/BeastScans.kt | 12 +------ .../site/mangareader/ar/Galaxymanga.kt | 12 +------ .../parsers/site/mangareader/ar/MangaProtm.kt | 10 +----- .../site/mangareader/ar/Mangaatrend.kt | 12 +------ .../parsers/site/mangareader/ar/Oxapk.kt | 13 +++----- .../parsers/site/mangareader/ar/Ozulscans.kt | 10 +----- .../parsers/site/mangareader/ar/SwaTeam.kt | 13 +++----- .../site/mangareader/en/AnigliScans.kt | 10 ++---- .../parsers/site/mangareader/en/ArenaScans.kt | 7 ++-- .../site/mangareader/en/AsuraScansParser.kt | 7 ++-- .../parsers/site/mangareader/en/AzureManga.kt | 6 ++-- .../parsers/site/mangareader/en/BabelToon.kt | 11 ++----- .../site/mangareader/en/CosmicScansParser.kt | 7 ++-- .../parsers/site/mangareader/en/Elarcpage.kt | 14 ++------ .../parsers/site/mangareader/en/FlameScans.kt | 9 ++---- .../parsers/site/mangareader/en/FreakScans.kt | 7 ++-- .../parsers/site/mangareader/en/KumaScans.kt | 6 ++-- .../parsers/site/mangareader/en/LunarScan.kt | 9 +----- .../site/mangareader/en/ManhwaLover.kt | 7 ++-- .../parsers/site/mangareader/en/Manhwax.kt | 6 ++-- .../parsers/site/mangareader/en/Nightscans.kt | 6 ++-- .../site/mangareader/en/Phantomscans.kt | 6 ++-- .../parsers/site/mangareader/en/QueenScans.kt | 7 ++-- .../parsers/site/mangareader/en/Ravenscans.kt | 6 ++-- .../parsers/site/mangareader/en/Readkomik.kt | 6 ++-- .../parsers/site/mangareader/en/RealmScans.kt | 9 ++---- .../parsers/site/mangareader/en/SkyManga.kt | 9 ++---- .../parsers/site/mangareader/en/Suryascans.kt | 6 ++-- .../parsers/site/mangareader/en/VoidScans.kt | 7 ++-- .../site/mangareader/es/CartelDeManhwas.kt | 13 ++------ .../site/mangareader/es/GREMORYMANGAS.kt | 11 +------ .../site/mangareader/es/LegionScans.kt | 8 ++--- .../parsers/site/mangareader/es/MiauScan.kt | 12 +------ .../parsers/site/mangareader/es/Raikiscan.kt | 9 ++---- .../site/mangareader/es/Senpaiediciones.kt | 10 ++---- .../site/mangareader/es/Shadowmangas.kt | 10 ++---- .../parsers/site/mangareader/es/SkyMangas.kt | 9 +----- .../parsers/site/mangareader/fr/BananaScan.kt | 10 ++---- .../site/mangareader/fr/EpsilonscanParser.kt | 9 +----- .../site/mangareader/fr/LegacyScansParser.kt | 11 +------ .../parsers/site/mangareader/fr/LelManga.kt | 11 ++----- .../site/mangareader/fr/PhenixscansParser.kt | 10 ++---- .../parsers/site/mangareader/fr/SushiScan.kt | 9 ++---- .../site/mangareader/fr/SushiScanFR.kt | 10 +----- .../parsers/site/mangareader/fr/VfScan.kt | 10 +----- .../parsers/site/mangareader/id/AinzScans.kt | 9 +++--- .../parsers/site/mangareader/id/Boosei.kt | 10 ++---- .../parsers/site/mangareader/id/Dojing.kt | 12 ++----- .../site/mangareader/id/DoujinDesuRip.kt | 10 ++---- .../parsers/site/mangareader/id/Duniakomik.kt | 12 ++----- .../parsers/site/mangareader/id/Kanzenin.kt | 9 +----- .../parsers/site/mangareader/id/Katakomik.kt | 9 +++--- .../site/mangareader/id/KiryuuParser.kt | 11 +------ .../site/mangareader/id/KomikAvParser.kt | 10 +----- .../site/mangareader/id/KomikDewasaParser.kt | 8 ++--- .../site/mangareader/id/KomikIndoParser.kt | 10 ++---- .../site/mangareader/id/KomikLabParser.kt | 8 ++--- .../site/mangareader/id/KomikLokalParser.kt | 9 +++--- .../parsers/site/mangareader/id/KomikMama.kt | 10 ++---- .../site/mangareader/id/KomikMangaParser.kt | 12 +++---- .../site/mangareader/id/KomikManhwa.kt | 13 ++------ .../site/mangareader/id/KomikTapParser.kt | 10 ++---- .../parsers/site/mangareader/id/Komikcast.kt | 32 +++++++++++++++---- .../site/mangareader/id/KomikgoParser.kt | 10 ++---- .../site/mangareader/id/KomiklokalCfd.kt | 9 ++---- .../site/mangareader/id/Komikstation.kt | 10 ++---- .../parsers/site/mangareader/id/Komiku.kt | 10 ++---- .../parsers/site/mangareader/id/Lianscans.kt | 11 ++----- .../site/mangareader/id/MangaSusuku.kt | 12 +++---- .../site/mangareader/id/MangaTaleParser.kt | 9 ++---- .../parsers/site/mangareader/id/Mangaindo.kt | 9 +++--- .../parsers/site/mangareader/id/MangakKita.kt | 9 +++--- .../parsers/site/mangareader/id/Mangayaro.kt | 9 +++--- .../site/mangareader/id/ManhwaIndoIcu.kt | 9 ++---- .../site/mangareader/id/ManhwaIndoParser.kt | 9 ++---- .../site/mangareader/id/ManhwadesuParser.kt | 12 ++----- .../site/mangareader/id/ManhwalistParser.kt | 8 ++--- .../site/mangareader/id/MasterKomik.kt | 10 ++---- .../parsers/site/mangareader/id/Melokomik.kt | 10 ++---- .../parsers/site/mangareader/id/Mirrordesu.kt | 14 ++------ .../parsers/site/mangareader/id/Nonbiri.kt | 9 ++---- .../parsers/site/mangareader/id/Piscans.kt | 9 +++--- .../site/mangareader/id/SekaikomikParser.kt | 9 +----- .../site/mangareader/id/Sektedoujin.kt | 10 ++---- .../parsers/site/mangareader/id/Sheakomik.kt | 10 ++---- .../parsers/site/mangareader/id/SoulScans.kt | 8 ++--- .../site/mangareader/id/Tukangkomik.kt | 8 ++--- .../site/mangareader/id/WestmangaParser.kt | 8 ++--- .../site/mangareader/it/Walpurgiscan.kt | 10 ++---- .../parsers/site/mangareader/ja/MangaMate.kt | 10 ++---- .../parsers/site/mangareader/ja/Rawkuma.kt | 9 +++--- .../site/mangareader/pt/FranxxMangas.kt | 11 ++----- .../parsers/site/mangareader/pt/Mangaschan.kt | 10 ++---- .../site/mangareader/pt/Mundomangakun.kt | 10 ++---- .../site/mangareader/pt/Origamiorpheans.kt | 16 +++++----- .../site/mangareader/pt/Silencescan.kt | 11 ++----- .../parsers/site/mangareader/pt/Tsundoku.kt | 9 ++---- .../parsers/site/mangareader/th/Doujin69.kt | 8 +---- .../parsers/site/mangareader/th/InuManga.kt | 10 +----- .../parsers/site/mangareader/th/LamiManga.kt | 10 +----- .../parsers/site/mangareader/th/MafiaManga.kt | 10 +----- .../parsers/site/mangareader/th/Manga689.kt | 10 +----- .../parsers/site/mangareader/th/MangaMoons.kt | 10 +----- .../parsers/site/mangareader/th/PopsManga.kt | 10 +----- .../parsers/site/mangareader/th/Sodsaime.kt | 10 +----- .../parsers/site/mangareader/th/ThaiManga.kt | 10 +----- .../site/mangareader/th/ToonHunterParser.kt | 8 ++--- .../site/mangareader/tr/AfroditScans.kt | 9 ++---- .../site/mangareader/tr/AsuraTRParser.kt | 9 ++---- .../site/mangareader/tr/AthenaFansub.kt | 10 +----- .../parsers/site/mangareader/tr/Ayatoon.kt | 10 +----- .../site/mangareader/tr/Golgebahcesi.kt | 10 +----- .../parsers/site/mangareader/tr/MajorScans.kt | 10 +----- .../parsers/site/mangareader/tr/Mangacim.kt | 9 ++---- .../parsers/site/mangareader/tr/Mangaokutr.kt | 10 +----- .../parsers/site/mangareader/tr/NyxManga.kt | 10 +----- .../site/mangareader/tr/SpartanManga.kt | 10 +----- .../mangareader/tr/TempestfansubParser.kt | 11 +------ .../site/mangareader/tr/TurktoonParser.kt | 12 +------ 121 files changed, 297 insertions(+), 894 deletions(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt index ab1db903..ac8eb98c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt @@ -8,6 +8,7 @@ import org.jsoup.nodes.Document import org.jsoup.nodes.Element import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.PagedMangaParser +import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaPage @@ -31,22 +32,24 @@ import org.koitharu.kotatsu.parsers.util.urlEncoded import java.text.SimpleDateFormat import java.util.Base64 import java.util.EnumSet -import java.util.Locale internal abstract class MangaReaderParser( context: MangaLoaderContext, source: MangaSource, + domain: String, pageSize: Int, searchPageSize: Int, ) : PagedMangaParser(context, source, pageSize, searchPageSize) { + override val configKeyDomain = ConfigKey.Domain(domain) + override val sortOrders: Set get() = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.ALPHABETICAL, SortOrder.NEWEST) protected open val listUrl = "/manga" protected open val isNsfwSource = false - open val chapterDateFormat = SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH) + protected open val datePattern = "MMMM d, yyyy" private var tagCache: ArrayMap? = null private val mutex = Mutex() @@ -54,6 +57,7 @@ internal abstract class MangaReaderParser( override suspend fun getDetails(manga: Manga): Manga { val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) val chapters = docs.select("#chapterlist > ul > li").mapChapters(reversed = true) { index, element -> val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null MangaChapter( @@ -62,7 +66,7 @@ internal abstract class MangaReaderParser( url = url, number = index + 1, scanlator = null, - uploadDate = chapterDateFormat.tryParse(element.selectFirst(".chapterdate")?.text()), + uploadDate = dateFormat.tryParse(element.selectFirst(".chapterdate")?.text()), branch = null, source = source, ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Areascans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Areascans.kt index ee750f16..b99b9182 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Areascans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Areascans.kt @@ -2,19 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("AREASCANS", "Areascans", "ar") internal class Areascans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.AREASCANS, pageSize = 20, searchPageSize = 10) { - - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("www.areascans.net") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("ar", "AR")) - -} + MangaReaderParser(context, MangaSource.AREASCANS, "www.areascans.net", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/BeastScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/BeastScans.kt index b5427628..b58b9e1a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/BeastScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/BeastScans.kt @@ -2,19 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("BEASTSCANS", "Beast Scans", "ar") internal class BeastScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.BEASTSCANS, pageSize = 20, searchPageSize = 10) { - - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("beast-scans.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("ar", "AR")) - -} + MangaReaderParser(context, MangaSource.BEASTSCANS, "beast-scans.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Galaxymanga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Galaxymanga.kt index 00c08244..5c172e75 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Galaxymanga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Galaxymanga.kt @@ -2,19 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("GALAXYMANGA", "Galaxymanga", "ar") internal class Galaxymanga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.GALAXYMANGA, pageSize = 40, searchPageSize = 30) { - - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("galaxymanga.org") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("ar", "AR")) - -} + MangaReaderParser(context, MangaSource.GALAXYMANGA, "galaxymanga.org", pageSize = 40, searchPageSize = 30) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaProtm.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaProtm.kt index 07c9fd55..1bb01818 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaProtm.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaProtm.kt @@ -2,20 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MANGAPROTM", "MangaProtm", "ar") internal class MangaProtm(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAPROTM, pageSize = 20, searchPageSize = 20) { - - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("mangaprotm.com") + MangaReaderParser(context, MangaSource.MANGAPROTM, "mangaprotm.com", pageSize = 20, searchPageSize = 20) { override val listUrl = "/series" - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("ar", "AR")) - } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Mangaatrend.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Mangaatrend.kt index b8828913..10424b56 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Mangaatrend.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Mangaatrend.kt @@ -2,19 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MANGAATREND", "Mangaatrend", "ar") internal class Mangaatrend(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAATREND, pageSize = 40, searchPageSize = 20) { - - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("mangaatrend.net") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("ar", "AR")) - -} + MangaReaderParser(context, MangaSource.MANGAATREND, "mangaatrend.net", pageSize = 40, searchPageSize = 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Oxapk.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Oxapk.kt index 00f02cd2..8a756a00 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Oxapk.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Oxapk.kt @@ -2,7 +2,6 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaSource @@ -22,15 +21,13 @@ import java.util.Locale @MangaSourceParser("OXAPK", "Oxapk", "ar") internal class Oxapk(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.OXAPK, pageSize = 24, searchPageSize = 10) { + MangaReaderParser(context, MangaSource.OXAPK, "oxapk.com", pageSize = 24, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("oxapk.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("ar", "AR")) + override val sourceLocale: Locale = Locale.ENGLISH override suspend fun getDetails(manga: Manga): Manga { val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) val chapters = docs.select("#chapterlist > ul > li").mapChapters(reversed = true) { index, element -> val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null MangaChapter( @@ -40,7 +37,7 @@ internal class Oxapk(context: MangaLoaderContext) : number = index + 1, scanlator = null, uploadDate = parseChapterDate( - chapterDateFormat, + dateFormat, element.selectFirst("div.chapter-link-time")?.text(), ), branch = null, @@ -50,7 +47,7 @@ internal class Oxapk(context: MangaLoaderContext) : return parseInfo(docs, manga, chapters) } - protected fun parseChapterDate(dateFormat: DateFormat, date: String?): Long { + private fun parseChapterDate(dateFormat: DateFormat, date: String?): Long { date ?: return 0 return when { date.endsWith("منذ ", ignoreCase = true) -> { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Ozulscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Ozulscans.kt index 30d9d4f7..dc70d307 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Ozulscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Ozulscans.kt @@ -2,17 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("OZULSCANS", "Ozulscans", "ar") internal class Ozulscans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.OZULSCANS, pageSize = 30, searchPageSize = 30) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("ozulscans.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("ar", "AR")) -} + MangaReaderParser(context, MangaSource.OZULSCANS, "ozulscans.com", pageSize = 30, searchPageSize = 30) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/SwaTeam.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/SwaTeam.kt index ededbcbe..42ebe277 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/SwaTeam.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/SwaTeam.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaSource @@ -20,20 +19,16 @@ import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl import org.koitharu.kotatsu.parsers.util.toTitleCase import org.koitharu.kotatsu.parsers.util.tryParse import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("SWATEAM", "Swa Team", "ar") internal class SwaTeam(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SWATEAM, pageSize = 42, searchPageSize = 39) { - - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("swatop.club") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("dd-MM-yyyy", Locale("ar", "AR")) + MangaReaderParser(context, MangaSource.SWATEAM, "swatop.club", pageSize = 42, searchPageSize = 39) { + override val datePattern = "dd-MM-yyyy" override suspend fun getDetails(manga: Manga): Manga { val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) val chapters = docs.select("div.bixbox li").mapChapters(reversed = true) { index, element -> val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null MangaChapter( @@ -42,7 +37,7 @@ internal class SwaTeam(context: MangaLoaderContext) : url = url, number = index + 1, scanlator = null, - uploadDate = chapterDateFormat.tryParse(element.selectFirst(".chapterdate")?.text()), + uploadDate = dateFormat.tryParse(element.selectFirst(".chapterdate")?.text()), branch = null, source = source, ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AnigliScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AnigliScans.kt index 61bb8f9f..78bc9aa7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AnigliScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AnigliScans.kt @@ -2,17 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("ANIGLISCANS", "Anigli Scans", "en") internal class AnigliScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ANIGLISCANS, pageSize = 47, searchPageSize = 47) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("anigliscans.com") - - override val listUrl: String - get() = "/series" + MangaReaderParser(context, MangaSource.ANIGLISCANS, "anigliscans.com", pageSize = 47, searchPageSize = 47) { + override val listUrl = "/series" + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ArenaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ArenaScans.kt index d6db4978..faa34268 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ArenaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ArenaScans.kt @@ -2,14 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("ARENASCANS", "Arena Scans", "en") internal class ArenaScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ARENASCANS, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("arenascans.net") + MangaReaderParser(context, MangaSource.ARENASCANS, "arenascans.net", pageSize = 20, searchPageSize = 20) { + + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AsuraScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AsuraScansParser.kt index 1eb5a267..f78e7426 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AsuraScansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AsuraScansParser.kt @@ -2,15 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("ASURASCANS", "Asura Scans", "en") internal class AsuraScansParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ASURASCANS, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("asura.gg") - + MangaReaderParser(context, MangaSource.ASURASCANS, "asura.gg", pageSize = 20, searchPageSize = 10) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AzureManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AzureManga.kt index bd74e70e..9818d351 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AzureManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AzureManga.kt @@ -2,15 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("AZUREMANGA", "Azure Manga", "en") internal class AzureManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.AZUREMANGA, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("azuremanga.com") + MangaReaderParser(context, MangaSource.AZUREMANGA, "azuremanga.com", pageSize = 20, searchPageSize = 10) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BabelToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BabelToon.kt index 70f14dc9..2d8a32fa 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BabelToon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BabelToon.kt @@ -2,7 +2,6 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaPage @@ -16,21 +15,17 @@ import org.koitharu.kotatsu.parsers.util.parseHtml import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl import org.koitharu.kotatsu.parsers.util.tryParse import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("BABELTOON", "BabelToon", "en") internal class BabelToon(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.BABELTOON, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("babeltoon.com") + MangaReaderParser(context, MangaSource.BABELTOON, "babeltoon.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" override val selectMangaliste = ".postbody .listupd .maindet .inmain" - override val chapterDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH) - override suspend fun getDetails(manga: Manga): Manga { val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) val chapters = docs.select(".eplister > ul > li").mapChapters(reversed = true) { index, element -> val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null MangaChapter( @@ -39,7 +34,7 @@ internal class BabelToon(context: MangaLoaderContext) : url = url, number = index + 1, scanlator = null, - uploadDate = chapterDateFormat.tryParse(element.selectFirst(".epl-date")?.text()), + uploadDate = dateFormat.tryParse(element.selectFirst(".epl-date")?.text()), branch = null, source = source, ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt index 739028ce..ef25218f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt @@ -2,14 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("COSMICSCANS", "CosmicScans", "en") internal class CosmicScansParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.COSMICSCANS, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("cosmicscans.com") + MangaReaderParser(context, MangaSource.COSMICSCANS, "cosmicscans.com", pageSize = 20, searchPageSize = 10) { + + override val datePattern = "MMM d, yyyy" } 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 e4b89fec..8dac60b4 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 @@ -2,21 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("ELARCPAGE", "Elarcpage", "en") internal class Elarcpage(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ELARCPAGE, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("elarcpage.com") + MangaReaderParser(context, MangaSource.ELARCPAGE, "elarcpage.com", pageSize = 20, searchPageSize = 10) { - override val listUrl: String - get() = "/series" - - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale.ENGLISH) + override val listUrl = "/series" + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FlameScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FlameScans.kt index c56aaae5..f8130814 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FlameScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FlameScans.kt @@ -2,16 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("FLAMESCANS", "Flame Scans", "en") internal class FlameScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.FLAMESCANS, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("flamescans.org") + MangaReaderParser(context, MangaSource.FLAMESCANS, "flamescans.org", pageSize = 20, searchPageSize = 20) { - override val listUrl: String - get() = "/series" + override val listUrl = "/series" + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakScans.kt index e0305869..ef31b0f5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakScans.kt @@ -2,14 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("FREAKSCANS", "FreakScans", "en") internal class FreakScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.FREAKSCANS, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("freakscans.com") + MangaReaderParser(context, MangaSource.FREAKSCANS, "freakscans.com", pageSize = 20, searchPageSize = 20) { + + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KumaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KumaScans.kt index b836b9fe..4056cf9d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KumaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KumaScans.kt @@ -2,15 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("KUMASCANS", "Kuma Scans", "en") internal class KumaScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KUMASCANS, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("kumascans.com") + MangaReaderParser(context, MangaSource.KUMASCANS, "kumascans.com", pageSize = 20, searchPageSize = 20) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LunarScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LunarScan.kt index fb6cf746..afa05ab7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LunarScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LunarScan.kt @@ -2,22 +2,15 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("LUNAR_SCAN", "Lunar Scan", "en") internal class LunarScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.LUNAR_SCAN, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("lunarscan.org") + MangaReaderParser(context, MangaSource.LUNAR_SCAN, "lunarscan.org", pageSize = 20, searchPageSize = 20) { override val listUrl = "/series" - override val isNsfwSource: Boolean = true - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.ENGLISH) } 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 2102fb0c..ea1f820e 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 @@ -2,16 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANHWALOVER", "ManhwaLover", "en") internal class ManhwaLover(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWALOVER, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("manhwalover.com") + MangaReaderParser(context, MangaSource.MANHWALOVER, "manhwalover.com", pageSize = 20, searchPageSize = 20) { override val isNsfwSource: Boolean = true - + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manhwax.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manhwax.kt index 839b0129..c2295915 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manhwax.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manhwax.kt @@ -2,15 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANHWAX", "Manhwax", "en") internal class Manhwax(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWAX, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("manhwax.org") + MangaReaderParser(context, MangaSource.MANHWAX, "manhwax.org", pageSize = 20, searchPageSize = 20) { override val isNsfwSource: Boolean = true + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt index 8a2c769a..2d52b26e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt @@ -2,14 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("NIGHTSCANS", "Nightscans", "en") internal class Nightscans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.NIGHTSCANS, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("nightscans.org") + MangaReaderParser(context, MangaSource.NIGHTSCANS, "nightscans.org", pageSize = 20, searchPageSize = 20) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Phantomscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Phantomscans.kt index 3960e035..b5d680db 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Phantomscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Phantomscans.kt @@ -2,14 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("PHANTOMSCANS", "Phantomscans", "en") internal class Phantomscans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.PHANTOMSCANS, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("phantomscans.com") + MangaReaderParser(context, MangaSource.PHANTOMSCANS, "phantomscans.com", pageSize = 20, searchPageSize = 20) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/QueenScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/QueenScans.kt index 95b9fec2..1a2d2554 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/QueenScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/QueenScans.kt @@ -2,16 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("QUEENSCANS", "QueenScans", "en") internal class QueenScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.QUEENSCANS, pageSize = 30, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("queenscans.com") + MangaReaderParser(context, MangaSource.QUEENSCANS, "queenscans.com", pageSize = 30, searchPageSize = 10) { override val listUrl = "/comics" - + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Ravenscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Ravenscans.kt index b92e0954..fb849d0b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Ravenscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Ravenscans.kt @@ -2,14 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("RAVENSCANS", "Ravenscans", "en") internal class Ravenscans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.RAVENSCANS, pageSize = 10, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("ravenscans.com") + MangaReaderParser(context, MangaSource.RAVENSCANS, "ravenscans.com", pageSize = 10, searchPageSize = 10) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Readkomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Readkomik.kt index 1414d42c..807b5d0e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Readkomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Readkomik.kt @@ -2,16 +2,14 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("READKOMIK", "Readkomik", "en") internal class Readkomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.READKOMIK, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("readkomik.com") + MangaReaderParser(context, MangaSource.READKOMIK, "readkomik.com", pageSize = 20, searchPageSize = 20) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RealmScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RealmScans.kt index 4dfa880d..cc355e83 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RealmScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RealmScans.kt @@ -2,19 +2,14 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("REALMSCANS", "RealmScans", "en") internal class RealmScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.REALMSCANS, pageSize = 30, searchPageSize = 50) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("realmscans.xyz") + MangaReaderParser(context, MangaSource.REALMSCANS, "realmscans.xyz", pageSize = 30, searchPageSize = 50) { override val listUrl = "/series" - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH) + override val datePattern = "dd MMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SkyManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SkyManga.kt index 2b2a5561..88b66cbf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SkyManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SkyManga.kt @@ -2,19 +2,14 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("SKY_MANGA", "Sky Manga", "en") internal class SkyManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SKY_MANGA, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("skymanga.work") + MangaReaderParser(context, MangaSource.SKY_MANGA, "skymanga.work", pageSize = 20, searchPageSize = 20) { override val listUrl = "/manga-list" - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("DD-MM-yyy", Locale.ENGLISH) + override val datePattern = "DD-MM-yyy" } 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 7751ab97..c06ad2e7 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 @@ -2,14 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SURYASCANS", "Suryascans", "en") internal class Suryascans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SURYASCANS, pageSize = 5, searchPageSize = 5) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("suryascans.com") + MangaReaderParser(context, MangaSource.SURYASCANS, "suryascans.com", pageSize = 5, searchPageSize = 5) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/VoidScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/VoidScans.kt index 1930b447..c946c289 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/VoidScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/VoidScans.kt @@ -2,13 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("VOIDSCANS", "Void Scans", "en") internal class VoidScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.VOIDSCANS, pageSize = 150, searchPageSize = 150) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("void-scans.com") + MangaReaderParser(context, MangaSource.VOIDSCANS, "void-scans.com", pageSize = 150, searchPageSize = 150) { + + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/CartelDeManhwas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/CartelDeManhwas.kt index db1866dc..96b6438d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/CartelDeManhwas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/CartelDeManhwas.kt @@ -2,20 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("CARTELDEMANHWAS", "Cartel De Manhwas", "es") internal class CartelDeManhwas(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.CARTELDEMANHWAS, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("carteldemanhwas.com") + MangaReaderParser(context, MangaSource.CARTELDEMANHWAS, "carteldemanhwas.com", pageSize = 20, searchPageSize = 20) { - override val listUrl: String - get() = "/series" - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("es", "ES")) + override val listUrl = "/series" + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/GREMORYMANGAS.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/GREMORYMANGAS.kt index aed5b8e8..a119cf52 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/GREMORYMANGAS.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/GREMORYMANGAS.kt @@ -2,18 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("GREMORYMANGAS", "Gremory Mangas", "es") internal class GREMORYMANGAS(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.GREMORYMANGAS, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("gremorymangas.com") - - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("es", "ES")) -} + MangaReaderParser(context, MangaSource.GREMORYMANGAS, "gremorymangas.com", pageSize = 20, searchPageSize = 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LegionScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LegionScans.kt index 40fc0c93..e21dc059 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LegionScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LegionScans.kt @@ -2,16 +2,16 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("LEGIONSCANS", "Legion Scans", "es") internal class LegionScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.LEGIONSCANS, pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaSource.LEGIONSCANS, "legionscans.com", pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("legionscans.com") + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MiauScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MiauScan.kt index 713def6f..c77bb9d1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MiauScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MiauScan.kt @@ -2,19 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MIAUSCAN", "Miau Scan", "es") internal class MiauScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MIAUSCAN, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("miauscan.com") - - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("es", "ES")) - -} + MangaReaderParser(context, MangaSource.MIAUSCAN, "miauscan.com", pageSize = 20, searchPageSize = 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Raikiscan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Raikiscan.kt index ff047c02..ff6ac591 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Raikiscan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Raikiscan.kt @@ -2,17 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("RAIKISCAN", "Raikiscan", "es") internal class Raikiscan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.RAIKISCAN, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("raikiscan.com") + MangaReaderParser(context, MangaSource.RAIKISCAN, "raikiscan.com", pageSize = 20, searchPageSize = 20) { - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("es", "ES")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Senpaiediciones.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Senpaiediciones.kt index 291d4302..bf8cc7e1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Senpaiediciones.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Senpaiediciones.kt @@ -2,18 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("SENPAIEDICIONES", "Senpaiediciones", "es") internal class Senpaiediciones(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SENPAIEDICIONES, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("senpaiediciones.com") + MangaReaderParser(context, MangaSource.SENPAIEDICIONES, "senpaiediciones.com", pageSize = 20, searchPageSize = 20) { - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("es", "ES")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Shadowmangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Shadowmangas.kt index 27fd37c8..239bba88 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Shadowmangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Shadowmangas.kt @@ -2,18 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("SHADOWMANGAS", "Shadowmangas", "es") internal class Shadowmangas(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SHADOWMANGAS, pageSize = 10, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("shadowmangas.com") + MangaReaderParser(context, MangaSource.SHADOWMANGAS, "shadowmangas.com", pageSize = 10, searchPageSize = 10) { - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("es", "ES")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/SkyMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/SkyMangas.kt index c4f911a2..0a2f5ca3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/SkyMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/SkyMangas.kt @@ -2,19 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("SKYMANGAS", "Sky Mangas", "es") internal class SkyMangas(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SKYMANGAS, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("skymangas.com") + MangaReaderParser(context, MangaSource.SKYMANGAS, "skymangas.com", pageSize = 20, searchPageSize = 10) { - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("es", "ES")) override val encodedSrc = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/BananaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/BananaScan.kt index 95c156cd..a8297159 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/BananaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/BananaScan.kt @@ -2,18 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("BANANASCAN", "Banana Scan", "fr") internal class BananaScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.BANANASCAN, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("banana-scan.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale.FRENCH) + MangaReaderParser(context, MangaSource.BANANASCAN, "banana-scan.com", pageSize = 20, searchPageSize = 20) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EpsilonscanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EpsilonscanParser.kt index 60265022..2a6da9c6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EpsilonscanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EpsilonscanParser.kt @@ -2,19 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("EPSILONSCAN", "Epsilonscan", "fr") internal class EpsilonscanParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.EPSILONSCAN, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("epsilonscan.fr") + MangaReaderParser(context, MangaSource.EPSILONSCAN, "epsilonscan.fr", pageSize = 20, searchPageSize = 10) { override val isNsfwSource: Boolean = true - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.FRENCH) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LegacyScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LegacyScansParser.kt index fd34dd74..38fe6b33 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LegacyScansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LegacyScansParser.kt @@ -2,18 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("LEGACY_SCANS", "Legacy Scans", "fr") internal class LegacyScansParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.LEGACY_SCANS, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("legacy-scans.com") - - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.FRENCH) -} + MangaReaderParser(context, MangaSource.LEGACY_SCANS, "legacy-scans.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LelManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LelManga.kt index fdc87e8c..2ae2392e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LelManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LelManga.kt @@ -3,7 +3,6 @@ package org.koitharu.kotatsu.parsers.site.mangareader.fr import org.jsoup.nodes.Element import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.parsers.model.MangaSource @@ -16,16 +15,10 @@ import org.koitharu.kotatsu.parsers.util.requireElementById import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl import org.koitharu.kotatsu.parsers.util.toRelativeUrl -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("LELMANGA", "LelManga", "fr") internal class LelManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.LELMANGA, pageSize = 21, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("www.lelmanga.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH) + MangaReaderParser(context, MangaSource.LELMANGA, "www.lelmanga.com", pageSize = 21, searchPageSize = 20) { override suspend fun getPages(chapter: MangaChapter): List { val fullUrl = chapter.url.toAbsoluteUrl(domain) @@ -42,7 +35,7 @@ internal class LelManga(context: MangaLoaderContext) : } } - protected fun Element.src(): String? { + private fun Element.src(): String? { var result = absUrl("data-src") if (result.isEmpty()) result = absUrl("data-cfsrc") if (result.isEmpty()) result = absUrl("src") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PhenixscansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PhenixscansParser.kt index 5858812c..fb8ece3b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PhenixscansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PhenixscansParser.kt @@ -2,18 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("PHENIXSCANS", "Phenixscans", "fr") internal class PhenixscansParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.PHENIXSCANS, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("phenixscans.fr") + MangaReaderParser(context, MangaSource.PHENIXSCANS, "phenixscans.fr", pageSize = 20, searchPageSize = 10) { - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale.FRENCH) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScan.kt index ab3f2fff..0dace0e2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScan.kt @@ -2,18 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("SUSHISCAN", "SushiScan", "fr") internal class SushiScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SUSHISCAN, pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaSource.SUSHISCAN, "sushiscan.net", pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("sushiscan.net") override val listUrl = "/catalogue" - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale.FRENCH) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScanFR.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScanFR.kt index 2a6675a3..13ba36a9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScanFR.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScanFR.kt @@ -2,17 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("SUSHISCANFR", "Sushi Scan FR", "fr") internal class SushiScanFR(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SUSHISCANFR, pageSize = 36, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("sushiscan.fr") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.FRENCH) -} + MangaReaderParser(context, MangaSource.SUSHISCANFR, "sushiscan.fr", pageSize = 36, 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 371054ff..e82e8b27 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 @@ -2,17 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("VFSCAN", "Vf Scan", "fr") internal class VfScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.VFSCAN, pageSize = 18, searchPageSize = 18) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("www.vfscan.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.FRENCH) -} + MangaReaderParser(context, MangaSource.VFSCAN, "www.vfscan.com", pageSize = 18, searchPageSize = 18) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AinzScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AinzScans.kt index 3eccc8dd..2f30e262 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AinzScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AinzScans.kt @@ -2,16 +2,17 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("AINZSCANS", "Ainz Scans", "id") internal class AinzScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.AINZSCANS, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("ainzscans.site") + MangaReaderParser(context, MangaSource.AINZSCANS, "ainzscans.site", pageSize = 20, searchPageSize = 10) { + override val listUrl = "/series" + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Boosei.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Boosei.kt index ef6c864a..703dbc32 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Boosei.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Boosei.kt @@ -2,18 +2,12 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("BOOSEI", "Boosei", "id") internal class Boosei(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.BOOSEI, pageSize = 30, searchPageSize = 30) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("boosei.net") + MangaReaderParser(context, MangaSource.BOOSEI, "boosei.net", pageSize = 30, searchPageSize = 30) { - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Dojing.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Dojing.kt index ecda0b23..65107bc1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Dojing.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Dojing.kt @@ -2,21 +2,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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("DOJING", "Dojing", "id") internal class Dojing(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.DOJING, pageSize = 12, searchPageSize = 12) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("dojing.net") - + MangaReaderParser(context, MangaSource.DOJING, "dojing.net", pageSize = 12, searchPageSize = 12) { override val isNsfwSource = true - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) - + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinDesuRip.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinDesuRip.kt index 646591cc..87e697c5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinDesuRip.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinDesuRip.kt @@ -2,19 +2,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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("DOUJINDESURIP", "Doujin Desu Rip", "id") internal class DoujinDesuRip(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.DOUJINDESURIP, pageSize = 10, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("doujindesu.rip") + MangaReaderParser(context, MangaSource.DOUJINDESURIP, "doujindesu.rip", pageSize = 10, searchPageSize = 10) { override val isNsfwSource = true - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) - + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Duniakomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Duniakomik.kt index f67b1b06..fafb5b96 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Duniakomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Duniakomik.kt @@ -2,21 +2,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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("DUNIAKOMIK", "Duniakomik", "id") internal class Duniakomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.DUNIAKOMIK, pageSize = 12, searchPageSize = 12) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("duniakomik.id") - + MangaReaderParser(context, MangaSource.DUNIAKOMIK, "duniakomik.id", pageSize = 12, searchPageSize = 12) { override val isNsfwSource = true - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) - + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kanzenin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kanzenin.kt index 25065275..542569a9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kanzenin.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kanzenin.kt @@ -2,20 +2,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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("KANZENIN", "Kanzenin", "id") internal class Kanzenin(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KANZENIN, pageSize = 25, searchPageSize = 25) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("kanzenin.xyz") + MangaReaderParser(context, MangaSource.KANZENIN, "kanzenin.xyz", pageSize = 25, searchPageSize = 25) { override val isNsfwSource = true - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("in", "ID")) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Katakomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Katakomik.kt index 35fc03fc..26a215db 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Katakomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Katakomik.kt @@ -2,14 +2,15 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("KATAKOMIK", "Katakomik", "id") internal class Katakomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KATAKOMIK, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("katakomik.online") + MangaReaderParser(context, MangaSource.KATAKOMIK, "katakomik.online", pageSize = 20, searchPageSize = 20) { + + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KiryuuParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KiryuuParser.kt index ed4e06cb..572cc730 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KiryuuParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KiryuuParser.kt @@ -2,18 +2,9 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("KIRYUU", "Kiryuu", "id") internal class KiryuuParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KIRYUU, pageSize = 30, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("kiryuu.id") - - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("in", "ID")) -} + MangaReaderParser(context, MangaSource.KIRYUU, "kiryuu.id", pageSize = 30, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikAvParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikAvParser.kt index 94a39f98..859df425 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikAvParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikAvParser.kt @@ -2,17 +2,9 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("KOMIKAV", "Komik Av", "id") internal class KomikAvParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKAV, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("komikav.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("in", "ID")) -} + MangaReaderParser(context, MangaSource.KOMIKAV, "komikav.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikDewasaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikDewasaParser.kt index 76ae4fd1..319896a2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikDewasaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikDewasaParser.kt @@ -2,16 +2,16 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("KOMIKDEWASA", "KomikDewasa", "id") internal class KomikDewasaParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKDEWASA, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("komikdewasa.cfd") + MangaReaderParser(context, MangaSource.KOMIKDEWASA, "komikdewasa.cfd", pageSize = 20, searchPageSize = 20) { override val listUrl: String = "/komik" override val isNsfwSource: Boolean = true + override val datePattern = "MMM d, yyyy" + 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 41b89ab0..a95cac69 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 @@ -2,18 +2,12 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("KOMIKINDO", "KomikIndo", "id") internal class KomikIndoParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKINDO, pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaSource.KOMIKINDO, "komikindo.co", pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("komikindo.co") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLabParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLabParser.kt index 92e721d5..7ca6eb08 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLabParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLabParser.kt @@ -2,15 +2,15 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("KOMIKLAB", "KomikLab", "id") internal class KomikLabParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKLAB, pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaSource.KOMIKLAB, "komiklab.com", pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("komiklab.com") + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLokalParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLokalParser.kt index 08e152da..0be2806a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLokalParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLokalParser.kt @@ -2,14 +2,15 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("KOMIKLOKAL", "Komik Lokal", "id") internal class KomikLokalParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKLOKAL, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("komikmirror.art") + MangaReaderParser(context, MangaSource.KOMIKLOKAL, "komikmirror.art", pageSize = 20, searchPageSize = 10) { + + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikMama.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikMama.kt index ca5e1685..86521a19 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikMama.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikMama.kt @@ -2,19 +2,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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("KOMIKMAMA", "Komik Mama", "id") internal class KomikMama(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKMAMA, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("komikmama.co") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + MangaReaderParser(context, MangaSource.KOMIKMAMA, "komikmama.co", pageSize = 20, searchPageSize = 20) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikMangaParser.kt index a2859536..81da9185 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikMangaParser.kt @@ -2,17 +2,17 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("KOMIKMANGA", "KomikManga", "id") internal class KomikMangaParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKMANGA, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("komikhentai.co") + MangaReaderParser(context, MangaSource.KOMIKMANGA, "komikhentai.co", pageSize = 20, searchPageSize = 10) { - override val listUrl: String - get() = "/project" + override val listUrl = "/project" + + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikManhwa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikManhwa.kt index 056d38fb..5671a3d5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikManhwa.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikManhwa.kt @@ -2,23 +2,16 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("KOMIKMANHWA", "Komik Manhwa", "id") internal class KomikManhwa(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKMANHWA, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("komikmanhwa.me") + MangaReaderParser(context, MangaSource.KOMIKMANHWA, "komikmanhwa.me", pageSize = 20, searchPageSize = 20) { - override val listUrl: String - get() = "/series" + override val listUrl = "/series" override val isNsfwSource = true - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikTapParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikTapParser.kt index 664ff2a3..560332fd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikTapParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikTapParser.kt @@ -2,18 +2,12 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("KOMIKTAP", "KomikTap", "id") internal class KomikTapParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKTAP, pageSize = 25, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("92.87.6.124", "komiktap.in") + MangaReaderParser(context, MangaSource.KOMIKTAP, "komiktap.in", pageSize = 25, searchPageSize = 10) { - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt index 7418c703..839e9e5f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt @@ -4,23 +4,41 @@ import org.json.JSONObject import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN +import org.koitharu.kotatsu.parsers.model.WordSet import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import org.koitharu.kotatsu.parsers.util.* +import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.mapNotNullToSet +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.tryParse import java.text.DateFormat +import java.text.SimpleDateFormat import java.util.Calendar +import java.util.Locale @MangaSourceParser("KOMIKCAST", "Komikcast", "id") internal class Komikcast(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKCAST, pageSize = 60, searchPageSize = 28) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("komikcast.io") + MangaReaderParser(context, MangaSource.KOMIKCAST, "komikcast.io", pageSize = 60, searchPageSize = 28) { + override val listUrl = "/daftar-komik" + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH override suspend fun getDetails(manga: Manga): Manga { val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) val chapters = docs.select("#chapter-wrapper > li").mapChapters(reversed = true) { index, element -> val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null MangaChapter( @@ -30,7 +48,7 @@ internal class Komikcast(context: MangaLoaderContext) : number = index + 1, scanlator = null, uploadDate = parseChapterDate( - chapterDateFormat, + dateFormat, element.selectFirst("div.chapter-link-time")?.text(), ), branch = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikgoParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikgoParser.kt index 98bb1cc2..d792e3b9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikgoParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikgoParser.kt @@ -2,18 +2,12 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("KOMIKGO", "Komikgo", "id") internal class KomikgoParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKGO, pageSize = 20, searchPageSize = 10) { - - override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("komikgo.org") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + MangaReaderParser(context, MangaSource.KOMIKGO, "komikgo.org", pageSize = 20, searchPageSize = 10) { + override val datePattern = "MMM d, yyyy" } 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 d5a237a1..564bddf3 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 @@ -2,19 +2,14 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat import java.util.Locale @MangaSourceParser("KOMIKLOKALCFD", "Komiklokal Cfd", "id") internal class KomiklokalCfd(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKLOKALCFD, pageSize = 30, searchPageSize = 10) { - - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("komiklokal.cfd") + MangaReaderParser(context, MangaSource.KOMIKLOKALCFD, "komiklokal.cfd", pageSize = 30, searchPageSize = 10) { override val isNsfwSource = true - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH) + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikstation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikstation.kt index 2ef238ef..1186f804 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikstation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikstation.kt @@ -2,19 +2,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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("KOMIKSTATION", "Komikstation", "id") internal class Komikstation(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKSTATION, pageSize = 30, searchPageSize = 30) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("komikstation.co") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + MangaReaderParser(context, MangaSource.KOMIKSTATION, "komikstation.co", pageSize = 30, searchPageSize = 30) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komiku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komiku.kt index 492792fd..4ada0583 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komiku.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komiku.kt @@ -2,18 +2,12 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("KOMIKU", "Komiku", "id") internal class Komiku(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKU, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("komiku.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + MangaReaderParser(context, MangaSource.KOMIKU, "komiku.com", pageSize = 20, searchPageSize = 20) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Lianscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Lianscans.kt index 0f470a6c..63a239c4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Lianscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Lianscans.kt @@ -2,20 +2,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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("LIANSCANS", "Lianscans", "id") internal class Lianscans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.LIANSCANS, pageSize = 10, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("www.lianscans.my.id") + MangaReaderParser(context, MangaSource.LIANSCANS, "www.lianscans.my.id", pageSize = 10, searchPageSize = 10) { override val isNsfwSource = true - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) - + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaSusuku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaSusuku.kt index 885ecaed..617e3c50 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaSusuku.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaSusuku.kt @@ -2,18 +2,16 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("MANGASUSUKU", "MangaSusuku", "id") internal class MangaSusuku(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGASUSUKU, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("mangasusuku.xyz") - - override val listUrl: String - get() = "/komik" + MangaReaderParser(context, MangaSource.MANGASUSUKU, "mangasusuku.xyz", pageSize = 20, searchPageSize = 20) { + override val listUrl = "/komik" + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH override val isNsfwSource = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaTaleParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaTaleParser.kt index 108806a0..67c21020 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaTaleParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaTaleParser.kt @@ -2,18 +2,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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat import java.util.Locale @MangaSourceParser("MANGATALE", "MangaTale", "id") internal class MangaTaleParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGATALE, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("mangatale.co") + MangaReaderParser(context, MangaSource.MANGATALE, "mangatale.co", pageSize = 20, searchPageSize = 10) { - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH) + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangaindo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangaindo.kt index 15781f37..3688a7bd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangaindo.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangaindo.kt @@ -2,16 +2,15 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("MANGAINDO", "Mangaindo", "id") internal class Mangaindo(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAINDO, pageSize = 26, searchPageSize = 26) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("mangaindo.me") - + MangaReaderParser(context, MangaSource.MANGAINDO, "mangaindo.me", pageSize = 26, searchPageSize = 26) { + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangakKita.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangakKita.kt index 13a89b4c..7997987e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangakKita.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangakKita.kt @@ -2,14 +2,15 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("MANGAKITA", "MangaKita", "id") internal class MangakKita(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAKITA, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("mangakita.net") + MangaReaderParser(context, MangaSource.MANGAKITA, "mangakita.net", pageSize = 20, searchPageSize = 20) { + + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangayaro.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangayaro.kt index 0ca8ef13..ed8e58a7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangayaro.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangayaro.kt @@ -2,16 +2,15 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("MANGAYARO", "Mangayaro", "id") internal class Mangayaro(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAYARO, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("mangayaro.net") - + MangaReaderParser(context, MangaSource.MANGAYARO, "mangayaro.net", pageSize = 20, searchPageSize = 20) { + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt index 41213148..2a5ec5b8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt @@ -2,19 +2,14 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat import java.util.Locale @MangaSourceParser("MANHWAINDOICU", "Manhwa Indo Icu", "id") internal class ManhwaIndoIcu(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWAINDOICU, pageSize = 30, searchPageSize = 10) { - - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("manhwaindo.icu") + MangaReaderParser(context, MangaSource.MANHWAINDOICU, "manhwaindo.icu", pageSize = 30, searchPageSize = 10) { override val isNsfwSource = true - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH) + 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 6b414aed..d9b87b3b 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 @@ -2,18 +2,15 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat import java.util.Locale @MangaSourceParser("MANHWAINDO", "Manhwaindo", "id") internal class ManhwaIndoParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWAINDO, pageSize = 30, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("manhwaindo.id") + MangaReaderParser(context, MangaSource.MANHWAINDO, "manhwaindo.id", pageSize = 30, searchPageSize = 10) { - override val chapterDateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.ENGLISH) + override val datePattern = "MMMM dd, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH override val listUrl: String get() = "/series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwadesuParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwadesuParser.kt index be5ed586..51e60de8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwadesuParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwadesuParser.kt @@ -2,19 +2,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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MANHWADESU", "ManhwaDesu", "id") internal class ManhwadesuParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWADESU, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("manhwadesu.pro", "manhwadesu.org") + MangaReaderParser(context, MangaSource.MANHWADESU, "manhwadesu.top", pageSize = 20, searchPageSize = 10) { - override val listUrl: String get() = "/komik" - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM D, yyyy", Locale("in", "ID")) + override val listUrl = "/komik" + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwalistParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwalistParser.kt index 3fec2e6f..f1dd44eb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwalistParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwalistParser.kt @@ -2,17 +2,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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat import java.util.Locale @MangaSourceParser("MANHWALIST", "Manhwalist", "id") internal class ManhwalistParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWALIST, pageSize = 24, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("manhwalist.xyz") + MangaReaderParser(context, MangaSource.MANHWALIST, "manhwalist.xyz", pageSize = 24, searchPageSize = 10) { - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH) + override val sourceLocale: Locale = Locale.ENGLISH } 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 633f435e..b546c6a0 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 @@ -2,19 +2,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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MASTERKOMIK", "MasterKomik", "id") internal class MasterKomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MASTERKOMIK, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("masterkomik.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + MangaReaderParser(context, MangaSource.MASTERKOMIK, "masterkomik.com", pageSize = 20, searchPageSize = 20) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Melokomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Melokomik.kt index bfc9d3c2..04d98389 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Melokomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Melokomik.kt @@ -2,19 +2,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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MELOKOMIK", "Melokomik", "id") internal class Melokomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MELOKOMIK, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("melokomik.xyz") + MangaReaderParser(context, MangaSource.MELOKOMIK, "melokomik.xyz", pageSize = 20, searchPageSize = 20) { - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mirrordesu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mirrordesu.kt index f23b84a7..a41892b4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mirrordesu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mirrordesu.kt @@ -2,23 +2,15 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MIRRORDESU", "Mirrordesu", "id") internal class Mirrordesu(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MIRRORDESU, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("mirrordesu.ink") - - override val listUrl: String - get() = "/komik" + MangaReaderParser(context, MangaSource.MIRRORDESU, "mirrordesu.ink", pageSize = 20, searchPageSize = 20) { + override val listUrl = "/komik" override val isNsfwSource = true - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Nonbiri.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Nonbiri.kt index 0936db89..10bd3b01 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Nonbiri.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Nonbiri.kt @@ -2,17 +2,12 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("NONBIRI", "Nonbiri", "id") internal class Nonbiri(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.NONBIRI, pageSize = 15, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("nonbiri.space") + MangaReaderParser(context, MangaSource.NONBIRI, "nonbiri.space", pageSize = 15, searchPageSize = 10) { - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Piscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Piscans.kt index d2daa1ed..e887294c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Piscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Piscans.kt @@ -2,16 +2,15 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("PISCANS", "Piscans", "id") internal class Piscans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.PISCANS, pageSize = 24, searchPageSize = 24) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("piscans.in") - + MangaReaderParser(context, MangaSource.PISCANS, "piscans.in", pageSize = 24, searchPageSize = 24) { + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SekaikomikParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SekaikomikParser.kt index 152659d7..44c78069 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SekaikomikParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SekaikomikParser.kt @@ -2,16 +2,9 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("SEKAIKOMIK", "Sekaikomik", "id") internal class SekaikomikParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SEKAIKOMIK, pageSize = 20, searchPageSize = 100) { - override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("sekaikomik.pro") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM D, yyyy", Locale("in", "ID")) -} + MangaReaderParser(context, MangaSource.SEKAIKOMIK, "sekaikomik.pro", pageSize = 20, searchPageSize = 100) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sektedoujin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sektedoujin.kt index eb071a55..cdf12173 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sektedoujin.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sektedoujin.kt @@ -2,20 +2,14 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("SEKTEDOUJIN", "Sektedoujin", "id") internal class Sektedoujin(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SEKTEDOUJIN, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("sektedoujin.cc") + MangaReaderParser(context, MangaSource.SEKTEDOUJIN, "sektedoujin.cc", pageSize = 20, searchPageSize = 20) { override val isNsfwSource = true - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sheakomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sheakomik.kt index 32211c8f..7a33bdca 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sheakomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sheakomik.kt @@ -2,18 +2,12 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("SHEAKOMIK", "Sheakomik", "id") internal class Sheakomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SHEAKOMIK, pageSize = 40, searchPageSize = 40) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("sheakomik.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("in", "ID")) + MangaReaderParser(context, MangaSource.SHEAKOMIK, "sheakomik.com", pageSize = 40, searchPageSize = 40) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SoulScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SoulScans.kt index f31d10cd..93af7eeb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SoulScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SoulScans.kt @@ -2,15 +2,15 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("SOULSCANS", "Soul Scans", "id") internal class SoulScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SOULSCANS, pageSize = 30, searchPageSize = 30) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("soulscans.my.id") + MangaReaderParser(context, MangaSource.SOULSCANS, "soulscans.my.id", pageSize = 30, searchPageSize = 30) { + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Tukangkomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Tukangkomik.kt index 1903b623..cce4a040 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Tukangkomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Tukangkomik.kt @@ -2,15 +2,15 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("TUKANGKOMIK", "Tukangkomik", "id") internal class Tukangkomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TUKANGKOMIK, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("tukangkomik.id") + MangaReaderParser(context, MangaSource.TUKANGKOMIK, "tukangkomik.id", pageSize = 20, searchPageSize = 20) { + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/WestmangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/WestmangaParser.kt index 5ac30d4b..574bda9e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/WestmangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/WestmangaParser.kt @@ -2,17 +2,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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat import java.util.Locale @MangaSourceParser("WESTMANGA", "Westmanga", "id") internal class WestmangaParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.WESTMANGA, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("westmanga.info") + MangaReaderParser(context, MangaSource.WESTMANGA, "westmanga.info", pageSize = 20, searchPageSize = 10) { - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH) + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/it/Walpurgiscan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/it/Walpurgiscan.kt index 2d123ef2..bfe4650d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/it/Walpurgiscan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/it/Walpurgiscan.kt @@ -2,18 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.it import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("WALPURGISCAN", "Walpurgiscan", "it") internal class Walpurgiscan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.WALPURGISCAN, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("walpurgiscan.it") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("it", "IT")) + MangaReaderParser(context, MangaSource.WALPURGISCAN, "walpurgiscan.it", pageSize = 20, searchPageSize = 20) { + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaMate.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaMate.kt index 03422c3e..14f5b19f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaMate.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaMate.kt @@ -2,20 +2,16 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ja import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat import java.util.Locale @MangaSourceParser("MANGAMATE", "Manga Mate", "ja") internal class MangaMate(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAMATE, pageSize = 10, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("manga-mate.org") + MangaReaderParser(context, MangaSource.MANGAMATE, "manga-mate.org", pageSize = 10, searchPageSize = 10) { - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("M月 d, yyyy", Locale.ENGLISH) + override val datePattern = "M月 d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH override val encodedSrc = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/Rawkuma.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/Rawkuma.kt index 5aa7bb0c..13547c92 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/Rawkuma.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/Rawkuma.kt @@ -2,14 +2,15 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ja import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.Locale @MangaSourceParser("RAWKUMA", "Rawkuma", "ja") internal class Rawkuma(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.RAWKUMA, pageSize = 54, searchPageSize = 54) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("rawkuma.com") + MangaReaderParser(context, MangaSource.RAWKUMA, "rawkuma.com", pageSize = 54, searchPageSize = 54) { + + override val datePattern = "MMM d, yyyy" + override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/FranxxMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/FranxxMangas.kt index 3c5e937d..c555609e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/FranxxMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/FranxxMangas.kt @@ -2,20 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("FRANXXMANGAS", "Franxx Mangas", "pt") internal class FranxxMangas(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.FRANXXMANGAS, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("franxxmangas.net") + MangaReaderParser(context, MangaSource.FRANXXMANGAS, "franxxmangas.net", pageSize = 20, searchPageSize = 20) { override val isNsfwSource = true - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("pt", "PT")) - + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Mangaschan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Mangaschan.kt index 0015baee..c07c77b2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Mangaschan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Mangaschan.kt @@ -2,19 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MANGASCHAN", "Mangaschan", "pt") internal class Mangaschan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGASCHAN, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("mangaschan.com") + MangaReaderParser(context, MangaSource.MANGASCHAN, "mangaschan.com", pageSize = 20, searchPageSize = 20) { - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("pt", "PT")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Mundomangakun.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Mundomangakun.kt index ed9540b3..8bae2dd5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Mundomangakun.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Mundomangakun.kt @@ -2,19 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MUNDOMANGAKUN", "Mundomangakun", "pt") internal class Mundomangakun(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MUNDOMANGAKUN, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("mundomangakun.com.br") + MangaReaderParser(context, MangaSource.MUNDOMANGAKUN, "mundomangakun.com.br", pageSize = 20, searchPageSize = 20) { - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("pt", "PT")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Origamiorpheans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Origamiorpheans.kt index 52abfbc3..6036aaac 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Origamiorpheans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Origamiorpheans.kt @@ -2,19 +2,19 @@ package org.koitharu.kotatsu.parsers.site.mangareader.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("ORIGAMIORPHEANS", "Origami orpheans", "pt") internal class Origamiorpheans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ORIGAMIORPHEANS, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("origami-orpheans.com.br") + MangaReaderParser( + context, + MangaSource.ORIGAMIORPHEANS, + "origami-orpheans.com.br", + pageSize = 20, + searchPageSize = 20, + ) { - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("pt", "PT")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Silencescan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Silencescan.kt index 23d0fed7..78eef741 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Silencescan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Silencescan.kt @@ -2,20 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("SILENCESCAN", "Silencescan", "pt") internal class Silencescan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SILENCESCAN, pageSize = 35, searchPageSize = 35) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("silencescan.com.br") + MangaReaderParser(context, MangaSource.SILENCESCAN, "silencescan.com.br", pageSize = 35, searchPageSize = 35) { override val isNsfwSource = true - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("pt", "PT")) - + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Tsundoku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Tsundoku.kt index 34d42a27..1573b23d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Tsundoku.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Tsundoku.kt @@ -2,18 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("TSUNDOKU", "Tsundoku", "pt") internal class Tsundoku(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TSUNDOKU, pageSize = 50, searchPageSize = 50) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("tsundoku.com.br") + MangaReaderParser(context, MangaSource.TSUNDOKU, "tsundoku.com.br", pageSize = 50, searchPageSize = 50) { - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("pt", "PT")) + override val datePattern = "MMM d, yyyy" } 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 a4eae5ee..e575d2a4 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 @@ -2,19 +2,13 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("DOUJIN69", "Doujin69", "th") internal class Doujin69(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.DOUJIN69, pageSize = 40, searchPageSize = 21) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("doujin69.com") + MangaReaderParser(context, MangaSource.DOUJIN69, "doujin69.com", pageSize = 40, searchPageSize = 21) { override val isNsfwSource = true override val listUrl = "/doujin" - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th", "TH")) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/InuManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/InuManga.kt index b70f1cb0..899d089a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/InuManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/InuManga.kt @@ -2,17 +2,9 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("INUMANGA", "Inu Manga", "th") internal class InuManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.INUMANGA, pageSize = 40, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("www.inu-manga.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th", "TH")) -} + MangaReaderParser(context, MangaSource.INUMANGA, "www.inu-manga.com", pageSize = 40, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/LamiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/LamiManga.kt index adba4d9d..812a63dc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/LamiManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/LamiManga.kt @@ -2,17 +2,9 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("LAMIMANGA", "Lami Manga", "th") internal class LamiManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.LAMIMANGA, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("www.lami-manga.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th", "TH")) -} + MangaReaderParser(context, MangaSource.LAMIMANGA, "www.lami-manga.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MafiaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MafiaManga.kt index 9dc130dc..ece5d4b8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MafiaManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MafiaManga.kt @@ -2,17 +2,9 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MAFIAMANGA", "Mafia Manga", "th") internal class MafiaManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MAFIAMANGA, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("mafia-manga.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th", "TH")) -} + MangaReaderParser(context, MangaSource.MAFIAMANGA, "mafia-manga.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Manga689.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Manga689.kt index 43b4e7b3..1cff3018 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Manga689.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Manga689.kt @@ -2,17 +2,9 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MANGA689", "Manga689", "th") internal class Manga689(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGA689, pageSize = 45, searchPageSize = 21) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("manga689.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th", "TH")) -} + MangaReaderParser(context, MangaSource.MANGA689, "manga689.com", pageSize = 45, searchPageSize = 21) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaMoons.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaMoons.kt index cf0be222..9559caba 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaMoons.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaMoons.kt @@ -2,17 +2,9 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MANGAMOONS", "Manga Moons", "th") internal class MangaMoons(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAMOONS, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("manga-moons.net") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th", "TH")) -} + MangaReaderParser(context, MangaSource.MANGAMOONS, "manga-moons.net", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/PopsManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/PopsManga.kt index 51fc3fa5..920fa8c8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/PopsManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/PopsManga.kt @@ -2,17 +2,9 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("POPSMANGA", "PopsManga", "th") internal class PopsManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.POPSMANGA, pageSize = 20, searchPageSize = 14) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("popsmanga.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th", "TH")) -} + MangaReaderParser(context, MangaSource.POPSMANGA, "popsmanga.com", pageSize = 20, searchPageSize = 14) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Sodsaime.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Sodsaime.kt index c6075cdf..b8e2b942 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Sodsaime.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Sodsaime.kt @@ -2,17 +2,9 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("SODSAIME", "สดใสเมะ", "th") internal class Sodsaime(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SODSAIME, pageSize = 40, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("www.xn--l3c0azab5a2gta.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th", "TH")) -} + MangaReaderParser(context, MangaSource.SODSAIME, "www.xn--l3c0azab5a2gta.com", pageSize = 40, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ThaiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ThaiManga.kt index 777be98d..477a679d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ThaiManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ThaiManga.kt @@ -2,17 +2,9 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("THAIMANGA", "Thai Manga", "th") internal class ThaiManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.THAIMANGA, pageSize = 40, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("www.thaimanga.net") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th", "TH")) -} + MangaReaderParser(context, MangaSource.THAIMANGA, "www.thaimanga.net", pageSize = 40, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ToonHunterParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ToonHunterParser.kt index 4564dd0e..64b96f73 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ToonHunterParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ToonHunterParser.kt @@ -2,16 +2,12 @@ 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.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat @MangaSourceParser("TOONHUNTER", "Toon Hunter", "th") internal class ToonHunterParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TOONHUNTER, pageSize = 30, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("toonhunter.com") + MangaReaderParser(context, MangaSource.TOONHUNTER, "toonhunter.com", pageSize = 30, searchPageSize = 10) { - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", sourceLocale) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AfroditScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AfroditScans.kt index a87369b8..fbbd50d0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AfroditScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AfroditScans.kt @@ -2,17 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("AFRODITSCANS", "Afrodit Scans", "tr") internal class AfroditScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.AFRODITSCANS, pageSize = 24, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("afroditscans.com") + MangaReaderParser(context, MangaSource.AFRODITSCANS, "afroditscans.com", pageSize = 24, searchPageSize = 10) { - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("tr")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AsuraTRParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AsuraTRParser.kt index 2aec1c2e..f2e6c93d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AsuraTRParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AsuraTRParser.kt @@ -2,17 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("ASURATR", "Asura Scans (tr)", "tr") internal class AsuraTRParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ASURATR, pageSize = 30, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("asurascanstr.com") + MangaReaderParser(context, MangaSource.ASURATR, "asurascanstr.com", pageSize = 30, searchPageSize = 10) { - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("tr")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaFansub.kt index a1b09849..565e7cb7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaFansub.kt @@ -2,18 +2,10 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("ATHENAFANSUB", "AthenaFansub", "tr") internal class AthenaFansub(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ATHENAFANSUB, pageSize = 20, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("athenafansub.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr", "TR")) -} + MangaReaderParser(context, MangaSource.ATHENAFANSUB, "athenafansub.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Ayatoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Ayatoon.kt index 3ee3889f..089a2c6d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Ayatoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Ayatoon.kt @@ -2,17 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("AYATOON", "Ayatoon", "tr") internal class Ayatoon(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.AYATOON, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("ayatoon.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr")) -} + MangaReaderParser(context, MangaSource.AYATOON, "ayatoon.com", pageSize = 20, searchPageSize = 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Golgebahcesi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Golgebahcesi.kt index 9373bd5f..fe92337e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Golgebahcesi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Golgebahcesi.kt @@ -2,17 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("GOLGEBAHCESI", "Golgebahcesi", "tr") internal class Golgebahcesi(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.GOLGEBAHCESI, pageSize = 14, searchPageSize = 9) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("golgebahcesi.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr")) -} + MangaReaderParser(context, MangaSource.GOLGEBAHCESI, "golgebahcesi.com", pageSize = 14, searchPageSize = 9) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MajorScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MajorScans.kt index aa7af917..b6d099ca 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MajorScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MajorScans.kt @@ -2,17 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MAJORSCANS", "MajorScans", "tr") internal class MajorScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MAJORSCANS, pageSize = 20, searchPageSize = 25) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("www.majorscans.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr")) -} + MangaReaderParser(context, MangaSource.MAJORSCANS, "www.majorscans.com", pageSize = 20, searchPageSize = 25) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangacim.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangacim.kt index 61c1b8ee..d6ef6beb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangacim.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangacim.kt @@ -2,17 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MANGACIM", "Mangacim", "tr") internal class Mangacim(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGACIM, pageSize = 20, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("mangacim.com") + MangaReaderParser(context, MangaSource.MANGACIM, "mangacim.com", pageSize = 20, searchPageSize = 20) { - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMM d, yyyy", Locale("tr")) + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangaokutr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangaokutr.kt index 885e9af1..e20c83ba 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangaokutr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangaokutr.kt @@ -2,17 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("MANGAOKUTR", "Mangaokutr", "tr") internal class Mangaokutr(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAOKUTR, pageSize = 25, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("mangaokutr.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr")) -} + MangaReaderParser(context, MangaSource.MANGAOKUTR, "mangaokutr.com", pageSize = 25, searchPageSize = 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NyxManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NyxManga.kt index fe8c121a..ee393951 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NyxManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NyxManga.kt @@ -2,18 +2,10 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("NYXMANGA", "Nyx Manga", "tr") internal class NyxManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.NYXMANGA, pageSize = 14, searchPageSize = 10) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("nyxmanga.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr", "TR")) -} + MangaReaderParser(context, MangaSource.NYXMANGA, "nyxmanga.com", pageSize = 14, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SpartanManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SpartanManga.kt index 7dd15675..9bf41113 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SpartanManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SpartanManga.kt @@ -2,18 +2,10 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("SPARTANMANGA", "Spartan Manga", "tr") internal class SpartanManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SPARTANMANGA, pageSize = 40, searchPageSize = 20) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("spartanmanga.com.tr") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr", "TR")) -} + MangaReaderParser(context, MangaSource.SPARTANMANGA, "spartanmanga.com.tr", pageSize = 40, searchPageSize = 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestfansubParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestfansubParser.kt index 597142d6..6753d043 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestfansubParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestfansubParser.kt @@ -2,18 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("TEMPESTFANSUB", "Tempestfansub", "tr") internal class TempestfansubParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TEMPESTFANSUB, pageSize = 25, searchPageSize = 40) { - override val configKeyDomain: ConfigKey.Domain - get() = ConfigKey.Domain("tempestfansub.com") - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr", "TR")) - -} + MangaReaderParser(context, MangaSource.TEMPESTFANSUB, "tempestfansub.com", pageSize = 25, searchPageSize = 40) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TurktoonParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TurktoonParser.kt index 16cd7080..e007f943 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TurktoonParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TurktoonParser.kt @@ -2,19 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.tr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.text.SimpleDateFormat -import java.util.Locale @MangaSourceParser("TURKTOON", "Turktoon", "tr") internal class TurktoonParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TURKTOON, pageSize = 20, searchPageSize = 10) { - - override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("turktoon.com") - - - override val chapterDateFormat: SimpleDateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("tr", "TR")) - -} + MangaReaderParser(context, MangaSource.TURKTOON, "turktoon.com", pageSize = 20, searchPageSize = 10) From 380861f29e89620451b0bab9551d9bf15bff8f47 Mon Sep 17 00:00:00 2001 From: devi Date: Sat, 22 Jul 2023 12:13:49 +0200 Subject: [PATCH 3/3] Group sites by language --- .../parsers/site/{ => all}/BatoToParser.kt | 2 +- .../parsers/site/{ => all}/ComickFunParser.kt | 2 +- .../parsers/site/{ => all}/ExHentaiParser.kt | 2 +- .../parsers/site/{ => all}/MangaDexParser.kt | 2 +- .../parsers/site/{ => all}/NHentaiParser.kt | 2 +- .../parsers/site/{ => all}/NineMangaParser.kt | 2 +- .../parsers/site/{ => be}/AnibelParser.kt | 2 +- .../parsers/site/{ => en}/CloneMangaParser.kt | 2 +- .../parsers/site/{ => en}/MangaTownParser.kt | 2 +- .../parsers/site/{ => en}/Manhwa18Parser.kt | 2 +- .../site/{ => es}/TuMangaOnlineParser.kt | 2 +- .../parsers/site/{ => fr}/BentomangaParser.kt | 29 ++----------------- .../parsers/site/{ => fr}/JapScanParser.kt | 2 +- .../parsers/site/{ => fr}/ScantradUnion.kt | 2 +- .../parsers/site/{ => id}/DoujinDesuParser.kt | 2 +- .../site/{ => ja}/NicovideoSeigaParser.kt | 2 +- .../site/{ => pt}/UnionMangasParser.kt | 2 +- .../parsers/site/{ => ru}/DesuMeParser.kt | 2 +- .../parsers/site/{ => ru}/NudeMoonParser.kt | 2 +- .../parsers/site/{ => ru}/RemangaParser.kt | 2 +- .../parsers/site/{ => uk}/HoneyMangaParser.kt | 2 +- .../parsers/site/{ => uk}/MangaInUaParser.kt | 2 +- .../parsers/site/{ => vi}/BlogTruyenParser.kt | 2 +- .../parsers/site/{ => vi}/NetTruyenParser.kt | 2 +- .../site/{ => vi}/TruyentranhLHParser.kt | 2 +- 25 files changed, 27 insertions(+), 50 deletions(-) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => all}/BatoToParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => all}/ComickFunParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => all}/ExHentaiParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => all}/MangaDexParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => all}/NHentaiParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => all}/NineMangaParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => be}/AnibelParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => en}/CloneMangaParser.kt (98%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => en}/MangaTownParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => en}/Manhwa18Parser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => es}/TuMangaOnlineParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => fr}/BentomangaParser.kt (84%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => fr}/JapScanParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => fr}/ScantradUnion.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => id}/DoujinDesuParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => ja}/NicovideoSeigaParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => pt}/UnionMangasParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => ru}/DesuMeParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => ru}/NudeMoonParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => ru}/RemangaParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => uk}/HoneyMangaParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => uk}/MangaInUaParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => vi}/BlogTruyenParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => vi}/NetTruyenParser.kt (99%) rename src/main/kotlin/org/koitharu/kotatsu/parsers/site/{ => vi}/TruyentranhLHParser.kt (99%) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BatoToParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/BatoToParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/BatoToParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/BatoToParser.kt index 49c3b4c1..c1ba6782 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BatoToParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/BatoToParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.all import androidx.collection.ArraySet import org.json.JSONArray diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ComickFunParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ComickFunParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/ComickFunParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ComickFunParser.kt index 96c89aa1..8d34bf8c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ComickFunParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ComickFunParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.all import androidx.collection.ArraySet import androidx.collection.SparseArrayCompat diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ExHentaiParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/ExHentaiParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt index 46aacb9b..5c546eb7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ExHentaiParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.all import androidx.collection.SparseArrayCompat import androidx.collection.set diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaDexParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaDexParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaDexParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaDexParser.kt index ccf41f15..b4b7eb67 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaDexParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaDexParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.all import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NHentaiParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NHentaiParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/NHentaiParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NHentaiParser.kt index e4053911..0cf2d824 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NHentaiParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NHentaiParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.all import androidx.collection.ArraySet import kotlinx.coroutines.async diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NineMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/NineMangaParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt index e891456e..d91e9c5f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NineMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.all import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Interceptor diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/AnibelParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/be/AnibelParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/AnibelParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/be/AnibelParser.kt index 8841bf06..a30d3f63 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/AnibelParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/be/AnibelParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.be import androidx.collection.ArraySet import org.json.JSONArray diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/CloneMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt similarity index 98% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/CloneMangaParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt index 48b8a946..06b59478 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/CloneMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.en import org.koitharu.kotatsu.parsers.InternalParsersApi import org.koitharu.kotatsu.parsers.MangaLoaderContext diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaTownParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaTownParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaTownParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaTownParser.kt index 35081029..f63d5210 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaTownParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaTownParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaParser diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/Manhwa18Parser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/Manhwa18Parser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt index 760f7afa..caf550ee 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/Manhwa18Parser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.en import androidx.collection.ArrayMap import org.koitharu.kotatsu.parsers.MangaLoaderContext diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/TuMangaOnlineParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/TuMangaOnlineParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt index 1437a3c2..6c3402f0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/TuMangaOnlineParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.es import okhttp3.Headers import okhttp3.HttpUrl.Companion.toHttpUrl diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BentomangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt similarity index 84% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/BentomangaParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt index c1a5cd8f..9c95b123 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BentomangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.fr import kotlinx.coroutines.async import kotlinx.coroutines.awaitAll @@ -10,32 +10,9 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.exception.ParseException -import org.koitharu.kotatsu.parsers.model.Manga -import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaPage -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.model.MangaState -import org.koitharu.kotatsu.parsers.model.MangaTag -import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN -import org.koitharu.kotatsu.parsers.model.SortOrder -import org.koitharu.kotatsu.parsers.util.assertNotNull -import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrlOrNull -import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl -import org.koitharu.kotatsu.parsers.util.concatUrl -import org.koitharu.kotatsu.parsers.util.domain -import org.koitharu.kotatsu.parsers.util.flattenTo -import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.util.* import org.koitharu.kotatsu.parsers.util.json.getIntOrDefault -import org.koitharu.kotatsu.parsers.util.mapToSet -import org.koitharu.kotatsu.parsers.util.ownTextOrNull -import org.koitharu.kotatsu.parsers.util.parseHtml -import org.koitharu.kotatsu.parsers.util.parseJson -import org.koitharu.kotatsu.parsers.util.requireElementById -import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow -import org.koitharu.kotatsu.parsers.util.textOrNull -import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl -import org.koitharu.kotatsu.parsers.util.toTitleCase -import org.koitharu.kotatsu.parsers.util.urlBuilder import java.util.Calendar import java.util.EnumSet diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/JapScanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/JapScanParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/JapScanParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/JapScanParser.kt index f9bb0a91..4111179c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/JapScanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/JapScanParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.fr import okhttp3.Headers import org.json.JSONObject diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ScantradUnion.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/ScantradUnion.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt index 383c3509..82c076c4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ScantradUnion.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.fr import okhttp3.Headers import org.koitharu.kotatsu.parsers.MangaLoaderContext diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/DoujinDesuParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/DoujinDesuParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/DoujinDesuParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/DoujinDesuParser.kt index 64e58bca..122ee277 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/DoujinDesuParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/DoujinDesuParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.id import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NicovideoSeigaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ja/NicovideoSeigaParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/NicovideoSeigaParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/ja/NicovideoSeigaParser.kt index 4225bd25..45418cef 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NicovideoSeigaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ja/NicovideoSeigaParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.ja import org.koitharu.kotatsu.parsers.InternalParsersApi import org.koitharu.kotatsu.parsers.MangaLoaderContext diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/UnionMangasParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/UnionMangasParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/UnionMangasParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/UnionMangasParser.kt index 32cb84e2..fe86b405 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/UnionMangasParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/UnionMangasParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.pt import org.jsoup.nodes.Element import org.koitharu.kotatsu.parsers.MangaLoaderContext diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/DesuMeParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/DesuMeParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/DesuMeParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/DesuMeParser.kt index 20fec615..8009ad2e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/DesuMeParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/DesuMeParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.ru import androidx.collection.ArrayMap import okhttp3.Headers diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NudeMoonParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/NudeMoonParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/NudeMoonParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/NudeMoonParser.kt index 0f66bf5c..31086429 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NudeMoonParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/NudeMoonParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.ru import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaParser diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/RemangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/RemangaParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt index 89592f51..1ff5a25e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/RemangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.ru import okhttp3.Headers import org.json.JSONArray diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/HoneyMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/HoneyMangaParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/HoneyMangaParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/HoneyMangaParser.kt index 3f57673b..8a9d50af 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/HoneyMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/HoneyMangaParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.uk import androidx.collection.ArraySet import okhttp3.Interceptor diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaInUaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/MangaInUaParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaInUaParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/MangaInUaParser.kt index bebfca6c..2e575665 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/MangaInUaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/MangaInUaParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.uk import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BlogTruyenParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/BlogTruyenParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/BlogTruyenParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/BlogTruyenParser.kt index c820f77c..bdf3aab8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/BlogTruyenParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/BlogTruyenParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.vi import androidx.collection.ArrayMap import okhttp3.Headers diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NetTruyenParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/NetTruyenParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/NetTruyenParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/NetTruyenParser.kt index 12a3a221..91f9dab3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/NetTruyenParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/NetTruyenParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.vi import androidx.collection.ArrayMap import androidx.collection.ArraySet diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/TruyentranhLHParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt similarity index 99% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/TruyentranhLHParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt index 0af1b15d..810c5062 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/TruyentranhLHParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt @@ -1,4 +1,4 @@ -package org.koitharu.kotatsu.parsers.site +package org.koitharu.kotatsu.parsers.site.vi import androidx.collection.ArrayMap import androidx.collection.ArraySet