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 98a590d07..f9bb0a91e 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 774661fa3..1df46ad59 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 000000000..adb4508cb --- /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 000000000..69d87f6ba --- /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 000000000..167a6abd9 --- /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 000000000..14f2b5c0f --- /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 000000000..c9481c207 --- /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 000000000..1d358f94e --- /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 000000000..beb7dffd9 --- /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 000000000..9fc1a5647 --- /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 000000000..f03054bfb --- /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 000000000..c660f327b --- /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 000000000..89ecb306e --- /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 000000000..6d19f071b --- /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 000000000..d109fe6b7 --- /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 000000000..6486c3bf6 --- /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 000000000..a05c72948 --- /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 000000000..93d77e4f8 --- /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 000000000..cf47b6219 --- /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 000000000..b8a7eb0f5 --- /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 000000000..8a2856c9b --- /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 000000000..b3b72dab1 --- /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 000000000..177932eb8 --- /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 000000000..9524ef254 --- /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 000000000..c1acf9f41 --- /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 000000000..105eaa34b --- /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 000000000..c35df13b1 --- /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 000000000..7d9a4053b --- /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 000000000..078dc626b --- /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 000000000..b43be1e45 --- /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 000000000..c5e6b13dc --- /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 000000000..35c5bfa60 --- /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 000000000..a847eda9b --- /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 000000000..e08c505a1 --- /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 000000000..3ffb527a3 --- /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 000000000..251ef94e7 --- /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 83a384644..ab1db9032 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 000000000..ee750f164 --- /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 000000000..b54276283 --- /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 000000000..70f14dc92 --- /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 000000000..e03058697 --- /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 000000000..95b9fec29 --- /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 be71c2108..c4f911a2f 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 000000000..646591cc9 --- /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 2a58038e3..7418c703c 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 000000000..d5a237a10 --- /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 000000000..41213148b --- /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 000000000..0936db890 --- /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 000000000..03422c3ec --- /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 000000000..cf0be2229 --- /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 000000000..a87369b82 --- /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 000000000..a1b098499 --- /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 000000000..fe8c121a4 --- /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 000000000..7dd15675e --- /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 ab1db9032..ac8eb98cd 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 ee750f164..b99b9182e 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 b54276283..b58b9e1a9 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 00c08244d..5c172e751 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 07c9fd557..1bb018183 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 b88289136..10424b561 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 00f02cd26..8a756a006 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 30d9d4f7c..dc70d3078 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 ededbcbe4..42ebe2774 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 61bb8f9f9..78bc9aa7c 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 d6db49788..faa34268d 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 1eb5a2671..f78e74260 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 bd74e70e7..9818d3512 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 70f14dc92..2d8a32fa9 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 739028ce0..ef25218f5 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 e4b89fec7..8dac60b4b 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 c56aaae54..f81308149 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 e03058697..ef31b0f51 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 b836b9fec..4056cf9d8 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 fb6cf7464..afa05ab78 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 2102fb0c5..ea1f820e4 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 839b01294..c22959150 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 8a2c769ab..2d52b26e8 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 3960e0353..b5d680db1 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 95b9fec29..1a2d25546 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 b92e09542..fb849d0bd 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 1414d42c4..807b5d0e3 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 4dfa880df..cc355e83f 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 2b2a55614..88b66cbf5 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 7751ab974..c06ad2e72 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 1930b447f..c946c289e 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 db1866dcc..96b6438d0 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 aed5b8e80..a119cf52d 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 40fc0c938..e21dc0597 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 713def6fa..c77bb9d16 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 ff047c027..ff6ac5911 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 291d43024..bf8cc7e18 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 27fd37c8b..239bba880 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 c4f911a2f..0a2f5ca32 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 95c156cd1..a82971591 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 60265022d..2a6da9c6a 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 fd34dd741..38fe6b33a 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 fdc87e8c7..2ae2392e0 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 5858812c4..fb8ece3b3 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 ab3f2fff9..0dace0e27 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 2a6675a33..13ba36a9e 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 371054ff2..e82e8b277 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 3eccc8dd6..2f30e262e 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 ef6c864a0..703dbc32b 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 ecda0b23d..65107bc17 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 646591cc9..87e697c5d 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 f67b1b062..fafb5b96a 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 250652753..542569a98 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 35fc03fc2..26a215db7 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 ed4e06cb5..572cc730a 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 94a39f98f..859df425e 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 76ae4fd15..319896a29 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 41b89ab0b..a95cac694 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 92e721d5b..7ca6eb083 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 08e152dad..0be2806ac 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 ca5e1685a..86521a19c 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 a2859536a..81da9185f 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 056d38fb1..5671a3d54 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 664ff2a32..560332fd3 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 7418c703c..839e9e5f3 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 98bb1cc2e..d792e3b9c 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 d5a237a10..564bddf35 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 2ef238efc..1186f8041 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 492792fda..4ada05837 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 0f470a6c3..63a239c4d 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 885ecaed0..617e3c501 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 108806a03..67c210207 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 15781f371..3688a7bda 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 13a89b4c3..7997987ef 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 0ca8ef139..ed8e58a7a 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 41213148b..2a5ec5b87 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 6b414aedc..d9b87b3bc 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 be5ed5860..51e60de85 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 3fec2e6f7..f1dd44ebf 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 633f435e5..b546c6a05 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 bfc9d3c29..04d983895 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 f23b84a72..a41892b43 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 0936db890..10bd3b011 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 d2daa1ed5..e887294cd 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 152659d73..44c78069b 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 eb071a55c..cdf121738 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 32211c8fa..7a33bdca9 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 f31d10cd6..93af7eeb5 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 1903b6233..cce4a040d 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 5ac30d4b3..574bda9ea 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 2d123ef20..bfe4650d1 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 03422c3ec..14f5b19f1 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 5aa7bb0c3..13547c921 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 3c5e937dc..c555609e4 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 0015baeef..c07c77b2c 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 ed9540b36..8bae2dd56 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 52abfbc37..6036aaacc 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 23d0fed79..78eef741f 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 34d42a27d..1573b23dc 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 a4eae5eec..e575d2a4f 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 b70f1cb0f..899d089a2 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 adba4d9d9..812a63dc2 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 9dc130dc7..ece5d4b82 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 43b4e7b3a..1cff3018a 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 cf0be2229..9559caba3 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 51fc3fa5a..920fa8c8f 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 c6075cdf4..b8e2b9421 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 777be98d8..477a679d4 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 4564dd0e1..64b96f73c 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 a87369b82..fbbd50d00 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 2aec1c2e1..f2e6c93dd 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 a1b098499..565e7cb79 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 3ee3889f6..089a2c6de 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 9373bd5f7..fe92337e5 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 aa7af9174..b6d099cab 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 61c1b8eed..d6ef6beb8 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 885e9af15..e20c83ba4 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 fe8c121a4..ee3939516 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 7dd15675e..9bf411136 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 597142d6e..6753d0433 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 16cd7080a..e007f943e 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 49c3b4c1e..c1ba67820 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 96c89aa13..8d34bf8c7 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 46aacb9bb..5c546eb77 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 ccf41f156..b4b7eb67a 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 e40539117..0cf2d824b 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 e891456ec..d91e9c5fc 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 8841bf069..a30d3f63d 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 48b8a9467..06b59478c 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 350810299..f63d52105 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 760f7afa3..caf550eee 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 1437a3c2e..6c3402f0e 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 c1a5cd8fd..9c95b1239 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 f9bb0a91e..4111179c7 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 383c35096..82c076c43 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 64e58bcab..122ee2773 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 4225bd25a..45418cefe 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 32cb84e2a..fe86b405a 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 20fec615b..8009ad2eb 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 0f66bf5c9..310864297 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 89592f51a..1ff5a25ee 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 3f57673bd..8a9d50af0 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 bebfca6cc..2e575665a 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 c820f77cf..bdf3aab80 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 12a3a2213..91f9dab35 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 0af1b15de..810c50620 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