From ac9f3079792a35a1522495cc0a84d4025f6d2889 Mon Sep 17 00:00:00 2001 From: Tef <39195498+TeflonOfJoy@users.noreply.github.com> Date: Thu, 29 Feb 2024 17:20:29 +0100 Subject: [PATCH] Add Mangamonks (#1599) * Add MangaMonks * Fixed page in search * Update res * Fixed search exception * Applied requested changes * Applied requested changes * Revert "Applied requested changes" This reverts commit 237d3313f7ef98e1d695c80385a908367ae425d8. --- src/en/mangamonks/build.gradle | 8 + .../res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 4232 bytes .../res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2576 bytes .../res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 5355 bytes .../res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 8656 bytes .../res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 12119 bytes .../extension/en/mangamonks/MangaMonks.kt | 267 ++++++++++++++++++ .../en/mangamonks/MangaMonksHelper.kt | 68 +++++ 8 files changed, 343 insertions(+) create mode 100644 src/en/mangamonks/build.gradle create mode 100644 src/en/mangamonks/res/mipmap-hdpi/ic_launcher.png create mode 100644 src/en/mangamonks/res/mipmap-mdpi/ic_launcher.png create mode 100644 src/en/mangamonks/res/mipmap-xhdpi/ic_launcher.png create mode 100644 src/en/mangamonks/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 src/en/mangamonks/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 src/en/mangamonks/src/eu/kanade/tachiyomi/extension/en/mangamonks/MangaMonks.kt create mode 100644 src/en/mangamonks/src/eu/kanade/tachiyomi/extension/en/mangamonks/MangaMonksHelper.kt diff --git a/src/en/mangamonks/build.gradle b/src/en/mangamonks/build.gradle new file mode 100644 index 000000000..c74459586 --- /dev/null +++ b/src/en/mangamonks/build.gradle @@ -0,0 +1,8 @@ +ext { + extName = 'MangaMonks' + extClass = '.MangaMonks' + extVersionCode = 1 + isNsfw = true +} + +apply from: "$rootDir/common.gradle" diff --git a/src/en/mangamonks/res/mipmap-hdpi/ic_launcher.png b/src/en/mangamonks/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..dd46b6ef41e9bc6d1221c3337b26cbfb26329f18 GIT binary patch literal 4232 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 literal 0 HcmV?d00001 diff --git a/src/en/mangamonks/res/mipmap-mdpi/ic_launcher.png b/src/en/mangamonks/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e87c374ad24f3a32f60f4bbac9b7e60e039887ad GIT binary patch literal 2576 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 literal 0 HcmV?d00001 diff --git a/src/en/mangamonks/res/mipmap-xhdpi/ic_launcher.png b/src/en/mangamonks/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..7799da22d8170b0dda7be16f860a134b3f6af64d GIT binary patch literal 5355 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 D7+0{O literal 0 HcmV?d00001 diff --git a/src/en/mangamonks/res/mipmap-xxhdpi/ic_launcher.png b/src/en/mangamonks/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5755de1a82cc0df69682ab83d9471de9867c41fd GIT binary patch literal 8656 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 literal 0 HcmV?d00001 diff --git a/src/en/mangamonks/res/mipmap-xxxhdpi/ic_launcher.png b/src/en/mangamonks/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..840a12ddb1822c197340895d928f4f9c31ce9d39 GIT binary patch literal 12119 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 UxP+2e(c%+Of2gBereqoXKU3g;oB#j- literal 0 HcmV?d00001 diff --git a/src/en/mangamonks/src/eu/kanade/tachiyomi/extension/en/mangamonks/MangaMonks.kt b/src/en/mangamonks/src/eu/kanade/tachiyomi/extension/en/mangamonks/MangaMonks.kt new file mode 100644 index 000000000..0205dad04 --- /dev/null +++ b/src/en/mangamonks/src/eu/kanade/tachiyomi/extension/en/mangamonks/MangaMonks.kt @@ -0,0 +1,267 @@ +package eu.kanade.tachiyomi.extension.en.mangamonks + +import eu.kanade.tachiyomi.extension.en.mangamonks.MangaMonksHelper.buildApiHeaders +import eu.kanade.tachiyomi.extension.en.mangamonks.MangaMonksHelper.toDate +import eu.kanade.tachiyomi.extension.en.mangamonks.MangaMonksHelper.toFormRequestBody +import eu.kanade.tachiyomi.extension.en.mangamonks.MangaMonksHelper.toStatus +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.network.POST +import eu.kanade.tachiyomi.source.model.Filter +import eu.kanade.tachiyomi.source.model.FilterList +import eu.kanade.tachiyomi.source.model.MangasPage +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 kotlinx.serialization.MissingFieldException +import kotlinx.serialization.Serializable +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json +import okhttp3.HttpUrl.Companion.toHttpUrl +import okhttp3.Request +import okhttp3.Response +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import uy.kohesive.injekt.injectLazy + +class MangaMonks : ParsedHttpSource() { + + override val name = "MangaMonks" + + override val baseUrl = "https://mangamonks.com" + + override val lang = "en" + + override val supportsLatest = true + + // popular + override fun popularMangaRequest(page: Int): Request { + return GET("$baseUrl/popular-manga/$page", headers) + } + override fun popularMangaSelector() = ".main-slide" + override fun popularMangaNextPageSelector() = "li:nth-last-child(2) a.page-btn" + override fun popularMangaFromElement(element: Element): SManga { + return SManga.create().apply { + title = element.selectFirst(".detail a")!!.text() + setUrlWithoutDomain(element.selectFirst("a")!!.attr("href")) + thumbnail_url = element.select("img").attr("data-src") + } + } + + // latest + override fun latestUpdatesRequest(page: Int): Request { + return GET("$baseUrl/latest-releases/$page", headers) + } + + override fun latestUpdatesSelector() = ".tab-pane .row .col-12" + override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() + override fun latestUpdatesFromElement(element: Element): SManga = popularMangaFromElement(element) + + // search + override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { + val filterList = filters.let { if (it.isEmpty()) getFilterList() else it } + return if (query.isNotEmpty()) { + val requestBody = query.toFormRequestBody() + val requestHeaders = headersBuilder().buildApiHeaders(requestBody) + + POST("$baseUrl/search/live", requestHeaders, requestBody) + } else { + val url = "$baseUrl/genre/".toHttpUrl().newBuilder() + filterList.forEach { filter -> + when (filter) { + is GenreFilter -> filter.toUriPart().let { + url.apply { + addPathSegment(it) + addQueryParameter("include[]", filter.toGenreValue()) + } + } + is StatusFilter -> filter.toUriPart().let { + url.apply { + addQueryParameter("term", query) + addQueryParameter("status[]", it) + } + } + else -> {} + } + } + + url.addPathSegment(page.toString()) + GET(url.build(), headers) + } + } + + override fun searchMangaSelector() = ".main-slide .item" + override fun searchMangaNextPageSelector() = popularMangaNextPageSelector() + + private val json: Json by injectLazy() + override fun searchMangaParse(response: Response): MangasPage { + val isJson = response.header("Content-Type")?.contains("application/json") ?: false + if (isJson) { + return try { + val result = json.decodeFromString<MangaList>(response.body.string()) + val mangaList = result.manga.map { + SManga.create().apply { + title = it.title + setUrlWithoutDomain(it.url) + thumbnail_url = it.image + } + } + val hasNextPage = false + MangasPage(mangaList, hasNextPage) + } catch (_: MissingFieldException) { + MangasPage(emptyList(), false) + } + } else { + val document = response.asJsoup() + + val mangas = document.select(searchMangaSelector()).map { element -> + searchMangaFromElement(element) + } + + val hasNextPage = searchMangaNextPageSelector().let { selector -> + document.select(selector).first() + } != null + + return MangasPage(mangas, hasNextPage) + } + } + + override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element) + + // details + override fun mangaDetailsParse(document: Document): SManga { + return SManga.create().apply { + author = document.selectFirst(".publisher a")!!.text() + status = document.selectFirst(".info-detail .source")!!.text().toStatus() + genre = document.select(".info-detail .tags a").joinToString { it.text() } + description = document.select(".info-desc p").text() + thumbnail_url = document.select(".img-holder img").attr("data-src") + } + } + + // chapters + override fun chapterListSelector() = ".chapter-list li" + override fun chapterFromElement(element: Element): SChapter { + return SChapter.create().apply { + setUrlWithoutDomain(element.select("a").attr("href")) + name = element.select(".chapter-number").text() + date_upload = element.select(".time").text().trim().toDate() + } + } + override fun imageUrlParse(document: Document): String = throw UnsupportedOperationException() + + // pages + override fun pageListParse(document: Document): List<Page> { + return document.select("#zoomContainer .image img").mapIndexed { i, it -> + val src = it.attr("src") + val imageUrl = if (src.startsWith("https")) src else baseUrl + src + Page(i, imageUrl = imageUrl) + } + } + + // filters + override fun getFilterList() = FilterList( + Filter.Header("NOTE: Ignored if using text search!"), + Filter.Separator(), + StatusFilter(), + GenreFilter(), + ) + private class StatusFilter : UriPartFilter( + "Status", + arrayOf( + Pair("Ongoing", "ongoing"), + Pair("Completed", "completed"), + ), + ) + private class GenreFilter : GenreValueFilter( + "Genre", + arrayOf( + Triple("Action", "2", "action"), + Triple("Adventure", "3", "adventure"), + Triple("Comedy", "5", "comedy"), + Triple("Cooking", "6", "cooking"), + Triple("Doujinshi", "7", "doujinshi"), + Triple("Drama", "8", "drama"), + Triple("Ecchi", "9", "ecchi"), + Triple("Yaoi", "11", "yaoi"), + Triple("Fantasy", "12", "fantasy"), + Triple("Gender Bender", "13", "gender-bender"), + Triple("Harem", "14", "harem"), + Triple("Historical", "15", "historical"), + Triple("Horror", "16", "horror"), + Triple("Josei", "17", "josei"), + Triple("Manhua", "18", "manhua"), + Triple("Manhwa", "19", "manhwa"), + Triple("Mecha", "21", "mecha"), + Triple("Mystery", "24", "mystery"), + Triple("One Shot", "25", "one-shot"), + Triple("Psychological", "26", "psychological"), + Triple("Romance", "27", "romance"), + Triple("School Life", "28", "school-life"), + Triple("Sci-fi", "29", "sci-fi"), + Triple("Seinen", "30", "seinen"), + Triple("Yuri", "31", "yuri"), + Triple("Shoujo", "32", "shoujo"), + Triple("Shounen", "34", "shounen"), + Triple("Shounen Ai", "35", "shounen-ai"), + Triple("Slice of Life", "36", "slice-of-life"), + Triple("Sports", "37", "sports"), + Triple("Supernatural", "38", "supernatural"), + Triple("Tragedy", "39", "tragedy"), + Triple("Webtoons", "40", "webtoons"), + Triple("Full Color", "42", "full-color"), + Triple("Isekai", "44", "isekai"), + Triple("Reincarnation", "45", "reincarnation"), + Triple("Time Travel", "46", "time-travel"), + Triple("Martial arts", "48", "martial-arts"), + Triple("Monsters", "49", "monsters-monsters"), + Triple("Thriller", "51", "thriller"), + Triple("Adaptation", "52", "adaptation"), + Triple("Reverse Harem", "53", "reverse-harem"), + Triple("Cross-dressing", "54", "cross-dressing"), + Triple("Zombies", "55", "zombies"), + Triple("Crime", "56", "crime"), + Triple("Ghosts", "57", "ghosts"), + Triple("Magic", "58", "magic"), + Triple("Gore", "59", "gore"), + Triple("+18", "84", "18"), + Triple("LGBT", "47", "lgbt"), + Triple("erotic", "62", "erotic"), + Triple("Harem", "63", "harem-harem"), + Triple("MILF", "64", "milf"), + Triple("Yaoi/boy's love", "65", "yaoiboys-love"), + Triple("Yuri/girl's love", "66", "yurigirls-love"), + Triple("BBW", "67", "bbw"), + Triple("Shota", "68", "shota"), + Triple("NTR/cheating", "69", "ntrcheating"), + Triple("BDSM", "70", "bdsm"), + Triple("tentacle", "71", "tentacle"), + Triple("Oyasumi/sleeping", "72", "oyasumisleeping"), + Triple("Elf Hentai", "74", "elf-hentai"), + Triple("Rape", "75", "rape"), + Triple("Incest", "76", "incest"), + Triple("Inseki", "77", "inseki"), + Triple("LGBTQ", "78", "lgbtq"), + Triple("Beastiality", "79", "bestiality"), + Triple("Defloration", "80", "defloration"), + Triple("loli", "81", "loli"), + Triple("Raw", "83", "raw"), + ), + ) + private open class UriPartFilter(displayName: String, private val vals: Array<Pair<String, String>>) : + Filter.Select<String>(displayName, vals.map { it.first }.toTypedArray()) { + fun toUriPart() = vals[state].second + } + private open class GenreValueFilter(displayName: String, private val vals: Array<Triple<String, String, String>>) : + Filter.Select<String>(displayName, vals.map { it.first }.toTypedArray()) { + fun toUriPart() = vals[state].third + fun toGenreValue() = vals[state].second + } + + @Serializable + class MangaList(val manga: List<MangaItem>) + + @Serializable + class MangaItem(val title: String, val url: String, val image: String) +} diff --git a/src/en/mangamonks/src/eu/kanade/tachiyomi/extension/en/mangamonks/MangaMonksHelper.kt b/src/en/mangamonks/src/eu/kanade/tachiyomi/extension/en/mangamonks/MangaMonksHelper.kt new file mode 100644 index 000000000..d81a237f0 --- /dev/null +++ b/src/en/mangamonks/src/eu/kanade/tachiyomi/extension/en/mangamonks/MangaMonksHelper.kt @@ -0,0 +1,68 @@ +package eu.kanade.tachiyomi.extension.en.mangamonks + +import eu.kanade.tachiyomi.source.model.SManga +import okhttp3.FormBody +import okhttp3.Headers +import okhttp3.RequestBody +import java.util.Calendar + +object MangaMonksHelper { + fun Headers.Builder.buildApiHeaders(requestBody: RequestBody) = this + .add("Content-Length", requestBody.contentLength().toString()) + .add("Content-Type", requestBody.contentType().toString()) + .add("Accept", "application/json") + .add("X-Requested-With", "XMLHttpRequest") + .build() + inline fun <reified T : Any> T.toFormRequestBody(): RequestBody { + return FormBody.Builder() + .add("dataType", "json") + .add("phrase", this.toString()) + .build() + } + fun String?.toStatus(): Int { + return when { + this == null -> SManga.UNKNOWN + this.contains("Ongoing", true) -> SManga.ONGOING + this.contains("Completed", true) -> SManga.COMPLETED + else -> SManga.UNKNOWN + } + } + fun String?.toDate(): Long { + val trimmedDate = this!!.substringBefore(" ago").removeSuffix("s").split(" ") + val calendar = Calendar.getInstance() + + when { + trimmedDate[1].contains( + "Year", + ignoreCase = true, + ) -> calendar.apply { add(Calendar.YEAR, -trimmedDate[0].toInt()) } + + trimmedDate[1].contains( + "Month", + ignoreCase = true, + ) -> calendar.apply { add(Calendar.MONTH, -trimmedDate[0].toInt()) } + + trimmedDate[1].contains( + "Week", + ignoreCase = true, + ) -> calendar.apply { add(Calendar.WEEK_OF_MONTH, -trimmedDate[0].toInt()) } + + trimmedDate[1].contains( + "Day", + ignoreCase = true, + ) -> calendar.apply { add(Calendar.DAY_OF_MONTH, -trimmedDate[0].toInt()) } + + trimmedDate[1].contains( + "Hour", + ignoreCase = true, + ) -> calendar.apply { add(Calendar.HOUR_OF_DAY, -trimmedDate[0].toInt()) } + + trimmedDate[1].contains( + "Minute", + ignoreCase = true, + ) -> calendar.apply { add(Calendar.MINUTE, -trimmedDate[0].toInt()) } + } + + return calendar.timeInMillis + } +}