Fix saved manga index parsing

This commit is contained in:
Koitharu
2021-10-20 18:49:59 +03:00
parent 977da5b1b4
commit b139d5fca5
3 changed files with 15 additions and 4 deletions

View File

@@ -7,6 +7,8 @@ import org.koitharu.kotatsu.core.model.Manga
import org.koitharu.kotatsu.core.model.MangaChapter
import org.koitharu.kotatsu.core.model.MangaSource
import org.koitharu.kotatsu.core.model.MangaTag
import org.koitharu.kotatsu.utils.ext.getBooleanOrDefault
import org.koitharu.kotatsu.utils.ext.getLongOrDefault
import org.koitharu.kotatsu.utils.ext.getStringOrNull
import org.koitharu.kotatsu.utils.ext.mapToSet
@@ -20,9 +22,11 @@ class MangaIndex(source: String?) {
json.put("title_alt", manga.altTitle)
json.put("url", manga.url)
json.put("public_url", manga.publicUrl)
json.put("author", manga.author)
json.put("cover", manga.coverUrl)
json.put("description", manga.description)
json.put("rating", manga.rating)
json.put("nsfw", manga.isNsfw)
json.put("source", manga.source.name)
json.put("cover_large", manga.largeCoverUrl)
json.put("tags", JSONArray().also { a ->
@@ -48,8 +52,11 @@ class MangaIndex(source: String?) {
altTitle = json.getStringOrNull("title_alt"),
url = json.getString("url"),
publicUrl = json.getStringOrNull("public_url").orEmpty(),
author = json.getStringOrNull("author"),
largeCoverUrl = json.getStringOrNull("cover_large"),
source = source,
rating = json.getDouble("rating").toFloat(),
isNsfw = json.getBooleanOrDefault("nsfw", false),
coverUrl = json.getString("cover"),
description = json.getStringOrNull("description"),
tags = json.getJSONArray("tags").mapToSet { x ->
@@ -59,7 +66,7 @@ class MangaIndex(source: String?) {
source = source
)
},
chapters = getChapters(json.getJSONObject("chapters"), source)
chapters = getChapters(json.getJSONObject("chapters"), source),
)
}.getOrNull()
@@ -100,10 +107,10 @@ class MangaIndex(source: String?) {
name = v.getString("name"),
url = v.getString("url"),
number = v.getInt("number"),
uploadDate = v.getLong("uploadDate"),
uploadDate = v.getLongOrDefault("uploadDate", 0L),
scanlator = v.getStringOrNull("scanlator"),
branch = v.getStringOrNull("branch"),
source = source
source = source,
)
)
}

View File

@@ -38,6 +38,10 @@ fun JSONObject.getBooleanOrDefault(name: String, defaultValue: Boolean): Boolean
it === JSONObject.NULL
} as? Boolean ?: defaultValue
fun JSONObject.getLongOrDefault(name: String, defaultValue: Long): Long = opt(name)?.takeUnless {
it === JSONObject.NULL
} as? Long ?: defaultValue
operator fun JSONArray.iterator(): Iterator<JSONObject> = JSONIterator(this)
private class JSONIterator(private val array: JSONArray) : Iterator<JSONObject> {

View File

@@ -223,7 +223,7 @@
<string name="queued">В очереди</string>
<string name="text_downloads_holder">На данный момент нет активных загрузок</string>
<string name="chapter_is_missing">Глава отсутствует</string>
<string name="chapter_is_missing_text">Эта глава отсутствует на вашем устройстве. Скачайте или прочитайте её онлайн.</string>
<string name="chapter_is_missing_text">Эта глава отсутствует на вашем устройстве. Загрузите её или читайте онлайн.</string>
<string name="about_app_translation_summary">Помочь с переводом приложения</string>
<string name="about_app_translation">Перевод</string>
<string name="about_author">Автор</string>