From a390e0de49aeca91a3615eecc7d343d47ffb864f Mon Sep 17 00:00:00 2001 From: devi Date: Fri, 29 Dec 2023 13:55:04 +0100 Subject: [PATCH] Fix ALPHABETICAL Sort on BentomangaParser Remove Toonily.net Add MonzeeKomik, Tresdaos --- .../parsers/site/fr/BentomangaParser.kt | 20 +++-- .../parsers/site/madara/en/ToonilyNet.kt | 10 --- .../parsers/site/mangareader/es/Tresdaos.kt | 10 +++ .../parsers/site/zeistmanga/id/MonzeeKomik.kt | 75 +++++++++++++++++++ 4 files changed, 94 insertions(+), 21 deletions(-) delete mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonilyNet.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Tresdaos.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/MonzeeKomik.kt diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt index f8d9186c..f5c69966 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt @@ -49,17 +49,15 @@ internal class BentomangaParser(context: MangaLoaderContext) : PagedMangaParser( is MangaListFilter.Advanced -> { - url.addQueryParameter( - "order_by", - when (filter.sortOrder) { - SortOrder.UPDATED -> "update" - SortOrder.POPULARITY -> "views" - SortOrder.RATING -> "top" - SortOrder.NEWEST -> "create" - SortOrder.ALPHABETICAL -> "name&order=asc" - SortOrder.ALPHABETICAL_DESC -> "name&order=desc" - }, - ) + when (filter.sortOrder) { + SortOrder.UPDATED -> url.addQueryParameter("order_by", "update") + SortOrder.POPULARITY -> url.addQueryParameter("order_by", "views") + SortOrder.RATING -> url.addQueryParameter("order_by", "top") + SortOrder.NEWEST -> url.addQueryParameter("order_by", "create") + SortOrder.ALPHABETICAL -> url.addQueryParameter("order_by", "name") + SortOrder.ALPHABETICAL_DESC -> url.addQueryParameter("order_by", "name") + .addQueryParameter("order", "desc") + } if (filter.tags.isNotEmpty()) { url.addQueryParameter("withCategories", filter.tags.joinToString(",") { it.key }) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonilyNet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonilyNet.kt deleted file mode 100644 index 24e5b242..00000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonilyNet.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.madara.en - -import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.site.madara.MadaraParser - -@MangaSourceParser("TOONILYNET", "Toonily.net", "en") -internal class ToonilyNet(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TOONILYNET, "toonily.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Tresdaos.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Tresdaos.kt new file mode 100644 index 00000000..bfb97499 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Tresdaos.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("TRESDAOS", "Tresdaos", "es") +internal class Tresdaos(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.TRESDAOS, "tresdaos.com", 20, 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/MonzeeKomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/MonzeeKomik.kt new file mode 100644 index 00000000..1afcf59e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/MonzeeKomik.kt @@ -0,0 +1,75 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.id + +import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.json.toJSONList +import org.koitharu.kotatsu.parsers.util.parseJson +import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow +import org.koitharu.kotatsu.parsers.util.tryParse +import java.text.SimpleDateFormat + +@MangaSourceParser("MONZEEKOMIK", "MonzeeKomik", "id") +internal class MonzeeKomik(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaSource.MONZEEKOMIK, "www.monzeekomik.my.id"){ + override val selectPage = "article#reader img" + + override suspend fun loadChapters(mangaUrl: String, doc: Document): List { + + + val chapterRegex = """clwd\.run\('([^']+)'""".toRegex() + val scriptSelector = "#clwd > script" + val script = doc.selectFirstOrThrow(scriptSelector) + val feedFind = chapterRegex + .find(script.html()) + ?.groupValues?.get(1) + ?: throw Exception("Failed to find chapter feed") + + val feedClean = feedFind.removeSuffix(")") // clean + + val feed = if(feedClean == "Reincarnation Colosseum") // hot fix + { + "I Have 90 Billion Licking Gold" + }else + { + feedClean + } + + val url = buildString { + append("https://") + append(domain) + append("/feeds/posts/default/-/") + append(feed) + append("?alt=json&orderby=published&max-results=9999") + } + val json = + webClient.httpGet(url).parseJson().getJSONObject("feed").getJSONArray("entry").toJSONList().reversed() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + return json.mapIndexedNotNull { i, j -> + val name = j.getJSONObject("title").getString("\$t") + val href = + j.getJSONArray("link").toJSONList().first { it.getString("rel") == "alternate" }.getString("href") + val dateText = j.getJSONObject("published").getString("\$t").substringBefore("T") + val slug = mangaUrl.substringAfterLast('/') + val slugChapter = href.substringAfterLast('/') + if (slug == slugChapter) { + return@mapIndexedNotNull null + } + MangaChapter( + id = generateUid(href), + url = href, + name = name, + number = i + 1, + branch = null, + uploadDate = dateFormat.tryParse(dateText), + scanlator = null, + source = source, + ) + } + } +}