TempleScan(es): Update theme (#8331)

update theme
This commit is contained in:
bapeey 2025-04-02 08:49:38 -05:00 committed by Draff
parent 303b789fff
commit fd0fe685f5
Signed by: Draff
GPG Key ID: E8A89F3211677653
2 changed files with 44 additions and 33 deletions

View File

@ -1,9 +1,9 @@
ext { ext {
extName = 'Temple Scan' extName = 'Temple Scan'
extClass = '.TempleScanEsp' extClass = '.TempleScanEsp'
themePkg = 'mangaesp' themePkg = 'madara'
baseUrl = 'https://templescanesp.caserosvive.com.ar' baseUrl = 'https://templescanesp.caserosvive.com.ar'
overrideVersionCode = 36 overrideVersionCode = 0
isNsfw = true isNsfw = true
} }

View File

@ -1,49 +1,60 @@
package eu.kanade.tachiyomi.extension.es.templescanesp package eu.kanade.tachiyomi.extension.es.templescanesp
import eu.kanade.tachiyomi.multisrc.mangaesp.MangaEsp import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.util.asJsoup import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.FormBody import org.jsoup.nodes.Element
import okhttp3.Request import java.text.SimpleDateFormat
import okhttp3.Response import java.util.Locale
class TempleScanEsp : MangaEsp( class TempleScanEsp : Madara(
"Temple Scan", "Temple Scan",
"https://templescanesp.caserosvive.com.ar", "https://templescanesp.caserosvive.com.ar",
"es", "es",
apiBaseUrl = "https://apis.templescanesp.net", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("es")),
) { ) {
override val versionId = 4
// Site moved from custom theme to MangaEsp override val mangaSubString = "serie"
override val versionId = 3
override fun mangaDetailsRequest(manga: SManga): Request { override val useLoadMoreRequest = LoadMoreStrategy.Always
return super.mangaDetailsRequest(manga.apply { url = "$url?allow=true" })
override val client = super.client.newBuilder()
.rateLimitHost(baseUrl.toHttpUrl(), 3, 1)
.build()
override fun popularMangaSelector() = "div.latest-poster"
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"))
} }
override fun chapterListRequest(manga: SManga) = mangaDetailsRequest(manga) override fun searchMangaSelector() = "button.group > div.grid"
override fun pageListRequest(chapter: SChapter): Request { override fun searchMangaFromElement(element: Element) = SManga.create().apply {
return super.pageListRequest(chapter.apply { url = "$url?allow=true" }) title = element.selectFirst("h3")!!.text()
thumbnail_url = element.selectFirst("div[style].bg-cover")?.imageFromStyle()
setUrlWithoutDomain(element.selectFirst("a")!!.attr("href"))
} }
override fun pageListParse(response: Response): List<Page> { override val mangaDetailsSelectorTitle = "div.wp-manga div.grid > h1"
var doc = response.asJsoup() override val mangaDetailsSelectorStatus = "div.wp-manga div[alt=type]:eq(0) > span"
val form = doc.selectFirst("body > form[method=post]") override val mangaDetailsSelectorGenre = "div.wp-manga div[alt=type]:gt(0) > span"
if (form != null) { override val mangaDetailsSelectorDescription = "div.wp-manga div#expand_content"
val url = form.attr("action")
val headers = headersBuilder().set("Referer", doc.location()).build() override fun chapterListSelector() = "ul#list-chapters li > a"
val body = FormBody.Builder()
form.select("input").forEach { override fun chapterFromElement(element: Element) = SChapter.create().apply {
body.add(it.attr("name"), it.attr("value")) name = element.selectFirst("div.grid > span")!!.text()
} date_upload = element.selectFirst("div.grid > div")?.text()?.let { parseChapterDate(it) } ?: 0
doc = client.newCall(POST(url, headers, body.build())).execute().asJsoup() setUrlWithoutDomain(element.selectFirst("a")!!.attr("href"))
} }
return doc.select("main.contenedor.read img, main > img[src]").mapIndexed { i, element ->
Page(i, imageUrl = element.attr("abs:src")) private fun Element.imageFromStyle(): String {
} return this.attr("style").substringAfter("url(").substringBefore(")")
} }
} }