From e61892ced7e3d33fbc3fae8e4ba4acab51a5c83a Mon Sep 17 00:00:00 2001 From: Genzales6 Date: Fri, 15 Aug 2025 13:29:40 -0500 Subject: [PATCH] Harem de Kira - New Redesign (#10133) * Harem de Kira - Update theme Users will have to migrate Close #6853 * HaremDeKira.kt * Update HaremDeKira --- src/es/haremdekira/build.gradle | 2 +- .../extension/es/haremscann/HaremDeKira.kt | 51 +++++++++++++++++-- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/es/haremdekira/build.gradle b/src/es/haremdekira/build.gradle index c76d06c42..1d4c5cc4f 100644 --- a/src/es/haremdekira/build.gradle +++ b/src/es/haremdekira/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.HaremDeKira' themePkg = 'madara' baseUrl = 'https://haremscann.es' - overrideVersionCode = 0 + overrideVersionCode = 1 isNsfw = true } diff --git a/src/es/haremdekira/src/eu/kanade/tachiyomi/extension/es/haremscann/HaremDeKira.kt b/src/es/haremdekira/src/eu/kanade/tachiyomi/extension/es/haremscann/HaremDeKira.kt index 5250377f2..cc70de914 100644 --- a/src/es/haremdekira/src/eu/kanade/tachiyomi/extension/es/haremscann/HaremDeKira.kt +++ b/src/es/haremdekira/src/eu/kanade/tachiyomi/extension/es/haremscann/HaremDeKira.kt @@ -1,7 +1,11 @@ package eu.kanade.tachiyomi.extension.es.haremdekira import eu.kanade.tachiyomi.multisrc.madara.Madara -import eu.kanade.tachiyomi.network.interceptor.rateLimit +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 import java.text.SimpleDateFormat import java.util.Locale @@ -9,11 +13,48 @@ class HaremDeKira : Madara( "Harem de Kira", "https://haremscann.es", "es", - SimpleDateFormat("MMMM dd, yyyy", Locale("es")), + dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("es")), ) { - override val client = super.client.newBuilder() - .rateLimit(3) - .build() + 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.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 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(")") + } }