fix(tr/animeler): Fix Json serialization in search, anime details and episode list pages (#2522)
This commit is contained in:
parent
6f3b46c04c
commit
48eba9986e
@ -8,7 +8,7 @@ ext {
|
||||
extName = 'Animeler'
|
||||
pkgNameSuffix = 'tr.animeler'
|
||||
extClass = '.Animeler'
|
||||
extVersionCode = 5
|
||||
extVersionCode = 6
|
||||
libVersion = '13'
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@ import android.app.Application
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.MultiSelectListPreference
|
||||
import androidx.preference.PreferenceScreen
|
||||
import eu.kanade.tachiyomi.animeextension.tr.animeler.dto.EpisodeDto
|
||||
import eu.kanade.tachiyomi.animeextension.tr.animeler.dto.AnimeEpisodes
|
||||
import eu.kanade.tachiyomi.animeextension.tr.animeler.dto.FullAnimeDto
|
||||
import eu.kanade.tachiyomi.animeextension.tr.animeler.dto.SearchRequestDto
|
||||
import eu.kanade.tachiyomi.animeextension.tr.animeler.dto.SearchResponseDto
|
||||
@ -76,7 +76,7 @@ class Animeler : AnimeHttpSource(), ConfigurableAnimeSource {
|
||||
val animes = results.data.map {
|
||||
SAnime.create().apply {
|
||||
setUrlWithoutDomain(it.url)
|
||||
thumbnail_url = it.image
|
||||
thumbnail_url = it.thumbnail
|
||||
title = it.title
|
||||
}
|
||||
}
|
||||
@ -161,14 +161,19 @@ class Animeler : AnimeHttpSource(), ConfigurableAnimeSource {
|
||||
}
|
||||
|
||||
// =========================== Anime Details ============================
|
||||
private inline fun <reified T> Response.parseBody(): T {
|
||||
val body = use { it.body.string() }
|
||||
.substringAfter("const anime = ")
|
||||
.substringBefore("};") + "}"
|
||||
|
||||
return json.decodeFromString<T>(body)
|
||||
}
|
||||
|
||||
override fun animeDetailsParse(response: Response) = SAnime.create().apply {
|
||||
val body = response.use { it.body.string() }
|
||||
.substringAfter("var anime = ")
|
||||
.substringBefore("}<") + "}"
|
||||
val animeDto = json.decodeFromString<FullAnimeDto>(body)
|
||||
val animeDto = response.parseBody<FullAnimeDto>()
|
||||
|
||||
setUrlWithoutDomain(animeDto.url)
|
||||
thumbnail_url = animeDto.image
|
||||
thumbnail_url = animeDto.thumbnail
|
||||
title = animeDto.title
|
||||
artist = animeDto.studios
|
||||
author = animeDto.producers
|
||||
@ -195,13 +200,9 @@ class Animeler : AnimeHttpSource(), ConfigurableAnimeSource {
|
||||
|
||||
// ============================== Episodes ==============================
|
||||
override fun episodeListParse(response: Response): List<SEpisode> {
|
||||
val body = response.use { it.body.string() }
|
||||
.substringAfter("var episodes = ")
|
||||
.substringBefore("];") + "]"
|
||||
val episodes = response.parseBody<AnimeEpisodes>().episodes
|
||||
|
||||
val episodes = json.decodeFromString<List<EpisodeDto>>(body)
|
||||
|
||||
return episodes.reversed().map {
|
||||
return episodes.map {
|
||||
SEpisode.create().apply {
|
||||
setUrlWithoutDomain(it.url)
|
||||
name = "Bölüm " + it.meta.number
|
||||
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.animeextension.tr.animeler.dto
|
||||
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.json.JsonPrimitive
|
||||
|
||||
@Serializable
|
||||
data class SearchResponseDto(
|
||||
@ -15,12 +16,19 @@ data class PostDto(
|
||||
val post_content: String? = null,
|
||||
)
|
||||
|
||||
@Serializable
|
||||
data class ThumbnailDto(private val featured_url: JsonPrimitive) {
|
||||
val url = if (featured_url.isString) featured_url.content else null
|
||||
}
|
||||
|
||||
@Serializable
|
||||
data class SimpleAnimeDto(
|
||||
val url: String,
|
||||
val image: String,
|
||||
val post: PostDto,
|
||||
private val image: String = "",
|
||||
private val images: ThumbnailDto? = null,
|
||||
) {
|
||||
val thumbnail = image.ifEmpty { images?.url }
|
||||
val title = post.post_title
|
||||
}
|
||||
|
||||
@ -49,12 +57,13 @@ data class SingleDto(
|
||||
@Serializable
|
||||
data class FullAnimeDto(
|
||||
val url: String,
|
||||
val image: String,
|
||||
val post: PostDto,
|
||||
val meta: MetaDto,
|
||||
private val taxonomies: TaxonomiesDto,
|
||||
|
||||
private val image: String = "",
|
||||
private val images: ThumbnailDto? = null,
|
||||
) {
|
||||
val thumbnail = image.ifEmpty { images?.url }
|
||||
val title = post.post_title
|
||||
|
||||
@Serializable
|
||||
@ -85,6 +94,9 @@ data class ItemDto(val name: String)
|
||||
|
||||
private fun List<ItemDto>.parseItems() = joinToString { it.name }.takeIf(String::isNotBlank)
|
||||
|
||||
@Serializable
|
||||
data class AnimeEpisodes(val episodes: List<EpisodeDto>)
|
||||
|
||||
@Serializable
|
||||
data class EpisodeDto(
|
||||
val url: String,
|
||||
|
Loading…
x
Reference in New Issue
Block a user