From a607d7024d0962f1c48385199fbc72a94ea11259 Mon Sep 17 00:00:00 2001 From: bapeey <90949336+bapeey@users.noreply.github.com> Date: Sat, 12 Apr 2025 01:40:57 -0500 Subject: [PATCH] LectorJpg: Change theme (#8441) * change theme * bump versionId --- src/es/lectorjpg/build.gradle | 2 +- .../extension/es/lectorjpg/LectorJpg.kt | 79 ++++++++++++++++++- 2 files changed, 76 insertions(+), 5 deletions(-) diff --git a/src/es/lectorjpg/build.gradle b/src/es/lectorjpg/build.gradle index 1888deb98..ddf13f00b 100644 --- a/src/es/lectorjpg/build.gradle +++ b/src/es/lectorjpg/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'LectorJPG' extClass = '.LectorJpg' - themePkg = 'mangaesp' + themePkg = 'madara' baseUrl = 'https://lectorjpg.com' overrideVersionCode = 0 isNsfw = true diff --git a/src/es/lectorjpg/src/eu/kanade/tachiyomi/extension/es/lectorjpg/LectorJpg.kt b/src/es/lectorjpg/src/eu/kanade/tachiyomi/extension/es/lectorjpg/LectorJpg.kt index afeee6392..5b6c1eab6 100644 --- a/src/es/lectorjpg/src/eu/kanade/tachiyomi/extension/es/lectorjpg/LectorJpg.kt +++ b/src/es/lectorjpg/src/eu/kanade/tachiyomi/extension/es/lectorjpg/LectorJpg.kt @@ -1,10 +1,81 @@ package eu.kanade.tachiyomi.extension.es.lectorjpg -import eu.kanade.tachiyomi.multisrc.mangaesp.MangaEsp +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.Document +import org.jsoup.nodes.Element +import java.text.SimpleDateFormat +import java.util.Locale -class LectorJpg : MangaEsp( +class LectorJpg : Madara( "LectorJPG", "https://lectorjpg.com", "es", - "https://apis.pichulasjpg.xyz", -) + dateFormat = SimpleDateFormat("d MMMM, yyyy", Locale("es")), +) { + + override val versionId = 2 + + override val mangaSubString = "serie" + + override val useLoadMoreRequest = LoadMoreStrategy.Always + + override val client = super.client.newBuilder() + .rateLimitHost(baseUrl.toHttpUrl(), 3, 1) + .build() + + override fun popularMangaSelector() = "div:not([class]):has(> div.break-words)" + + override fun popularMangaFromElement(element: Element) = SManga.create().apply { + title = element.selectFirst("h3")!!.text() + thumbnail_url = element.selectFirst("img")?.let { imageFromElement(it) } + setUrlWithoutDomain(element.selectFirst("a")!!.attr("href")) + } + + 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")?.let { imageFromElement(it) } + 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 val mangaDetailsSelectorThumbnail = "div.grid.border div.bg-cover" + + 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")) + } + + override fun parseGenres(document: Document): List { + return document.select("div:has(> input[type=checkbox])") + .orEmpty() + .map { li -> + Genre( + li.selectFirst("label")!!.text(), + li.selectFirst("input[type=checkbox]")!!.`val`(), + ) + } + } + + override fun imageFromElement(element: Element): String? { + return when { + element.hasAttr("data-src") -> element.attr("abs:data-src") + element.hasAttr("data-lazy-src") -> element.attr("abs:data-lazy-src") + element.hasAttr("srcset") -> element.attr("abs:srcset").getSrcSetImage() + element.hasAttr("data-cfsrc") -> element.attr("abs:data-cfsrc") + element.hasAttr("style") -> element.attr("style").substringAfter("url(").substringBefore(")") + else -> element.attr("abs:src") + } + } +}