From 100ecb4aef746295dcc3bf135852042785ded9be Mon Sep 17 00:00:00 2001 From: xiaji Date: Tue, 9 Jun 2026 21:37:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20TvcatHandler=E6=90=9C=E7=B4=A2=E5=92=8C?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E4=BF=AE=E5=A4=8DUTF-8=E7=BC=96=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E7=94=A8Jsoup.parseBodyFragment=E6=9B=BF?= =?UTF-8?q?=E4=BB=A3parse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../videoapp/tv/engine/tvcat/TvcatHandler.kt | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/videoapp/tv/engine/tvcat/TvcatHandler.kt b/app/src/main/java/com/videoapp/tv/engine/tvcat/TvcatHandler.kt index 154587e..0bcf869 100644 --- a/app/src/main/java/com/videoapp/tv/engine/tvcat/TvcatHandler.kt +++ b/app/src/main/java/com/videoapp/tv/engine/tvcat/TvcatHandler.kt @@ -46,18 +46,19 @@ class TvcatHandler : BaseSourceHandler( val encoded = URLEncoder.encode(keyword, "UTF-8") val searchUrl = "https://tvcat.cc/search?q=$encoded" val conn = URL(searchUrl).openConnection() as HttpURLConnection - conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") - conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.9") + conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36") + conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8") + conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") conn.connectTimeout = 15000 conn.readTimeout = 15000 val html = if (conn.responseCode == 200) { - conn.inputStream.bufferedReader().use { it.readText() } + conn.inputStream.bufferedReader(Charsets.UTF_8).use { it.readText() } } else "" conn.disconnect() if (html.isEmpty()) return@withContext emptyList() - val doc = Jsoup.parse(html) + val doc = Jsoup.parseBodyFragment(html) val items = doc.select("li.col-md-2.col-sm-3.col-4") val resultsList = mutableListOf() @@ -103,17 +104,17 @@ class TvcatHandler : BaseSourceHandler( override suspend fun extractVideos(detailUrl: String): List = withContext(Dispatchers.IO) { val conn = URL(detailUrl).openConnection() as HttpURLConnection - conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") - conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.9") + conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36") + conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8") conn.connectTimeout = 15000 conn.readTimeout = 15000 val html = if (conn.responseCode == 200) { - conn.inputStream.bufferedReader().use { it.readText() } + conn.inputStream.bufferedReader(Charsets.UTF_8).use { it.readText() } } else "" conn.disconnect() if (html.isEmpty()) return@withContext emptyList() - val doc = Jsoup.parse(html) + val doc = Jsoup.parseBodyFragment(html) val episodes = doc.select("li.list-inline-item a").mapNotNull { ep -> val title = ep.text().trim() val href = ep.attr("href").trim()