diff --git a/src/en/zoro/build.gradle b/src/en/zoro/build.gradle index 5c3b33ada..2fcd2805e 100644 --- a/src/en/zoro/build.gradle +++ b/src/en/zoro/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'zoro.to (experimental)' pkgNameSuffix = 'en.zoro' extClass = '.Zoro' - extVersionCode = 2 + extVersionCode = 3 libVersion = '12' } diff --git a/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/GetSourcesInterceptor.kt b/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/GetSourcesInterceptor.kt deleted file mode 100644 index 559ba93ca..000000000 --- a/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/GetSourcesInterceptor.kt +++ /dev/null @@ -1,99 +0,0 @@ -package eu.kanade.tachiyomi.animeextension.en.zoro - -import android.annotation.SuppressLint -import android.app.Application -import android.os.Handler -import android.os.Looper -import android.webkit.WebResourceRequest -import android.webkit.WebResourceResponse -import android.webkit.WebSettings -import android.webkit.WebView -import android.webkit.WebViewClient -import eu.kanade.tachiyomi.network.GET -import okhttp3.Headers.Companion.toHeaders -import okhttp3.Interceptor -import okhttp3.OkHttpClient -import okhttp3.Request -import okhttp3.Response -import uy.kohesive.injekt.Injekt -import uy.kohesive.injekt.api.get -import java.io.IOException -import java.util.concurrent.CountDownLatch -import java.util.concurrent.TimeUnit - -class GetSourcesInterceptor(private val getSources: String, private val client: OkHttpClient) : Interceptor { - private val context = Injekt.get() - private val handler by lazy { Handler(Looper.getMainLooper()) } - - private val initWebView by lazy { - WebSettings.getDefaultUserAgent(context) - } - - @Synchronized - override fun intercept(chain: Interceptor.Chain): Response { - initWebView - - val request = chain.request() - - try { - val newRequest = resolveWithWebView(request) - - return chain.proceed(newRequest ?: request) - } catch (e: Exception) { - throw IOException(e) - } - } - - @SuppressLint("SetJavaScriptEnabled") - private fun resolveWithWebView(request: Request): Request? { - val latch = CountDownLatch(1) - - var webView: WebView? = null - - val origRequestUrl = request.url.toString() - val headers = request.headers.toMultimap().mapValues { it.value.getOrNull(0) ?: "" }.toMutableMap() - var newRequest: Request? = null - - handler.post { - val webview = WebView(context) - webView = webview - with(webview.settings) { - javaScriptEnabled = true - domStorageEnabled = true - databaseEnabled = true - useWideViewPort = false - loadWithOverviewMode = false - userAgentString = "Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.109 Safari/537.36 CrKey/1.54.248666" - } - webview.webViewClient = object : WebViewClient() { - override fun shouldInterceptRequest( - view: WebView, - request: WebResourceRequest - ): WebResourceResponse? { - val url = request.url.toString() - if (url.contains(getSources)) { - val newHeaders = request.requestHeaders.toHeaders() - newRequest = GET(url, newHeaders) - latch.countDown() - } - return super.shouldInterceptRequest(view, request) - } - } - - webView?.loadUrl(origRequestUrl, headers) - } - - latch.await(TIMEOUT_SEC, TimeUnit.SECONDS) - - handler.post { - webView?.stopLoading() - webView?.destroy() - webView = null - } - return newRequest - } - - companion object { - const val TIMEOUT_SEC: Long = 10 - } -} diff --git a/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/Zoro.kt b/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/Zoro.kt index 3bf6472db..155cbf24a 100644 --- a/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/Zoro.kt +++ b/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/Zoro.kt @@ -12,7 +12,6 @@ import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource import eu.kanade.tachiyomi.network.GET import okhttp3.Headers -import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response @@ -94,9 +93,10 @@ class Zoro : ConfigurableAnimeSource, ParsedAnimeHttpSource() { val unescapedData = JSONUtil.unescape(data) val serversHtml = Jsoup.parse(unescapedData) val videoList = mutableListOf