From 7ad4d564260a99454baabc18a230edd91d0dd997 Mon Sep 17 00:00:00 2001 From: Chopper <156493704+choppeh@users.noreply.github.com> Date: Tue, 11 Mar 2025 09:34:07 -0300 Subject: [PATCH] DiskusScan: Fix popular and latestUpdate (#8016) Fix loading popular and latestUpdate --- src/pt/diskusscan/build.gradle | 2 +- .../extension/pt/diskusscan/DiskusScan.kt | 119 +----------------- 2 files changed, 2 insertions(+), 119 deletions(-) diff --git a/src/pt/diskusscan/build.gradle b/src/pt/diskusscan/build.gradle index 134d4e96e..ffc060c80 100644 --- a/src/pt/diskusscan/build.gradle +++ b/src/pt/diskusscan/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.DiskusScan' themePkg = 'mangathemesia' baseUrl = 'https://diskusscan.online' - overrideVersionCode = 13 + overrideVersionCode = 14 isNsfw = false } diff --git a/src/pt/diskusscan/src/eu/kanade/tachiyomi/extension/pt/diskusscan/DiskusScan.kt b/src/pt/diskusscan/src/eu/kanade/tachiyomi/extension/pt/diskusscan/DiskusScan.kt index 66e719a32..497cac8e3 100644 --- a/src/pt/diskusscan/src/eu/kanade/tachiyomi/extension/pt/diskusscan/DiskusScan.kt +++ b/src/pt/diskusscan/src/eu/kanade/tachiyomi/extension/pt/diskusscan/DiskusScan.kt @@ -1,27 +1,10 @@ package eu.kanade.tachiyomi.extension.pt.diskusscan -import android.annotation.SuppressLint -import android.app.Application -import android.os.Build -import android.os.Handler -import android.os.Looper -import android.webkit.WebResourceRequest -import android.webkit.WebResourceResponse -import android.webkit.WebView -import android.webkit.WebViewClient -import androidx.annotation.RequiresApi import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia -import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.interceptor.rateLimit import eu.kanade.tachiyomi.source.model.SManga -import okhttp3.Headers -import okhttp3.Request -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get import java.text.SimpleDateFormat import java.util.Locale -import java.util.concurrent.CountDownLatch -import java.util.concurrent.TimeUnit class DiskusScan : MangaThemesia( "Diskus Scan", @@ -33,109 +16,10 @@ class DiskusScan : MangaThemesia( // Changed their theme from Madara to MangaThemesia. override val versionId = 2 - private var challengeHeaders: Headers? = null - override val client = super.client.newBuilder() - .addInterceptor { chain -> - if (challengeHeaders != null) { - val request = chain.request().newBuilder() - .headers(challengeHeaders!!) - .build() - - val response = chain.proceed(request) - - if (response.isSuccessful) { - return@addInterceptor response - } - } - - chain.proceed(resolveChallenge(chain.request())) - } - .rateLimit(1, 2, TimeUnit.SECONDS) + .rateLimit(2) .build() - @SuppressLint("SetJavaScriptEnabled") - private fun resolveChallenge(origin: Request): Request { - val latch = CountDownLatch(1) - val headers = Headers.Builder() - - Handler(Looper.getMainLooper()).post { - val webView = WebView(Injekt.get()) - with(webView.settings) { - javaScriptEnabled = true - blockNetworkImage = true - } - webView.webViewClient = object : WebViewClient() { - override fun onPageFinished(view: WebView?, url: String) { - view?.apply { - evaluateJavascript("document.documentElement.outerHTML") { html -> - if ("challenge" in html) { - return@evaluateJavascript - } - latch.countDown() - } - } - } - - @RequiresApi(Build.VERSION_CODES.N) - override fun shouldInterceptRequest( - view: WebView?, - request: WebResourceRequest, - ): WebResourceResponse? { - val ignore = listOf(".css", ".js", ".php", ".ico", "google", "fonts") - val url = request.url.toString() - if (ignore.any { url.contains(it, ignoreCase = true) }) { - return emptyResource() - } - - if (request.isOriginRequest()) { - for ((key, value) in request.requestHeaders) { - headers[key] = value - } - } - return super.shouldInterceptRequest(view, request) - } - - private fun WebResourceRequest.isOriginRequest(): Boolean = - this.url.toString().equals(origin.url.toString(), true) - - private fun emptyResource() = WebResourceResponse(null, null, null) - } - webView.loadUrl(origin.url.toString()) - } - - latch.await(client.callTimeoutMillis.toLong(), TimeUnit.MILLISECONDS) - - challengeHeaders = origin.headers.newBuilder().let { - for ((key, value) in headers.build()) { - it[key] = value - } - it.build() - } - - return origin.newBuilder() - .headers(challengeHeaders!!) - .build() - } - - override fun headersBuilder() = super.headersBuilder() - .set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7") - .set("Accept-Language", "pt-BR,en-US;q=0.7,en;q=0.3") - .set("Alt-Used", baseUrl.substringAfterLast("/")) - .set("Sec-Fetch-Dest", "document") - .set("Sec-Fetch-Mode", "navigate") - .set("Sec-Fetch-Site", "same-origin") - .set("Sec-Fetch-User", "?1") - - // =========================== Manga Details ============================ - override fun mangaDetailsRequest(manga: SManga): Request { - val newHeaders = headersBuilder() - .set("Referer", baseUrl + mangaUrlDirectory) - .build() - - return GET(baseUrl + manga.url, newHeaders) - } - override val seriesAuthorSelector = ".infotable tr:contains(Autor) td:last-child" override val seriesDescriptionSelector = ".entry-content[itemprop=description] > *:not([class^=disku])" @@ -146,6 +30,5 @@ class DiskusScan : MangaThemesia( else -> SManga.UNKNOWN } - // ============================== Chapters ============================== override fun chapterListRequest(manga: SManga) = mangaDetailsRequest(manga) }