From 430ec3f5ada1ea10773a8667ef7a034cb7c25edb Mon Sep 17 00:00:00 2001 From: ZhendongWu <rsshinide38@gmail.com> Date: Sat, 22 Mar 2025 07:33:26 +0800 Subject: [PATCH] Hanime1:Fix the missing source for some videos. --- .../tachiyomi/animeextension/zh/hanime1/Hanime1.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/zh/hanime1/src/eu/kanade/tachiyomi/animeextension/zh/hanime1/Hanime1.kt b/src/zh/hanime1/src/eu/kanade/tachiyomi/animeextension/zh/hanime1/Hanime1.kt index ea346d16..1d64d8ae 100644 --- a/src/zh/hanime1/src/eu/kanade/tachiyomi/animeextension/zh/hanime1/Hanime1.kt +++ b/src/zh/hanime1/src/eu/kanade/tachiyomi/animeextension/zh/hanime1/Hanime1.kt @@ -100,13 +100,23 @@ class Hanime1 : AnimeHttpSource(), ConfigurableAnimeSource { } 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) return sourceList.map { val quality = it.attr("size") val url = it.attr("src") 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)