From 639895f5114aef14baf8d84fa82e46037553a326 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Tue, 19 Mar 2024 12:30:35 +0200 Subject: [PATCH] MangaOVH: Parsing related manga --- .../kotatsu/parsers/site/ru/MangaOvhParser.kt | 41 +++++++++++-------- .../kotatsu/parsers/MangaParserTest.kt | 1 - 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaOvhParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaOvhParser.kt index 0aa991f0b..1fe4dcfd1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaOvhParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaOvhParser.kt @@ -106,22 +106,7 @@ class MangaOvhParser(context: MangaLoaderContext) : PagedMangaParser(context, Ma null -> Unit } val ja = webClient.httpGet(url.build()).parseJsonArray() - return ja.mapJSON { jo -> - Manga( - id = generateUid(jo.getString("id")), - title = jo.getJSONObject("name").getString("ru"), - altTitle = jo.getJSONObject("name").getStringOrNull("en"), - url = jo.getString("id"), - publicUrl = "https://$domain/manga/${jo.getString("slug")}", - rating = jo.getFloatOrDefault("averageRating", -10f) / 10f, - isNsfw = jo.getStringOrNull("contentStatus").isNsfw(), - coverUrl = jo.getString("poster"), - tags = setOf(), - state = jo.getStringOrNull("status")?.toMangaState(), - author = null, - source = source, - ) - } + return ja.mapJSON { jo -> jo.toManga() } } override suspend fun getDetails(manga: Manga): Manga = coroutineScope { @@ -185,6 +170,15 @@ class MangaOvhParser(context: MangaLoaderContext) : PagedMangaParser(context, Ma } } + override suspend fun getRelatedManga(seed: Manga): List { + val url = urlBuilder("api") + .addPathSegment("book") + .addPathSegment(seed.url) + .addPathSegment("related") + val ja = webClient.httpGet(url.build()).parseJsonArray() + return ja.mapJSON { jo -> jo.toManga() } + } + override suspend fun getPageUrl(page: MangaPage): String = page.url private suspend fun getChapters(mangaId: String): List { @@ -242,4 +236,19 @@ class MangaOvhParser(context: MangaLoaderContext) : PagedMangaParser(context, Ma key = getString("slug"), source = source, ) + + private fun JSONObject.toManga() = Manga( + id = generateUid(getString("id")), + title = getJSONObject("name").getString("ru"), + altTitle = getJSONObject("name").getStringOrNull("en"), + url = getString("id"), + publicUrl = "https://$domain/manga/${getString("slug")}", + rating = getFloatOrDefault("averageRating", -10f) / 10f, + isNsfw = getStringOrNull("contentStatus").isNsfw(), + coverUrl = getString("poster"), + tags = setOf(), + state = getStringOrNull("status")?.toMangaState(), + author = null, + source = source, + ) } diff --git a/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt b/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt index 5590e18a5..8ca1f8a2e 100644 --- a/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt +++ b/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt @@ -11,7 +11,6 @@ import org.koitharu.kotatsu.parsers.util.mimeType import org.koitharu.kotatsu.test_util.* import kotlin.time.Duration.Companion.minutes - //@ExtendWith(AuthCheckExtension::class) internal class MangaParserTest {