diff --git a/src/en/animeowl/build.gradle b/src/en/animeowl/build.gradle index e5849d46..40b4fa1d 100644 --- a/src/en/animeowl/build.gradle +++ b/src/en/animeowl/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'AnimeOwl' extClass = '.AnimeOwl' - extVersionCode = 22 + extVersionCode = 23 } apply from: "$rootDir/common.gradle" diff --git a/src/en/animeowl/src/eu/kanade/tachiyomi/animeextension/en/animeowl/AnimeOwl.kt b/src/en/animeowl/src/eu/kanade/tachiyomi/animeextension/en/animeowl/AnimeOwl.kt index b53606e8..bb094dcc 100644 --- a/src/en/animeowl/src/eu/kanade/tachiyomi/animeextension/en/animeowl/AnimeOwl.kt +++ b/src/en/animeowl/src/eu/kanade/tachiyomi/animeextension/en/animeowl/AnimeOwl.kt @@ -44,8 +44,11 @@ class AnimeOwl : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override val supportsLatest = true - private val json: Json by injectLazy() - + private val json: Json by lazy { + Json { + ignoreUnknownKeys = true + coerceInputValues = true + } private val preferences: SharedPreferences by lazy { Injekt.get().getSharedPreferences("source_$id", 0x0000) } @@ -128,28 +131,35 @@ class AnimeOwl : ConfigurableAnimeSource, ParsedAnimeHttpSource() { override fun episodeListParse(response: Response): List { val document = response.asJsoup() val sub = document.select("#anime-cover-sub-content .episode-node").mapIndexed { idx, it -> - EpisodeResponse.Episode( - id = it.text().toDouble(), - episodeIndex = idx.toString(), - name = it.text(), - lang = "Sub", - href = it.attr("abs:href"), - ) - } + val episodeText = it.text().trim() + val episodeNumber = episodeText.toDoubleOrNull() ?: (idx + 1).toDouble() + + EpisodeResponse.Episode( + id = episodeNumber, + episodeIndex = idx.toString(), + name = episodeText, + lang = "Sub", + href = it.attr("abs:href"), + ) +} + val dub = document.select("#anime-cover-dub-content .episode-node").mapIndexed { idx, it -> - EpisodeResponse.Episode( - id = it.text().toDouble(), - episodeIndex = idx.toString(), - name = it.text(), - lang = "Dub", - href = it.attr("abs:href"), - ) - } + val episodeText = it.text().trim() + val episodeNumber = episodeText.toDoubleOrNull() ?: (idx + 1).toDouble() + + EpisodeResponse.Episode( + id = episodeNumber, + episodeIndex = idx.toString(), + name = episodeText, + lang = "Dub", + href = it.attr("abs:href"), + ) +} return listOf(sub, dub).flatten().groupBy { it.name }.map { (epNum, epList) -> SEpisode.create().apply { url = LinkData(epList.map { ep -> Link(ep.href!!, ep.lang!!) }).toJsonString() - episode_number = epNum.toFloatOrNull() ?: 0F + episode_number = epNum.filter { it.isDigit() || it == '.' }.toFloatOrNull() ?: 0F name = "Episode $epNum" } }.sortedByDescending { it.episode_number }