diff --git a/src/es/catharsisworld/build.gradle b/src/es/catharsisworld/build.gradle index 2446f47d2..01ccf012e 100644 --- a/src/es/catharsisworld/build.gradle +++ b/src/es/catharsisworld/build.gradle @@ -1,9 +1,9 @@ ext { extName = 'Catharsis World' extClass = '.CatharsisWorld' - themePkg = 'mangathemesia' - baseUrl = 'https://catharsisworld.com' - overrideVersionCode = 1 + themePkg = 'madara' + baseUrl = 'https://catharsisworld.kawi.lat' + overrideVersionCode = 0 isNsfw = true } diff --git a/src/es/catharsisworld/src/eu/kanade/tachiyomi/extension/es/catharsisworld/CatharsisWorld.kt b/src/es/catharsisworld/src/eu/kanade/tachiyomi/extension/es/catharsisworld/CatharsisWorld.kt index b494ddaf6..66abe4761 100644 --- a/src/es/catharsisworld/src/eu/kanade/tachiyomi/extension/es/catharsisworld/CatharsisWorld.kt +++ b/src/es/catharsisworld/src/eu/kanade/tachiyomi/extension/es/catharsisworld/CatharsisWorld.kt @@ -1,40 +1,57 @@ package eu.kanade.tachiyomi.extension.es.catharsisworld -import android.annotation.SuppressLint -import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia -import eu.kanade.tachiyomi.network.interceptor.rateLimit -import okhttp3.OkHttpClient -import java.security.SecureRandom -import java.security.cert.X509Certificate -import javax.net.ssl.SSLContext -import javax.net.ssl.TrustManager -import javax.net.ssl.X509TrustManager +import eu.kanade.tachiyomi.multisrc.madara.Madara +import eu.kanade.tachiyomi.network.interceptor.rateLimitHost +import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.source.model.SManga +import okhttp3.HttpUrl.Companion.toHttpUrl +import org.jsoup.nodes.Element -class CatharsisWorld : MangaThemesia( +class CatharsisWorld : Madara( "Catharsis World", - "https://catharsisworld.com", + "https://catharsisworld.kawi.lat", "es", ) { + override val versionId = 2 + + override val mangaSubString = "serie" + + override val useLoadMoreRequest = LoadMoreStrategy.Always + override val client = super.client.newBuilder() - .rateLimit(3) - .ignoreAllSSLErrors() + .rateLimitHost(baseUrl.toHttpUrl(), 3, 1) .build() - private fun OkHttpClient.Builder.ignoreAllSSLErrors(): OkHttpClient.Builder { - val naiveTrustManager = @SuppressLint("CustomX509TrustManager") - object : X509TrustManager { - override fun getAcceptedIssuers(): Array = emptyArray() - override fun checkClientTrusted(certs: Array, authType: String) = Unit - override fun checkServerTrusted(certs: Array, authType: String) = Unit - } + override fun popularMangaSelector() = "div.latest-poster" - val insecureSocketFactory = SSLContext.getInstance("TLSv1.2").apply { - val trustAllCerts = arrayOf(naiveTrustManager) - init(null, trustAllCerts, SecureRandom()) - }.socketFactory + override fun popularMangaFromElement(element: Element) = SManga.create().apply { + title = element.selectFirst("h3")!!.text() + thumbnail_url = element.selectFirst("a[style].bg-cover")?.imageFromStyle() + setUrlWithoutDomain(element.selectFirst("a")!!.attr("href")) + } - sslSocketFactory(insecureSocketFactory, naiveTrustManager) - hostnameVerifier { _, _ -> true } - return this + override fun searchMangaSelector() = "button.group > div.grid" + + override fun searchMangaFromElement(element: Element) = SManga.create().apply { + title = element.selectFirst("h3")!!.text() + thumbnail_url = element.selectFirst("div[style].bg-cover")?.imageFromStyle() + setUrlWithoutDomain(element.selectFirst("a")!!.attr("href")) + } + + override val mangaDetailsSelectorTitle = "div.wp-manga div.grid > h1" + override val mangaDetailsSelectorStatus = "div.wp-manga div[alt=type]:eq(0) > span" + override val mangaDetailsSelectorGenre = "div.wp-manga div[alt=type]:gt(0) > span" + override val mangaDetailsSelectorDescription = "div.wp-manga div#expand_content" + + override fun chapterListSelector() = "ul#list-chapters li > a" + + override fun chapterFromElement(element: Element) = SChapter.create().apply { + name = element.selectFirst("div.grid > span")!!.text() + date_upload = element.selectFirst("div.grid > div")?.text()?.let { parseChapterDate(it) } ?: 0 + setUrlWithoutDomain(element.selectFirst("a")!!.attr("href")) + } + + private fun Element.imageFromStyle(): String { + return this.attr("style").substringAfter("url(").substringBefore(")") } }