Fix saved manga index parsing

pull/72/head
Koitharu 5 years ago
parent 977da5b1b4
commit b139d5fca5
No known key found for this signature in database
GPG Key ID: 8E861F8CE6E7CE27

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

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

@ -223,7 +223,7 @@
<string name="queued">В очереди</string> <string name="queued">В очереди</string>
<string name="text_downloads_holder">На данный момент нет активных загрузок</string> <string name="text_downloads_holder">На данный момент нет активных загрузок</string>
<string name="chapter_is_missing">Глава отсутствует</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_summary">Помочь с переводом приложения</string>
<string name="about_app_translation">Перевод</string> <string name="about_app_translation">Перевод</string>
<string name="about_author">Автор</string> <string name="about_author">Автор</string>

Loading…
Cancel
Save