From 9c60fbeb93cffc3d9e9143325184d2c3ea885ab2 Mon Sep 17 00:00:00 2001 From: Mike <51273546+SnakeDoc83@users.noreply.github.com> Date: Fri, 19 Jun 2020 18:25:58 -0400 Subject: [PATCH] MangaDex - fewer broken covers (#3569) * MangaDex - fewer broken covers * cleanup * use lq for re-request --- src/all/mangadex/build.gradle | 2 +- .../extension/all/mangadex/MangaDex.kt | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/all/mangadex/build.gradle b/src/all/mangadex/build.gradle index ee33dff5f..1f1bf4b57 100644 --- a/src/all/mangadex/build.gradle +++ b/src/all/mangadex/build.gradle @@ -5,7 +5,7 @@ ext { appName = 'Tachiyomi: MangaDex' pkgNameSuffix = 'all.mangadex' extClass = '.MangaDexFactory' - extVersionCode = 93 + extVersionCode = 94 libVersion = '1.2' } diff --git a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt index b1abd19cd..aaadca54f 100644 --- a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt +++ b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/MangaDex.kt @@ -35,6 +35,7 @@ import kotlin.collections.set import okhttp3.CacheControl import okhttp3.Headers import okhttp3.HttpUrl +import okhttp3.Interceptor import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -70,6 +71,7 @@ abstract class MangaDex( override val client: OkHttpClient = network.client.newBuilder() .addNetworkInterceptor(rateLimitInterceptor) + .addInterceptor(CoverInterceptor()) .build() private fun clientBuilder(): OkHttpClient = clientBuilder(getShowR18()) @@ -946,3 +948,20 @@ abstract class MangaDex( private var hasMangaPlus = false } } + +class CoverInterceptor : Interceptor { + private val coverRegex = Regex("""/images/.*\.jpg""") + + override fun intercept(chain: Interceptor.Chain): Response { + val originalRequest = chain.request() + + return chain.proceed(chain.request()).let { response -> + if (response.code() == 404 && originalRequest.url().toString().contains(coverRegex)) { + response.close() + chain.proceed(originalRequest.newBuilder().url(originalRequest.url().toString().substringBeforeLast(".") + ".thumb.jpg").build()) + } else { + response + } + } + } +}