From faf8f6ffd764cb2441736da9126a2c46189ca809 Mon Sep 17 00:00:00 2001 From: dragonx943 Date: Thu, 5 Jun 2025 08:35:23 +0000 Subject: [PATCH 1/2] [MimiHentai] Fix getListPage --- .../kotatsu/parsers/site/vi/MimiHentai.kt | 57 ++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/MimiHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/MimiHentai.kt index 4d83be20..22d5051e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/MimiHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/MimiHentai.kt @@ -118,7 +118,62 @@ internal class MimiHentai(context: MangaLoaderContext) : val json = webClient.httpGet(url).parseJson() val data = json.getJSONArray("data") - return parseMangaList(data) + return if (url.contains("/top-manga")) { + parseTopMangaList(data) + } else { + parseMangaList(data) + } + } + + private fun parseTopMangaList(data: JSONArray): List { + return data.mapJSON { jo -> + val id = jo.getLong("id") + val title = jo.getString("title").takeIf { it.isNotEmpty() } ?: "Web chưa đặt tên" + val description = jo.getStringOrNull("description") + + val differentNames = mutableSetOf().apply { + jo.optJSONArray("differentNames")?.let { namesArray -> + for (i in 0 until namesArray.length()) { + namesArray.optString(i)?.takeIf { it.isNotEmpty() }?.let { name -> + add(name) + } + } + } + } + + val state = when (description) { + "Đang Tiến Hành" -> MangaState.ONGOING + "Hoàn Thành" -> MangaState.FINISHED + else -> null + } + + val authors = jo.optJSONArray("authors")?.mapJSON { + it.getString("name") + }?.toSet() ?: emptySet() + + val tags = jo.optJSONArray("genres")?.mapJSON { genre -> + MangaTag( + key = genre.getLong("id").toString(), + title = genre.getString("name"), + source = source + ) + }?.toSet() ?: emptySet() + + Manga( + id = generateUid(id), + title = title, + altTitles = differentNames, + url = "/$apiSuffix/info/$id", + publicUrl = "https://$domain/g/$id", + rating = RATING_UNKNOWN, + contentRating = ContentRating.ADULT, + coverUrl = jo.getString("coverUrl"), + tags = tags, + state = state, + authors = authors, + source = source, + ) + } } private fun parseMangaList(data: JSONArray): List { From d2a026c0541058689265d0f805939b9bb68e3578 Mon Sep 17 00:00:00 2001 From: dragonx943 Date: Thu, 5 Jun 2025 08:41:55 +0000 Subject: [PATCH 2/2] [MimiHentai] Remove state --- .../kotatsu/parsers/site/vi/MimiHentai.kt | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/MimiHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/MimiHentai.kt index 22d5051e..d1503684 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/MimiHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/MimiHentai.kt @@ -141,12 +141,6 @@ internal class MimiHentai(context: MangaLoaderContext) : } } - val state = when (description) { - "Đang Tiến Hành" -> MangaState.ONGOING - "Hoàn Thành" -> MangaState.FINISHED - else -> null - } - val authors = jo.optJSONArray("authors")?.mapJSON { it.getString("name") }?.toSet() ?: emptySet() @@ -168,8 +162,9 @@ internal class MimiHentai(context: MangaLoaderContext) : rating = RATING_UNKNOWN, contentRating = ContentRating.ADULT, coverUrl = jo.getString("coverUrl"), + state = null, + description = description, tags = tags, - state = state, authors = authors, source = source, ) @@ -192,12 +187,6 @@ internal class MimiHentai(context: MangaLoaderContext) : } } - val state = when (description) { - "Đang Tiến Hành" -> MangaState.ONGOING - "Hoàn Thành" -> MangaState.FINISHED - else -> null - } - val authors = jo.getJSONArray("authors").mapJSON { it.getString("name") }.toSet() @@ -219,8 +208,9 @@ internal class MimiHentai(context: MangaLoaderContext) : rating = RATING_UNKNOWN, contentRating = ContentRating.ADULT, coverUrl = jo.getString("coverUrl"), + state = null, tags = tags, - state = state, + description = description, authors = authors, source = source, )