mycima: replace gson with serialization

This commit is contained in:
jmir1
2021-12-18 16:57:04 +01:00
parent 464ea6928a
commit b69d1586d7
2 changed files with 22 additions and 8 deletions

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import com.google.gson.JsonParser
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
@ -14,6 +13,11 @@ import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonArray
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import okhttp3.Headers.Companion.toHeaders import okhttp3.Headers.Companion.toHeaders
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.Request import okhttp3.Request
@ -22,6 +26,7 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
import java.lang.Exception import java.lang.Exception
class MyCima : ConfigurableAnimeSource, ParsedAnimeHttpSource() { class MyCima : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
@ -40,6 +45,8 @@ class MyCima : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000) Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
} }
private val json: Json by injectLazy()
// Popular Anime // Popular Anime
override fun popularAnimeSelector(): String = "div.Grid--MycimaPosts div.GridItem div.Thumb--GridItem" override fun popularAnimeSelector(): String = "div.Grid--MycimaPosts div.GridItem div.Thumb--GridItem"
@ -113,10 +120,10 @@ class MyCima : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
if (script != null) { if (script != null) {
val videosString = script.data().substringAfter("sources: [") val videosString = script.data().substringAfter("sources: [")
.substringBefore("]").substringBeforeLast(",") .substringBefore("]").substringBeforeLast(",")
val videosArray = JsonParser.parseString("[$videosString]").asJsonArray val videosArray = json.decodeFromString<JsonArray>("[$videosString]")
for (video in videosArray) { for (video in videosArray) {
val format = video.asJsonObject.get("format").asString val format = video.jsonObject["format"]!!.jsonPrimitive.content
val url = video.asJsonObject.get("src").asString val url = video.jsonObject["src"]!!.jsonPrimitive.content
if (format != "auto") { if (format != "auto") {
videoList.add(Video(url, format, url, null)) videoList.add(Video(url, format, url, null))
} }

View File

@ -4,7 +4,6 @@ import android.app.Application
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import com.google.gson.JsonParser
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilter
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
@ -14,6 +13,11 @@ import eu.kanade.tachiyomi.animesource.model.Video
import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.util.asJsoup import eu.kanade.tachiyomi.util.asJsoup
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonArray
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import okhttp3.Headers.Companion.toHeaders import okhttp3.Headers.Companion.toHeaders
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.Request import okhttp3.Request
@ -22,6 +26,7 @@ import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
import java.lang.Exception import java.lang.Exception
class MyCimaMovie : ConfigurableAnimeSource, ParsedAnimeHttpSource() { class MyCimaMovie : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
@ -40,6 +45,8 @@ class MyCimaMovie : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000) Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
} }
private val json: Json by injectLazy()
// Popular Anime // Popular Anime
override fun popularAnimeSelector(): String = "div.Grid--MycimaPosts div.GridItem div.Thumb--GridItem" override fun popularAnimeSelector(): String = "div.Grid--MycimaPosts div.GridItem div.Thumb--GridItem"
@ -93,10 +100,10 @@ class MyCimaMovie : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
if (script != null) { if (script != null) {
val videosString = script.data().substringAfter("sources: [") val videosString = script.data().substringAfter("sources: [")
.substringBefore("]").substringBeforeLast(",") .substringBefore("]").substringBeforeLast(",")
val videosArray = JsonParser.parseString("[$videosString]").asJsonArray val videosArray = json.decodeFromString<JsonArray>("[$videosString]")
for (video in videosArray) { for (video in videosArray) {
val format = video.asJsonObject.get("format").asString val format = video.jsonObject["format"]!!.jsonPrimitive.content
val url = video.asJsonObject.get("src").asString val url = video.jsonObject["src"]!!.jsonPrimitive.content
if (format != "auto") { if (format != "auto") {
videoList.add(Video(url, format, url, null)) videoList.add(Video(url, format, url, null))
} }