From faf8f6ffd764cb2441736da9126a2c46189ca809 Mon Sep 17 00:00:00 2001 From: dragonx943 Date: Thu, 5 Jun 2025 08:35:23 +0000 Subject: [PATCH] [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 {