[CuuTruyen] Fix attempt 1

master
dragonx943 1 year ago
parent 8ce6694232
commit f21aa282dd

@ -21,6 +21,7 @@ import org.koitharu.kotatsu.parsers.util.json.*
import java.net.HttpURLConnection import java.net.HttpURLConnection
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
import java.util.TimeZone
@MangaSourceParser("CUUTRUYEN", "Cứu Truyện", "vi") @MangaSourceParser("CUUTRUYEN", "Cứu Truyện", "vi")
internal class CuuTruyenParser(context: MangaLoaderContext) : internal class CuuTruyenParser(context: MangaLoaderContext) :
@ -55,6 +56,7 @@ internal class CuuTruyenParser(context: MangaLoaderContext) :
override suspend fun getFilterOptions(): MangaListFilterOptions { override suspend fun getFilterOptions(): MangaListFilterOptions {
return MangaListFilterOptions( return MangaListFilterOptions(
availableTags = availableTags(), availableTags = availableTags(),
availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED),
) )
} }
@ -130,20 +132,34 @@ internal class CuuTruyenParser(context: MangaLoaderContext) :
webClient.httpGet("$url/chapters").parseJson().getJSONArray("data") webClient.httpGet("$url/chapters").parseJson().getJSONArray("data")
} }
val json = webClient.httpGet(url).parseJson().getJSONObject("data") val json = webClient.httpGet(url).parseJson().getJSONObject("data")
val chapterDateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US) val chapterDateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.ROOT).apply {
timeZone = TimeZone.getTimeZone("GMT+7")
}
val tags = json.optJSONArray("tags")?.mapJSONToSet { jo ->
MangaTag(
title = jo.getString("name").toTitleCase(sourceLocale),
key = jo.getString("slug"),
source = source,
)
}.orEmpty()
// Testing: Add custom manga status using available tags
val state = when {
tags.any { it.key == "da-hoan-thanh" } -> MangaState.FINISHED
tags.any { it.key == "dang-tien-hanh" } -> MangaState.ONGOING
else -> null
}
// Remove old manga status from "tags"
val newTags = tags.filter { it.key != "da-hoan-thanh" && it.key != "dang-tien-hanh" }.toSet()
manga.copy( manga.copy(
title = json.getStringOrNull("name") ?: manga.title, title = json.getStringOrNull("name") ?: manga.title,
isNsfw = json.getBooleanOrDefault("is_nsfw", manga.isNsfw), isNsfw = json.getBooleanOrDefault("is_nsfw", manga.isNsfw),
author = json.optJSONObject("author")?.getStringOrNull("name")?.substringBefore(','), author = json.optJSONObject("author")?.getStringOrNull("name")?.substringBefore(','),
description = json.getString("full_description"), description = json.getString("full_description"),
tags = json.optJSONArray("tags")?.mapJSONToSet { jo -> tags = newTags,
MangaTag( state = state,
title = jo.getString("name").toTitleCase(sourceLocale),
key = jo.getString("slug"),
source = source,
)
}.orEmpty(),
chapters = chapters.await().mapJSON { jo -> chapters = chapters.await().mapJSON { jo ->
val chapterId = jo.getLong("id") val chapterId = jo.getLong("id")
val number = jo.getFloatOrDefault("number", 0f) val number = jo.getFloatOrDefault("number", 0f)

Loading…
Cancel
Save