From d42f5c6cc68d1a65f9f8e7bd83b20f197d265ab2 Mon Sep 17 00:00:00 2001 From: Samfun75 <38332931+Samfun75@users.noreply.github.com> Date: Thu, 2 Mar 2023 09:39:26 +0300 Subject: [PATCH] UHDMovies: handle errors and fix some warnings and inconsistencies (#1351) --- src/en/uhdmovies/build.gradle | 2 +- .../animeextension/en/uhdmovies/UHDMovies.kt | 68 ++++++++++++------- 2 files changed, 45 insertions(+), 25 deletions(-) diff --git a/src/en/uhdmovies/build.gradle b/src/en/uhdmovies/build.gradle index 446a87fef..665c00957 100644 --- a/src/en/uhdmovies/build.gradle +++ b/src/en/uhdmovies/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'UHD Movies' pkgNameSuffix = 'en.uhdmovies' extClass = '.UHDMovies' - extVersionCode = 8 + extVersionCode = 9 libVersion = '13' } diff --git a/src/en/uhdmovies/src/eu/kanade/tachiyomi/animeextension/en/uhdmovies/UHDMovies.kt b/src/en/uhdmovies/src/eu/kanade/tachiyomi/animeextension/en/uhdmovies/UHDMovies.kt index 8c7e31d20..0d30d7e38 100644 --- a/src/en/uhdmovies/src/eu/kanade/tachiyomi/animeextension/en/uhdmovies/UHDMovies.kt +++ b/src/en/uhdmovies/src/eu/kanade/tachiyomi/animeextension/en/uhdmovies/UHDMovies.kt @@ -111,7 +111,7 @@ class UHDMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() { val resp = response.asJsoup() val episodeList = mutableListOf() val episodeElements = resp.select("p:has(a[href*=?id])[style*=center],p:has(a[href*=?id]):has(span.maxbutton-1-center)") - val qualityRegex = "[0-9]{3,4}p".toRegex(RegexOption.IGNORE_CASE) + val qualityRegex = "\\d{3,4}p".toRegex(RegexOption.IGNORE_CASE) val firstText = episodeElements.first()!!.text() if (firstText.contains("Episode", true) || firstText.contains("Zip", true) || @@ -119,16 +119,16 @@ class UHDMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() { ) { episodeElements.map { row -> val prevP = row.previousElementSibling()!! - val seasonRegex = "[ .]S(?:eason)?[ .]?([0-9]{1,2})[ .]".toRegex(RegexOption.IGNORE_CASE) + val seasonRegex = "[ .]S(?:eason)?[ .]?(\\d{1,2})[ .]".toRegex(RegexOption.IGNORE_CASE) val result = seasonRegex.find(prevP.text()) val season = ( result?.groups?.get(1)?.value ?: let { - val prevPre = row.previousElementSiblings()!!.prev("pre,div.mks_separator") + val prevPre = row.previousElementSiblings().prev("pre,div.mks_separator") val preResult = seasonRegex.find(prevPre.first()!!.text()) preResult?.groups?.get(1)?.value ?: let { val title = resp.select("h1.entry-title") - val titleResult = "[ .\\[(]S(?:eason)?[ .]?([0-9]{1,2})[ .\\])]".toRegex(RegexOption.IGNORE_CASE).find(title.text()) + val titleResult = "[ .\\[(]S(?:eason)?[ .]?(\\d{1,2})[ .\\])]".toRegex(RegexOption.IGNORE_CASE).find(title.text()) titleResult?.groups?.get(1)?.value ?: "-1" } } @@ -182,11 +182,17 @@ class UHDMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() { qualityMatchOwn?.value ?: "HD" } - val collectionName = row.previousElementSiblings()!!.prev("h1,h2,h3,pre").first()!!.text() - .replace("Download", "", true).trim() + val collectionName = row.previousElementSiblings().prev("h1,h2,h3,pre").first()!!.text() + .replace("Download", "", true).trim().let { + if (it.contains("Collection", true)) { + row.previousElementSibling()!!.ownText() + } else { + it + } + } row.select("a").map { linkElement -> - Triple(linkElement.attr("href")!!, quality, collectionName) + Triple(linkElement.attr("href"), quality, collectionName) } }.flatten().groupBy { it.third }.map { group -> collectionIdx++ @@ -236,6 +242,9 @@ class UHDMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() { }.getOrNull() }.flatten(), ) + + if (videoList.isEmpty()) throw Exception("No working links found") + return Observable.just(videoList.sort()) } @@ -269,6 +278,7 @@ class UHDMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() { val mediaResponse = client.newBuilder().followRedirects(false).build() .newCall(GET(redirectUrl)).execute() val path = mediaResponse.body.string().substringAfter("replace(\"").substringBefore("\"") + if (path == "/404") return Pair(emptyList(), "") val mediaUrl = "https://" + mediaResponse.request.url.host + path val videoList = mutableListOf