Catharsis World: Update domain and theme (#7565)
* update theme * fix chapterlist edge case
This commit is contained in:
		
							parent
							
								
									72665ad48c
								
							
						
					
					
						commit
						732949510a
					
				@ -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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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<X509Certificate> = emptyArray()
 | 
			
		||||
            override fun checkClientTrusted(certs: Array<X509Certificate>, authType: String) = Unit
 | 
			
		||||
            override fun checkServerTrusted(certs: Array<X509Certificate>, authType: String) = Unit
 | 
			
		||||
        }
 | 
			
		||||
    override fun popularMangaSelector() = "div.latest-poster"
 | 
			
		||||
 | 
			
		||||
        val insecureSocketFactory = SSLContext.getInstance("TLSv1.2").apply {
 | 
			
		||||
            val trustAllCerts = arrayOf<TrustManager>(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(")")
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user