From c73d34b04ff86bf0d540fc0422a55288bdf1fac4 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 7 Sep 2022 13:45:15 +0300 Subject: [PATCH] [Madara] Fix date parsing --- .../kotatsu/parsers/site/UnionMangasParser.kt | 2 +- .../parsers/site/madara/IsekaiScanEu.kt | 2 ++ .../parsers/site/madara/MadaraParser.kt | 28 ++++++++++++++----- .../kotatsu/parsers/MangaParserTest.kt | 2 +- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/UnionMangasParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/UnionMangasParser.kt index 8cf6bd1f..7e1eb643 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/UnionMangasParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/UnionMangasParser.kt @@ -101,7 +101,7 @@ class UnionMangasParser(override val context: MangaLoaderContext) : PagedMangaPa url = href, scanlator = div.selectLast("a")?.text()?.takeUnless { it == title }, uploadDate = dateFormat.tryParse( - a.nextElementSibling()?.text()?.removeSurrounding('(', ')'), + a.nextElementSibling()?.text()?.removeSurrounding("(", ")"), ), branch = null, source = source, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/IsekaiScanEu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/IsekaiScanEu.kt index bf540943..f2b2c6b9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/IsekaiScanEu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/IsekaiScanEu.kt @@ -14,6 +14,8 @@ import java.util.* internal class IsekaiScanEuParser(context: MangaLoaderContext) : MadaraParser(context, MangaSource.ISEKAISCAN_EU, "isekaiscan.eu") { + override val datePattern = "MM/dd/yyyy" + override suspend fun getChapters(manga: Manga, doc: Document): List { val mangaId = doc.body().requireElementById("manga-chapters-holder").attr("data-id") val ul = context.httpPost( 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 87c35e8c..06cf018c 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 @@ -151,7 +151,7 @@ internal abstract class MadaraParser( protected open suspend fun getChapters(manga: Manga, doc: Document): List { val root2 = doc.body().selectFirstOrThrow("div.content-area") .selectFirstOrThrow("div.c-page") - val dateFormat = SimpleDateFormat(datePattern, Locale.US) + val dateFormat = SimpleDateFormat(datePattern, sourceLocale ?: Locale.US) return root2.select("li").asReversed().mapChapters { i, li -> val a = li.selectFirst("a") val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") @@ -305,10 +305,13 @@ internal abstract class MadaraParser( @MangaSourceParser("MANGAREAD", "MangaRead", "en") class MangaRead(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGAREAD, "www.mangaread.org") { override val tagPrefix = "genres/" + override val datePattern = "dd.MM.yyyy" } @MangaSourceParser("MANGAWEEBS", "MangaWeebs", "en") - class MangaWeebs(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGAWEEBS, "mangaweebs.in") + class MangaWeebs(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGAWEEBS, "mangaweebs.in") { + override val datePattern = "dd MMMM HH:mm" + } @MangaSourceParser("KINGMANGA", "KingManga", "en") class KingManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.KINGMANGA, "king-manga.com") { @@ -327,7 +330,7 @@ internal abstract class MadaraParser( class PianManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.PIANMANGA, "pianmanga.com") @MangaSourceParser("MANGAROSIE", "MangaRosie", "en") - class MangaRosie(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGAROSIE, "mangarosie.me") + class MangaRosie(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGAROSIE, "mangarosie.love") @MangaSourceParser("READMANWHA", "ReadManwha", "en") class ReadManwha(context: MangaLoaderContext) : MadaraParser(context, MangaSource.READMANWHA, "readmanwha.net") @@ -336,7 +339,9 @@ internal abstract class MadaraParser( class MangaTx(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGATX, "mangatx.com") @MangaSourceParser("MANGAEFFECT", "MangaEffect", "en") - class MangaEffect(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGAEFFECT, "mangaeffect.com") + class MangaEffect(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGAEFFECT, "mangaeffect.com") { + override val datePattern = "dd.MM.yyyy" + } @MangaSourceParser("AQUAMANGA", "AquaManga", "en") class AquaManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.AQUAMANGA, "aquamanga.com") { @@ -358,7 +363,9 @@ internal abstract class MadaraParser( } @MangaSourceParser("HARIMANGA", "HariManga", "en") - class HariManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.HARIMANGA, "harimanga.com") + class HariManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.HARIMANGA, "harimanga.com") { + override val datePattern = "MM/dd/yyyy" + } @MangaSourceParser("KISSMANGA", "KissManga", "en") class KissManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.KISSMANGA, "kissmanga.in") @@ -393,7 +400,9 @@ internal abstract class MadaraParser( class ManhwaClan(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANHWACLAN, "manhwaclan.com") @MangaSourceParser("MANGA_3S", "Manga3s", "en") - class Manga3s(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGA_3S, "manga3s.com") + class Manga3s(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGA_3S, "manga3s.com") { + override val tagPrefix = "manhwa-genre/" + } @MangaSourceParser("MANHWAKOOL", "Manhwa Kool", "en") class ManhwaKool(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANHWAKOOL, "manhwakool.com") { @@ -405,6 +414,7 @@ internal abstract class MadaraParser( @MangaSourceParser("TOPMANHUA", "Top Manhua", "en") class TopManhua(context: MangaLoaderContext) : MadaraParser(context, MangaSource.TOPMANHUA, "www.topmanhua.com") { override val tagPrefix = "manhua-genre/" + override val datePattern = "MM/dd/yyyy" } @MangaSourceParser("X2MANGA", "X2Manga", "en") @@ -499,6 +509,8 @@ internal abstract class MadaraParser( @MangaSourceParser("TREE_MANGA", "Tree Manga", "en") class TreeManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.TREE_MANGA, "treemanga.com") { + override val datePattern = "MM/dd/yyyy" + override fun getFaviconUrl(): String { return "https://${getDomain()}/wp-content/uploads/2017/10/lgoo-treemanga-2-1.jpg" } @@ -533,7 +545,9 @@ internal abstract class MadaraParser( class Manga365(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGA_365, "365manga.com") @MangaSourceParser("MANGACLASH", "Mangaclash", "en") - class Mangaclash(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGACLASH, "mangaclash.com") + class Mangaclash(context: MangaLoaderContext) : MadaraParser(context, MangaSource.MANGACLASH, "mangaclash.com") { + override val datePattern = "MM/dd/yyyy" + } @MangaSourceParser("ZINMANGA", "ZINMANGA", "en") class Zinmanga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.ZINMANGA, "zinmanga.com") diff --git a/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt b/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt index ee7dc809..2c1ecdaf 100644 --- a/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt +++ b/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt @@ -38,7 +38,7 @@ internal class MangaParserTest { val page2 = parser.getList(page1.size, sortOrder = null, tags = null) val intersection = page1.intersect(page2.toSet()) assert(intersection.isEmpty()) { - "Pages are intersected: " + intersection.joinToString { it.publicUrl } + "Pages are intersected by " + intersection.size } }