fix(en/uhdmovies): Fix crashes when fetching the current baseUrl (#2605)

This commit is contained in:
Claudemirovsky 2023-12-05 06:44:16 -03:00 committed by GitHub
parent aef6ac42d7
commit cbc63acfcf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 17 deletions

View File

@ -8,7 +8,7 @@ ext {
extName = 'UHD Movies' extName = 'UHD Movies'
pkgNameSuffix = 'en.uhdmovies' pkgNameSuffix = 'en.uhdmovies'
extClass = '.UHDMovies' extClass = '.UHDMovies'
extVersionCode = 18 extVersionCode = 19
libVersion = '13' libVersion = '13'
} }

View File

@ -38,24 +38,29 @@ class UHDMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override val name = "UHD Movies" override val name = "UHD Movies"
override val baseUrl by lazy { override val baseUrl by lazy {
val url = preferences.getString(PREF_DOMAIN_KEY, PREF_DOMAIN_DEFAULT)!! preferences.getString(PREF_DOMAIN_KEY, PREF_DOMAIN_DEFAULT)!!
}
private val currentBaseUrl by lazy {
runCatching {
runBlocking { runBlocking {
withContext(Dispatchers.Default) { withContext(Dispatchers.Default) {
client.newBuilder() client.newBuilder()
.followRedirects(false) .followRedirects(false)
.build() .build()
.newCall(GET("$url/")).execute().use { resp -> .newCall(GET("$baseUrl/")).execute().use { resp ->
when (resp.code) { when (resp.code) {
301 -> { 301 -> {
(resp.headers["location"]?.substringBeforeLast("/") ?: url).also { (resp.headers["location"]?.substringBeforeLast("/") ?: baseUrl).also {
preferences.edit().putString(PREF_DOMAIN_KEY, it).apply() preferences.edit().putString(PREF_DOMAIN_KEY, it).apply()
} }
} }
else -> url else -> baseUrl
} }
} }
} }
} }
}.getOrDefault(baseUrl)
} }
override val lang = "en" override val lang = "en"
@ -71,7 +76,7 @@ class UHDMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} }
// ============================== Popular =============================== // ============================== Popular ===============================
override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/page/$page/") override fun popularAnimeRequest(page: Int): Request = GET("$currentBaseUrl/page/$page/")
override fun popularAnimeSelector(): String = "div#content div.gridlove-posts > div.layout-masonry" override fun popularAnimeSelector(): String = "div#content div.gridlove-posts > div.layout-masonry"
@ -97,7 +102,7 @@ class UHDMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
// =============================== Search =============================== // =============================== Search ===============================
override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request { override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList): Request {
val cleanQuery = query.replace(" ", "+").lowercase() val cleanQuery = query.replace(" ", "+").lowercase()
return GET("$baseUrl/page/$page/?s=$cleanQuery") return GET("$currentBaseUrl/page/$page/?s=$cleanQuery")
} }
override fun searchAnimeSelector(): String = popularAnimeSelector() override fun searchAnimeSelector(): String = popularAnimeSelector()
@ -116,6 +121,8 @@ class UHDMovies : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
} }
// ============================== Episodes ============================== // ============================== Episodes ==============================
override fun episodeListRequest(anime: SAnime) = GET(currentBaseUrl + anime.url, headers)
private fun Regex.firstValue(text: String) = private fun Regex.firstValue(text: String) =
find(text)?.groupValues?.get(1)?.let { Pair(text, it) } find(text)?.groupValues?.get(1)?.let { Pair(text, it) }