From b4050e0335c3ac9feadf65b7fdece534098fd2ea Mon Sep 17 00:00:00 2001 From: scryptan Date: Thu, 23 Jan 2025 13:47:36 +0500 Subject: [PATCH] refactor --- .../kotatsu/parsers/site/ru/WaMangaParser.kt | 46 +++++++++++-------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/WaMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/WaMangaParser.kt index db6dd27a..bb047ad0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/WaMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/WaMangaParser.kt @@ -46,13 +46,13 @@ internal class WaMangaParser( } private fun parseSmallMangaObject(doc: JSONObject): Manga { - val url = "https://$domain${doc.getString("url")}" + val url = doc.getString("url") return Manga( - id = generateUid(doc.getString("url")), - url = doc.getString("url"), + id = generateUid(url), + url = url, title = doc.getString("title"), altTitle = null, - publicUrl = url, + publicUrl = "https://$domain$url", rating = doc.getFloatOrDefault("rating", 0f), coverUrl = doc.getString("thumbnail_small"), tags = doc.getJSONArray("genres").mapJSONToSet { tag -> parseMangaTag(tag) }, @@ -70,17 +70,22 @@ internal class WaMangaParser( override suspend fun getDetails(manga: Manga): Manga { + val url = "https://$domain/api${manga.url}" val doc = webClient.httpGet(url).parseJson().getJSONObject("comic") - val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", sourceLocale) val thumbnailUrl = doc.getString("thumbnail") val mangaNamePath = thumbnailUrl.slice(thumbnailUrl.indexOf(doc.getString("slug")).. chap.startsWith(chapterPrefix) } - val fullChapUrl = "$chapterBaseUrl/$chapUrl" + val chapterName = chapters.first { chap -> chap.startsWith(chapterPrefix) } + val chapterUrl = "$mangaFolderUrl/$chapterName" MangaChapter( - id = generateUid(fullChapUrl), - url = fullChapUrl, + id = generateUid(chapterUrl), + url = chapterUrl, source = source, number = it.getIntOrDefault("chapter", 0).toFloat(), volume = it.getIntOrDefault("volume", 0), name = it.getStringOrNull("full_title") ?: manga.title, scanlator = it.getJSONArray("teams").optJSONObject(0, null)?.getStringOrNull("name"), - uploadDate = dateFormat.tryParse( - it.getStringOrNull("published_on"), - ), + uploadDate = dateFormat.tryParse(it.getStringOrNull("published_on")), branch = null, ) }, @@ -110,12 +113,15 @@ internal class WaMangaParser( override suspend fun getPages(chapter: MangaChapter): List { val doc = webClient.httpGet(chapter.url).parseHtml() - val pages = doc.getElementsByTag("a").map { it.ownText() } - return pages.drop(1).map { img -> - val url = "${chapter.url}$img" + val images = doc.getElementsByTag("a").map { it.ownText() } + + return images + .drop(1) // drop first, because of first is "Parent directory" link + .map { img -> + val imageUrl = "${chapter.url}$img" MangaPage( - id = generateUid(url), - url = url, + id = generateUid(imageUrl), + url = imageUrl, preview = null, source = source, )