WIP: (en/animeowl) Solving NumerFormat expection #757

Closed
Arkai1 wants to merge 4 commits from Arkai1-patch-1 into main
2 changed files with 30 additions and 20 deletions

View file

@ -1,7 +1,7 @@
ext { ext {
extName = 'AnimeOwl' extName = 'AnimeOwl'
extClass = '.AnimeOwl' extClass = '.AnimeOwl'
extVersionCode = 22 extVersionCode = 23
} }
apply from: "$rootDir/common.gradle" apply from: "$rootDir/common.gradle"

View file

@ -44,8 +44,11 @@ class AnimeOwl : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override val supportsLatest = true 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 { private val preferences: SharedPreferences by lazy {
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000) Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
} }
@ -128,28 +131,35 @@ class AnimeOwl : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override fun episodeListParse(response: Response): List<SEpisode> { override fun episodeListParse(response: Response): List<SEpisode> {
val document = response.asJsoup() val document = response.asJsoup()
val sub = document.select("#anime-cover-sub-content .episode-node").mapIndexed { idx, it -> val sub = document.select("#anime-cover-sub-content .episode-node").mapIndexed { idx, it ->
EpisodeResponse.Episode( val episodeText = it.text().trim()
id = it.text().toDouble(), val episodeNumber = episodeText.toDoubleOrNull() ?: (idx + 1).toDouble()
episodeIndex = idx.toString(),
name = it.text(), EpisodeResponse.Episode(
lang = "Sub", id = episodeNumber,
href = it.attr("abs:href"), 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 -> val dub = document.select("#anime-cover-dub-content .episode-node").mapIndexed { idx, it ->
EpisodeResponse.Episode( val episodeText = it.text().trim()
id = it.text().toDouble(), val episodeNumber = episodeText.toDoubleOrNull() ?: (idx + 1).toDouble()
episodeIndex = idx.toString(),
name = it.text(), EpisodeResponse.Episode(
lang = "Dub", id = episodeNumber,
href = it.attr("abs:href"), episodeIndex = idx.toString(),
) name = episodeText,
} lang = "Dub",
href = it.attr("abs:href"),
)
}
return listOf(sub, dub).flatten().groupBy { it.name }.map { (epNum, epList) -> return listOf(sub, dub).flatten().groupBy { it.name }.map { (epNum, epList) ->
SEpisode.create().apply { SEpisode.create().apply {
url = LinkData(epList.map { ep -> Link(ep.href!!, ep.lang!!) }).toJsonString() 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" name = "Episode $epNum"
} }
}.sortedByDescending { it.episode_number } }.sortedByDescending { it.episode_number }