Make MangaDex load images more consistently (#8102)
* Make fetching the md@h url less likely to break * import TimeUnit
This commit is contained in:
parent
695cdcb57e
commit
955c0891f8
|
@ -6,7 +6,7 @@ ext {
|
|||
extName = 'MangaDex'
|
||||
pkgNameSuffix = 'all.mangadex'
|
||||
extClass = '.MangaDexFactory'
|
||||
extVersionCode = 123
|
||||
extVersionCode = 124
|
||||
libVersion = '1.2'
|
||||
containsNsfw = true
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import okhttp3.Request
|
|||
import org.jsoup.parser.Parser
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class MangaDexHelper() {
|
||||
|
||||
|
@ -106,6 +107,12 @@ class MangaDexHelper() {
|
|||
// chapter url where we get the token, last request time
|
||||
private val tokenTracker = hashMapOf<String, Long>()
|
||||
|
||||
companion object {
|
||||
val USE_CACHE = CacheControl.Builder()
|
||||
.maxStale(Integer.MAX_VALUE, TimeUnit.SECONDS)
|
||||
.build()
|
||||
}
|
||||
|
||||
// Check the token map to see if the md@home host is still valid
|
||||
fun getValidImageUrlForPage(page: Page, headers: Headers, client: OkHttpClient): Request {
|
||||
val data = page.url.split(",")
|
||||
|
@ -123,7 +130,7 @@ class MangaDexHelper() {
|
|||
) {
|
||||
CacheControl.FORCE_NETWORK
|
||||
} else {
|
||||
CacheControl.FORCE_CACHE
|
||||
USE_CACHE
|
||||
}
|
||||
getMdAtHomeUrl(tokenRequestUrl, client, headers, cacheControl)
|
||||
}
|
||||
|
@ -145,6 +152,14 @@ class MangaDexHelper() {
|
|||
}
|
||||
val response =
|
||||
client.newCall(GET(tokenRequestUrl, headers, cacheControl)).execute()
|
||||
|
||||
// This check is for the error that causes pages to fail to load.
|
||||
// It should never be entered, but in case it is, we retry the request.
|
||||
if (response.code == 504) {
|
||||
Log.wtf("MangaDex", "Failed to read cache for \"$tokenRequestUrl\"")
|
||||
return getMdAtHomeUrl(tokenRequestUrl, client, headers, CacheControl.FORCE_NETWORK)
|
||||
}
|
||||
|
||||
return json.decodeFromString<AtHomeDto>(response.body!!.string()).baseUrl
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue