|
|
|
@ -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"),
|
|
|
|
@ -125,7 +123,7 @@ internal class WaMangaParser(
|
|
|
|
preview = null,
|
|
|
|
preview = null,
|
|
|
|
source = source,
|
|
|
|
source = source,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}.toList()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private suspend fun fetchAvailableTags(): Set<MangaTag> {
|
|
|
|
private suspend fun fetchAvailableTags(): Set<MangaTag> {
|
|
|
|
|