From 80ae2879fd4a10a67270c71df5131520fb81b432 Mon Sep 17 00:00:00 2001 From: bapeey <90949336+bapeey@users.noreply.github.com> Date: Fri, 10 Nov 2023 08:28:51 -0500 Subject: [PATCH] LectorManga: Fix images not loading (#18911) * Fix ssl * Only in img1.japanreader --- src/es/lectormanga/build.gradle | 2 +- .../extension/es/lectormanga/LectorManga.kt | 56 ++++++++++++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/src/es/lectormanga/build.gradle b/src/es/lectormanga/build.gradle index 889eb2d08..18ac05c77 100755 --- a/src/es/lectormanga/build.gradle +++ b/src/es/lectormanga/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'LectorManga' pkgNameSuffix = 'es.lectormanga' extClass = '.LectorManga' - extVersionCode = 29 + extVersionCode = 30 isNsfw = true } diff --git a/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt b/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt index 4f478e151..3ce846e82 100755 --- a/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt +++ b/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt @@ -2,6 +2,11 @@ package eu.kanade.tachiyomi.extension.es.lectormanga import android.app.Application import android.content.SharedPreferences +import android.os.Handler +import android.os.Looper +import android.view.View +import android.webkit.WebView +import android.webkit.WebViewClient import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.asObservableSuccess @@ -28,6 +33,7 @@ import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import java.text.SimpleDateFormat import java.util.Locale +import java.util.concurrent.CountDownLatch class LectorManga : ConfigurableSource, ParsedHttpSource() { @@ -44,12 +50,17 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() { .add("Referer", "$baseUrl/") } - private val imageCDNUrls = arrayOf("https://img1.followmanga.com", "https://img1.biggestchef.com", "https://img1.indalchef.com", "https://img1.recipesandcook.com") + private val imageCDNUrls = arrayOf( + "https://img1.followmanga.com", "https://img1.biggestchef.com", + "https://img1.indalchef.com", "https://img1.recipesandcook.com", + "https://img1.cyclingte.com", "https://img1.japanreader.com", + ) private val preferences: SharedPreferences by lazy { Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000) } + private var loadWebView = true override val client: OkHttpClient = network.client.newBuilder() .rateLimitHost( baseUrl.toHttpUrlOrNull()!!, @@ -76,6 +87,49 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() { preferences.getString(IMAGE_CDN_RATELIMIT_PREF, IMAGE_CDN_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(), 60, ) + .rateLimitHost( + imageCDNUrls[4].toHttpUrlOrNull()!!, + preferences.getString(IMAGE_CDN_RATELIMIT_PREF, IMAGE_CDN_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(), + 60, + ) + .rateLimitHost( + imageCDNUrls[5].toHttpUrlOrNull()!!, + preferences.getString(IMAGE_CDN_RATELIMIT_PREF, IMAGE_CDN_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(), + 60, + ) + .addInterceptor { chain -> + val request = chain.request() + val url = request.url.toString() + if (url.startsWith("https://img1.japanreader.com") && loadWebView) { + val handler = Handler(Looper.getMainLooper()) + val latch = CountDownLatch(1) + var webView: WebView? = null + handler.post { + val webview = WebView(Injekt.get<Application>()) + webView = webview + webview.settings.domStorageEnabled = true + webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null) + webview.settings.useWideViewPort = false + webview.settings.loadWithOverviewMode = false + + webview.webViewClient = object : WebViewClient() { + override fun onPageFinished(view: WebView?, url: String?) { + latch.countDown() + } + } + + val headers = mutableMapOf<String, String>() + headers["Referer"] = baseUrl + + webview.loadUrl(url, headers) + } + + latch.await() + loadWebView = false + handler.post { webView?.destroy() } + } + chain.proceed(request) + } .build() override fun popularMangaRequest(page: Int) = GET("$baseUrl/library?order_item=likes_count&order_dir=desc&type=&filter_by=title&page=$page", headers)