From 882c1d9738a79083ddbc2f05845cad8fb77165a2 Mon Sep 17 00:00:00 2001 From: bapeey <90949336+bapeey@users.noreply.github.com> Date: Sat, 2 Mar 2024 15:39:49 -0500 Subject: [PATCH] Add ManhuaKO (#1662) --- src/es/manhuako/build.gradle | 8 + .../manhuako/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2743 bytes .../manhuako/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1660 bytes .../manhuako/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3618 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 5851 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 7556 bytes .../extension/es/manhuako/ManhuaKO.kt | 182 ++++++++++++++++++ .../extension/es/manhuako/ManhuaKOFilters.kt | 53 +++++ 8 files changed, 243 insertions(+) create mode 100644 src/es/manhuako/build.gradle create mode 100644 src/es/manhuako/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/es/manhuako/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/es/manhuako/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/es/manhuako/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/es/manhuako/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/es/manhuako/src/eu/kanade/tachiyomi/extension/es/manhuako/ManhuaKO.kt create mode 100644 src/es/manhuako/src/eu/kanade/tachiyomi/extension/es/manhuako/ManhuaKOFilters.kt diff --git a/src/es/manhuako/build.gradle b/src/es/manhuako/build.gradle new file mode 100644 index 000000000..c16bb1a3a --- /dev/null +++ b/src/es/manhuako/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'ManhuaKO' + extClass = '.ManhuaKO' + extVersionCode = 1 + isNsfw = false +} + +apply from: "$rootDir/common.gradle" diff --git a/src/es/manhuako/res/mipmap-hdpi/ic_launcher.png b/src/es/manhuako/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..7e29109b2fa8b0a246f74dd3c46cb6fab594e63d GIT binary patch literal 2743 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 literal 0 HcmV?d00001 diff --git a/src/es/manhuako/res/mipmap-xxxhdpi/ic_launcher.png b/src/es/manhuako/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..103bd0f27c85c3a53f2b5f8c84d8c7d377e4928e GIT binary patch literal 7556 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 literal 0 HcmV?d00001 diff --git a/src/es/manhuako/src/eu/kanade/tachiyomi/extension/es/manhuako/ManhuaKO.kt b/src/es/manhuako/src/eu/kanade/tachiyomi/extension/es/manhuako/ManhuaKO.kt new file mode 100644 index 000000000..ab04e6ebd --- /dev/null +++ b/src/es/manhuako/src/eu/kanade/tachiyomi/extension/es/manhuako/ManhuaKO.kt @@ -0,0 +1,182 @@ +package eu.kanade.tachiyomi.extension.es.manhuako + +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.interceptor.rateLimitHost +import eu.kanade.tachiyomi.source.model.Filter +import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.source.model.SManga +import eu.kanade.tachiyomi.source.online.ParsedHttpSource +import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import org.jsoup.select.Elements +import java.util.Calendar + +class ManhuaKO : ParsedHttpSource() { + + override val baseUrl = "https://manhuako.com" + + override val lang = "es" + + override val name = "ManhuaKO" + + override val supportsLatest = true + + override val client = network.cloudflareClient.newBuilder() + .rateLimitHost(baseUrl.toHttpUrl(), 2) + .build() + + override fun headersBuilder() = super.headersBuilder() + .add("Referer", "$baseUrl/") + + override fun popularMangaRequest(page: Int) = GET(baseUrl, headers) + + override fun popularMangaSelector() = + "div#Manhua-week .my-carousel-item, div#Manhwa-week .my-carousel-item, div#Manga-week .my-carousel-item" + + override fun popularMangaNextPageSelector(): String? = null + + override fun popularMangaFromElement(element: Element) = SManga.create().apply { + with(element.selectFirst("> a")!!) { + setUrlWithoutDomain(attr("href")) + title = selectFirst("img")!!.attr("title") + thumbnail_url = selectFirst("img")!!.imgAttr() + } + } + + override fun latestUpdatesRequest(page: Int) = GET(baseUrl, headers) + + override fun latestUpdatesSelector() = + "div#Manhua-recent .my-carousel-item, div#Manhwa-recent .my-carousel-item, div#Manga-recent .my-carousel-item" + + override fun latestUpdatesNextPageSelector(): String? = null + + override fun latestUpdatesFromElement(element: Element) = popularMangaFromElement(element) + + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val urlBuilder = baseUrl.toHttpUrl().newBuilder() + + if (query.isNotBlank()) { + urlBuilder.addPathSegment("home") + urlBuilder.addPathSegment("search") + urlBuilder.addQueryParameter("mq", query) + } else { + filters.forEach { filter -> + when (filter) { + is TypeFilter -> { + if (filter.state == 0) { + urlBuilder.addPathSegment("home") + urlBuilder.addPathSegment("search") + } else { + urlBuilder.addPathSegment(filter.toUriPart()) + } + } + is GenreFilter -> { + if (filter.state != 0) { + urlBuilder.addPathSegment("genre") + urlBuilder.addPathSegment(filter.toUriPart()) + } + } + else -> {} + } + } + } + + urlBuilder.addPathSegment("page") + urlBuilder.addPathSegment(page.toString()) + + return GET(urlBuilder.build(), headers) + } + + override fun getFilterList(): FilterList { + return FilterList( + Filter.Header("Los filtros serán ignorados si se realiza una búsqueda por texto"), + Filter.Separator(), + TypeFilter(), + GenreFilter(), + ) + } + + override fun searchMangaSelector() = "div.card-image" + + override fun searchMangaNextPageSelector() = "ul.pagination li.active + li" + + override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element) + + override fun mangaDetailsParse(document: Document) = SManga.create().apply { + title = document.select("section > div.container > h1.center-align").text() + genre = document.select("div.card-panel div:has(> span:contains(Genero)) a.chip").joinToString { it.ownText() } + description = document.select("div.card-panel p").text() + thumbnail_url = document.select("section > div.container img#preview.fit-img").imgAttr() + author = document.selectFirst("div.card-panel div:has(> span:contains(Creador)) > a")!!.ownText() + } + + override fun chapterListSelector() = "table.table-chapters tr" + + private fun chapterListNextPageSelector() = "ul.pagination li i:contains(last_page), ul.pagination li.active + li" + + override fun chapterListParse(response: Response): List { + val url = response.request.url.toString() + var document = response.asJsoup() + + val chapters = mutableListOf() + chapters.addAll(document.select(chapterListSelector()).map { chapterFromElement(it) }) + + var page = 2 + while (!document.select(chapterListNextPageSelector()).isEmpty()) { + document = client.newCall(GET("$url/page/$page", headers)).execute().asJsoup() + chapters.addAll(document.select(chapterListSelector()).map { chapterFromElement(it) }) + page++ + } + return chapters + } + + override fun chapterFromElement(element: Element) = SChapter.create().apply { + name = "Capítulo " + element.select("a").text() + date_upload = parseRelativeDate(element.selectFirst("span.truncate")!!.ownText()) + setUrlWithoutDomain(element.select("a").attr("href")) + } + + override fun pageListParse(document: Document): List { + return document.select("div#pantallaCompleta img").mapIndexed { i, img -> + Page(i, imageUrl = img.imgAttr()) + } + } + + override fun imageUrlParse(document: Document) = throw UnsupportedOperationException() + + private fun Element.imgAttr(): String { + return when { + hasAttr("data-src") -> attr("abs:data-src") + hasAttr("data-lazy-src") -> attr("abs:data-lazy-src") + else -> attr("abs:src") + } + } + + private fun Elements.imgAttr() = this.first()!!.imgAttr() + + private fun parseRelativeDate(date: String): Long { + val number = Regex("""(\d+)""").find(date)?.value?.toIntOrNull() ?: return 0 + val cal = Calendar.getInstance() + + return when { + WordSet("segundo").anyWordIn(date) -> cal.apply { add(Calendar.SECOND, -number) }.timeInMillis + WordSet("minuto").anyWordIn(date) -> cal.apply { add(Calendar.MINUTE, -number) }.timeInMillis + WordSet("hora").anyWordIn(date) -> cal.apply { add(Calendar.HOUR, -number) }.timeInMillis + WordSet("día").anyWordIn(date) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number) }.timeInMillis + WordSet("semana").anyWordIn(date) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number * 7) }.timeInMillis + WordSet("mes").anyWordIn(date) -> cal.apply { add(Calendar.MONTH, -number) }.timeInMillis + WordSet("año").anyWordIn(date) -> cal.apply { add(Calendar.YEAR, -number) }.timeInMillis + else -> 0 + } + } + + class WordSet(private vararg val words: String) { + fun anyWordIn(dateString: String): Boolean = words.any { dateString.contains(it, ignoreCase = true) } + } +} diff --git a/src/es/manhuako/src/eu/kanade/tachiyomi/extension/es/manhuako/ManhuaKOFilters.kt b/src/es/manhuako/src/eu/kanade/tachiyomi/extension/es/manhuako/ManhuaKOFilters.kt new file mode 100644 index 000000000..b0d507e1a --- /dev/null +++ b/src/es/manhuako/src/eu/kanade/tachiyomi/extension/es/manhuako/ManhuaKOFilters.kt @@ -0,0 +1,53 @@ +package eu.kanade.tachiyomi.extension.es.manhuako + +import eu.kanade.tachiyomi.source.model.Filter + +class TypeFilter : UriPartFilter( + "Tipo", + arrayOf( + Pair("Todos", "home"), + Pair("Mangas", "manga"), + Pair("Manhuas", "manhua"), + Pair("Manhwas", "manhwa"), + ), +) + +class GenreFilter : UriPartFilter( + "Géneros", + arrayOf( + Pair("Todos", ""), + Pair("Accion", "accion"), + Pair("Harem", "harem"), + Pair("Cultivo", "cultivo"), + Pair("Romance", "romance"), + Pair("Aventura", "aventura"), + Pair("Isekai", "isekai"), + Pair("Escolar", "escolar"), + Pair("Artes Marciales", "artes-marciales"), + Pair("Sistema", "sistema"), + Pair("Fantasia", "fantasia"), + Pair("Apocaliptico", "apocaliptico"), + Pair("Sobrenatural", "sobrenatural"), + Pair("Supervivencia", "supervivencia"), + Pair("Manhua", "manhua"), + Pair("Manga", "manga"), + Pair("Manhwa", "manhwa"), + Pair("Ecchi", "ecchi"), + Pair("Gore", "gore"), + Pair("Terror", "terror"), + Pair("Suspenso", "suspenso"), + Pair("Magia", "magia"), + Pair("Psicologico", "psicologico"), + Pair("Recuentos de la vida", "recuentos-de-la-vida"), + Pair("Drama", "drama"), + Pair("Comedia", "comedia"), + Pair("Shonen", "shonen"), + Pair("Josei", "josei"), + Pair("Seinen", "seinen"), + ), +) + +open class UriPartFilter(displayName: String, val vals: Array>) : + Filter.Select(displayName, vals.map { it.first }.toTypedArray()) { + fun toUriPart() = vals[state].second +}