Hanime1: Filter ads from search results and more #846

Merged
AlphaBoom merged 4 commits from hanime into main 2025-03-24 13:29:26 -05:00
Showing only changes of commit 430ec3f5ad - Show all commits

View file

@ -100,13 +100,23 @@ class Hanime1 : AnimeHttpSource(), ConfigurableAnimeSource {
} }
override fun videoListParse(response: Response): List<Video> { override fun videoListParse(response: Response): List<Video> {
val sourceList = response.asJsoup().select("video source") val doc = response.asJsoup()
val sourceList = doc.select("video source")
val preferQuality = preferences.getString(PREF_KEY_VIDEO_QUALITY, DEFAULT_QUALITY) val preferQuality = preferences.getString(PREF_KEY_VIDEO_QUALITY, DEFAULT_QUALITY)
return sourceList.map { return sourceList.map {
val quality = it.attr("size") val quality = it.attr("size")
val url = it.attr("src") val url = it.attr("src")
Video(url, "${quality}P", videoUrl = url) Video(url, "${quality}P", videoUrl = url)
}.sortedByDescending { preferQuality == it.quality } }.filterNot { it.videoUrl?.startsWith("blob") == true }
.sortedByDescending { preferQuality == it.quality }
.ifEmpty {
// found source from script content
val videoUrl = doc.select("script[type=application/ld+json]").first()!!.data().let {
val info = json.decodeFromString<JsonElement>(it).jsonObject
info["contentUrl"]!!.jsonPrimitive.content
}
listOf(Video(videoUrl, "Raw", videoUrl = videoUrl))
}
} }
override fun latestUpdatesParse(response: Response): AnimesPage = searchAnimeParse(response) override fun latestUpdatesParse(response: Response): AnimesPage = searchAnimeParse(response)