diff --git a/src/tr/animeler/build.gradle b/src/tr/animeler/build.gradle index 7d416a4d0..4918f39d5 100644 --- a/src/tr/animeler/build.gradle +++ b/src/tr/animeler/build.gradle @@ -8,7 +8,7 @@ ext { extName = 'Animeler' pkgNameSuffix = 'tr.animeler' extClass = '.Animeler' - extVersionCode = 5 + extVersionCode = 6 libVersion = '13' } diff --git a/src/tr/animeler/src/eu/kanade/tachiyomi/animeextension/tr/animeler/Animeler.kt b/src/tr/animeler/src/eu/kanade/tachiyomi/animeextension/tr/animeler/Animeler.kt index 6bdf0659b..637d9eebb 100644 --- a/src/tr/animeler/src/eu/kanade/tachiyomi/animeextension/tr/animeler/Animeler.kt +++ b/src/tr/animeler/src/eu/kanade/tachiyomi/animeextension/tr/animeler/Animeler.kt @@ -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 Response.parseBody(): T { + val body = use { it.body.string() } + .substringAfter("const anime = ") + .substringBefore("};") + "}" + + return json.decodeFromString(body) + } + override fun animeDetailsParse(response: Response) = SAnime.create().apply { - val body = response.use { it.body.string() } - .substringAfter("var anime = ") - .substringBefore("}<") + "}" - val animeDto = json.decodeFromString(body) + val animeDto = response.parseBody() 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 { - val body = response.use { it.body.string() } - .substringAfter("var episodes = ") - .substringBefore("];") + "]" + val episodes = response.parseBody().episodes - val episodes = json.decodeFromString>(body) - - return episodes.reversed().map { + return episodes.map { SEpisode.create().apply { setUrlWithoutDomain(it.url) name = "Bölüm " + it.meta.number diff --git a/src/tr/animeler/src/eu/kanade/tachiyomi/animeextension/tr/animeler/dto/AnimelerDto.kt b/src/tr/animeler/src/eu/kanade/tachiyomi/animeextension/tr/animeler/dto/AnimelerDto.kt index 5b19fabbd..77b4902ea 100644 --- a/src/tr/animeler/src/eu/kanade/tachiyomi/animeextension/tr/animeler/dto/AnimelerDto.kt +++ b/src/tr/animeler/src/eu/kanade/tachiyomi/animeextension/tr/animeler/dto/AnimelerDto.kt @@ -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.parseItems() = joinToString { it.name }.takeIf(String::isNotBlank) +@Serializable +data class AnimeEpisodes(val episodes: List) + @Serializable data class EpisodeDto( val url: String,