[WaManga] Refactor #1390

master
Koitharu 1 year ago
parent b4050e0335
commit 4e545ca7af
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -1 +1 @@
total: 1174 total: 1175

@ -38,10 +38,9 @@ internal class WaMangaParser(
private fun parseMangaTag(doc: JSONObject): MangaTag { private fun parseMangaTag(doc: JSONObject): MangaTag {
return MangaTag( return MangaTag(
doc.getString("name") doc.getString("name").toTitleCase(sourceLocale),
.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() },
doc.getString("slug"), doc.getString("slug"),
MangaParserSource.WAMANGA, source,
) )
} }
@ -52,11 +51,11 @@ internal class WaMangaParser(
url = url, url = url,
title = doc.getString("title"), title = doc.getString("title"),
altTitle = null, altTitle = null,
publicUrl = "https://$domain$url", publicUrl = url.toAbsoluteUrl(domain),
rating = doc.getFloatOrDefault("rating", 0f), rating = doc.getFloatOrDefault("rating", 0f),
coverUrl = doc.getString("thumbnail_small"), coverUrl = doc.getString("thumbnail_small"),
tags = doc.getJSONArray("genres").mapJSONToSet { tag -> parseMangaTag(tag) }, tags = doc.getJSONArray("genres").mapJSONToSet { tag -> parseMangaTag(tag) },
state = when (doc.getString("status").lowercase(Locale.getDefault())) { state = when (doc.getString("status").lowercase(sourceLocale)) {
"продолжается" -> MangaState.ONGOING "продолжается" -> MangaState.ONGOING
"окончен" -> MangaState.FINISHED "окончен" -> MangaState.FINISHED
"закончен" -> MangaState.FINISHED "закончен" -> MangaState.FINISHED
@ -87,12 +86,11 @@ internal class WaMangaParser(
val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", sourceLocale) val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", sourceLocale)
return manga.copy( return manga.copy(
id = generateUid(manga.url),
url = doc.getString("url"), url = doc.getString("url"),
title = doc.getString("title"), title = doc.getString("title"),
largeCoverUrl = thumbnailUrl, largeCoverUrl = thumbnailUrl,
description = doc.getString("description") ?: manga.description, description = doc.getStringOrNull("description") ?: manga.description,
chapters = doc.getJSONArray("chapters").mapJSONNotNull { chapters = doc.getJSONArray("chapters").asTypedList<JSONObject>().mapChapters { _, it ->
val chapterPrefix = it.getString("slug_lang_vol_ch_sub") val chapterPrefix = it.getString("slug_lang_vol_ch_sub")
val chapterName = chapters.first { chap -> chap.startsWith(chapterPrefix) } val chapterName = chapters.first { chap -> chap.startsWith(chapterPrefix) }
val chapterUrl = "$mangaFolderUrl/$chapterName" val chapterUrl = "$mangaFolderUrl/$chapterName"
@ -100,7 +98,7 @@ internal class WaMangaParser(
id = generateUid(chapterUrl), id = generateUid(chapterUrl),
url = chapterUrl, url = chapterUrl,
source = source, source = source,
number = it.getIntOrDefault("chapter", 0).toFloat(), number = it.getFloatOrDefault("chapter", 0f),
volume = it.getIntOrDefault("volume", 0), volume = it.getIntOrDefault("volume", 0),
name = it.getStringOrNull("full_title") ?: manga.title, name = it.getStringOrNull("full_title") ?: manga.title,
scanlator = it.getJSONArray("teams").optJSONObject(0, null)?.getStringOrNull("name"), scanlator = it.getJSONArray("teams").optJSONObject(0, null)?.getStringOrNull("name"),
@ -118,14 +116,14 @@ internal class WaMangaParser(
return images return images
.drop(1) // drop first, because of first is "Parent directory" link .drop(1) // drop first, because of first is "Parent directory" link
.map { img -> .map { img ->
val imageUrl = "${chapter.url}$img" val imageUrl = "${chapter.url}$img"
MangaPage( MangaPage(
id = generateUid(imageUrl), id = generateUid(imageUrl),
url = imageUrl, url = imageUrl,
preview = null, preview = null,
source = source, source = source,
) )
}.toList() }
} }
private suspend fun fetchAvailableTags(): Set<MangaTag> { private suspend fun fetchAvailableTags(): Set<MangaTag> {

Loading…
Cancel
Save