diff --git a/src/ru/libhentai/build.gradle b/src/ru/libhentai/build.gradle index eb155ed4b..65096e293 100644 --- a/src/ru/libhentai/build.gradle +++ b/src/ru/libhentai/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'HentaiLib' pkgNameSuffix = 'ru.libhentai' extClass = '.LibHentai' - extVersionCode = 6 + extVersionCode = 7 isNsfw = true } diff --git a/src/ru/libhentai/src/eu/kanade/tachiyomi/extension/ru/libhentai/LibHentai.kt b/src/ru/libhentai/src/eu/kanade/tachiyomi/extension/ru/libhentai/LibHentai.kt index 0a0326dfc..bfe4decbe 100644 --- a/src/ru/libhentai/src/eu/kanade/tachiyomi/extension/ru/libhentai/LibHentai.kt +++ b/src/ru/libhentai/src/eu/kanade/tachiyomi/extension/ru/libhentai/LibHentai.kt @@ -31,9 +31,12 @@ import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import okhttp3.Headers import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.Interceptor +import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response +import okhttp3.ResponseBody.Companion.toResponseBody import org.jsoup.nodes.Element import rx.Observable import uy.kohesive.injekt.Injekt @@ -63,13 +66,25 @@ class LibHentai : ConfigurableSource, HttpSource() { add("Accept", "image/webp,*/*;q=0.8") add("Referer", baseUrl) } - + private fun imageContentTypeIntercept(chain: Interceptor.Chain): Response { + val originalRequest = chain.request() + val response = chain.proceed(originalRequest) + val urlRequest = originalRequest.url.toString() + val possibleType = urlRequest.substringAfterLast("/").split(".") + return if (!urlRequest.contains(baseUrl) and (possibleType.size == 2)) { + val realType = possibleType[1] + val image = response.body?.byteString()?.toResponseBody("image/$realType".toMediaType()) + response.newBuilder().body(image).build() + } else + response + } private val authClient = network.cloudflareClient override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .addNetworkInterceptor(RateLimitInterceptor(3)) + .addInterceptor { imageContentTypeIntercept(it) } .addInterceptor { chain -> val originalRequest = chain.request() if (originalRequest.url.toString().contains(baseUrl)) diff --git a/src/ru/libmanga/build.gradle b/src/ru/libmanga/build.gradle index 3b46e5017..7577f06d8 100644 --- a/src/ru/libmanga/build.gradle +++ b/src/ru/libmanga/build.gradle @@ -6,7 +6,7 @@ ext { extName = 'MangaLib' pkgNameSuffix = 'ru.libmanga' extClass = '.LibManga' - extVersionCode = 62 + extVersionCode = 63 } dependencies { diff --git a/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt b/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt index 0ffb729c8..0fc66ae8b 100644 --- a/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt +++ b/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt @@ -31,9 +31,12 @@ import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import okhttp3.Headers import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import okhttp3.Interceptor +import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response +import okhttp3.ResponseBody.Companion.toResponseBody import org.jsoup.nodes.Element import rx.Observable import uy.kohesive.injekt.Injekt @@ -56,11 +59,23 @@ class LibManga : ConfigurableSource, HttpSource() { override val lang = "ru" override val supportsLatest = true - + private fun imageContentTypeIntercept(chain: Interceptor.Chain): Response { + val originalRequest = chain.request() + val response = chain.proceed(originalRequest) + val urlRequest = originalRequest.url.toString() + val possibleType = urlRequest.substringAfterLast("/").split(".") + return if (!urlRequest.contains(baseUrl) and (possibleType.size == 2)) { + val realType = possibleType[1] + val image = response.body?.byteString()?.toResponseBody("image/$realType".toMediaType()) + response.newBuilder().body(image).build() + } else + response + } override val client: OkHttpClient = network.cloudflareClient.newBuilder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .addNetworkInterceptor(RateLimitInterceptor(3)) + .addInterceptor { imageContentTypeIntercept(it) } .build() private val baseOrig: String = "https://mangalib.me"