mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
Convert MangaDex (which is still unused) to kotlinx.serialization
This commit is contained in:
parent
8791334c36
commit
acab8ff781
1 changed files with 20 additions and 11 deletions
|
@ -1,10 +1,6 @@
|
||||||
package eu.kanade.tachiyomi.source.online.all
|
package eu.kanade.tachiyomi.source.online.all
|
||||||
|
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import com.github.salomonbrys.kotson.nullInt
|
|
||||||
import com.github.salomonbrys.kotson.nullString
|
|
||||||
import com.github.salomonbrys.kotson.obj
|
|
||||||
import com.google.gson.JsonParser
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
|
@ -17,6 +13,9 @@ import eu.kanade.tachiyomi.source.online.DelegatedHttpSource
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.async
|
import kotlinx.coroutines.async
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
import kotlinx.serialization.decodeFromString
|
||||||
|
import kotlinx.serialization.json.Json
|
||||||
import okhttp3.CacheControl
|
import okhttp3.CacheControl
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
@ -53,12 +52,10 @@ class MangaDex : DelegatedHttpSource() {
|
||||||
throw Exception("Null Response")
|
throw Exception("Null Response")
|
||||||
}
|
}
|
||||||
|
|
||||||
val jsonObject = JsonParser.parseString(body).obj
|
val jsonObject = Json.decodeFromString<MangaDexChapterData>(body)
|
||||||
val dataObject = jsonObject["data"].asJsonObject ?: throw Exception("Chapter not found")
|
val dataObject = jsonObject.data ?: throw Exception("Chapter not found")
|
||||||
val mangaId = dataObject["mangaId"]?.nullInt ?: throw Exception(
|
val mangaId = dataObject.mangaId ?: throw Exception("No manga associated with chapter")
|
||||||
"No manga associated with chapter"
|
val langCode = getRealLangCode(dataObject.language ?: "en").uppercase(Locale.getDefault())
|
||||||
)
|
|
||||||
val langCode = getRealLangCode(dataObject["language"]?.nullString ?: "en").uppercase(Locale.getDefault())
|
|
||||||
// Use the correct MangaDex source based on the language code, or the api will not return
|
// Use the correct MangaDex source based on the language code, or the api will not return
|
||||||
// the correct chapter list
|
// the correct chapter list
|
||||||
delegate = sourceManager.getOnlineSources().find { it.toString() == "MangaDex ($langCode)" }
|
delegate = sourceManager.getOnlineSources().find { it.toString() == "MangaDex ($langCode)" }
|
||||||
|
@ -81,7 +78,19 @@ class MangaDex : DelegatedHttpSource() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getRealLangCode(langCode: String): String {
|
@Serializable
|
||||||
|
private data class MangaDexChapterData(
|
||||||
|
val data: MangaDexChapterInfo? = null,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
private data class MangaDexChapterInfo(
|
||||||
|
val mangaId: Int? = null,
|
||||||
|
val language: String? = null,
|
||||||
|
)
|
||||||
|
|
||||||
|
private fun getRealLangCode(langCode: String): String {
|
||||||
return when (langCode.lowercase(Locale.getDefault())) {
|
return when (langCode.lowercase(Locale.getDefault())) {
|
||||||
"gb" -> "en"
|
"gb" -> "en"
|
||||||
"vn" -> "vi"
|
"vn" -> "vi"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue