From 27c29f99d97a53c318584a206c5537ef269de583 Mon Sep 17 00:00:00 2001 From: devi Date: Wed, 4 Oct 2023 17:14:12 +0200 Subject: [PATCH] minor fixes and add small sources --- .../parsers/site/madara/en/BestManhuaCom.kt | 113 +----------------- .../parsers/site/madara/es/BarManga.kt | 12 ++ .../kotatsu/parsers/site/madara/pt/Taberu.kt | 12 ++ .../site/mangareader/pt/Origamiorpheans.kt | 10 +- 4 files changed, 26 insertions(+), 121 deletions(-) create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/BarManga.kt create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Taberu.kt diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BestManhuaCom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BestManhuaCom.kt index 72d513f0..7f8fa1cf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BestManhuaCom.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BestManhuaCom.kt @@ -2,122 +2,11 @@ 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.Manga -import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaPage import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.model.MangaTag -import org.koitharu.kotatsu.parsers.model.SortOrder import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("BESTMANHUACOM", "Best Manhua .Com", "en") internal class BestManhuaCom(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BESTMANHUACOM, "bestmanhua.com", 20) { - override val datePattern = "dd MMMM yyyy" - override val tagPrefix = "genres/" - override val listUrl = "all-manga/" + MadaraParser(context, MangaSource.BESTMANHUACOM, "bestmanhua.com", 10) { override val withoutAjax = true - override val selectDesc = "div.dsct" - override val selectTestAsync = "div.panel-manga-chapter" - override val selectDate = "span.chapter-time" - override val selectChapter = "li.a-h" - override val selectBodyPage = "div.manga-content div.read-content" - override val selectPage = "div.image-placeholder" - - override suspend fun getListPage( - page: Int, - query: String?, - tags: Set?, - sortOrder: SortOrder, - ): List { - val tag = tags.oneOrThrowIfMany() - val url = buildString { - append("https://") - append(domain) - val pages = page + 1 - when { - !query.isNullOrEmpty() -> { - append("/page/") - append(pages.toString()) - append("/?s=") - append(query.urlEncoded()) - append("&post_type=wp-manga&") - } - - !tags.isNullOrEmpty() -> { - append("/$tagPrefix") - append(tag?.key.orEmpty()) - append("/") - append(pages.toString()) - append("?") - } - - else -> { - append("/$listUrl") - append(pages.toString()) - append("?") - } - } - append("sort=") - when (sortOrder) { - SortOrder.POPULARITY -> append("most-viewd") - SortOrder.UPDATED -> append("latest-updated") - SortOrder.NEWEST -> append("release-date") - SortOrder.ALPHABETICAL -> append("name-az") - SortOrder.RATING -> append("rating") - } - } - val doc = webClient.httpGet(url).parseHtml() - - return doc.select("div.page-item").map { div -> - val href = div.selectFirst("a")?.attrAsRelativeUrlOrNull("href") ?: div.parseFailed("Link not found") - val summary = div.selectFirstOrThrow(".bigor-manga") - Manga( - id = generateUid(href), - url = href, - publicUrl = href.toAbsoluteUrl(div.host ?: domain), - coverUrl = div.selectFirst("img")?.src().orEmpty(), - title = summary.selectFirst("h3")?.text().orEmpty(), - altTitle = null, - rating = div.selectFirstOrThrow("div.item-rate span").ownText().toFloatOrNull()?.div(5f) ?: -1f, - tags = emptySet(), - author = null, - state = null, - source = source, - isNsfw = isNsfwSource, - ) - } - } - - override suspend fun getPages(chapter: MangaChapter): List { - val fullUrl = chapter.url.toAbsoluteUrl(domain) - val doc = webClient.httpGet(fullUrl).parseHtml() - - val chapterId = - doc.selectFirst("script:containsData(chapter_id = )")?.toString()?.substringAfter("chapter_id = ") - ?.substringBefore(",") - - val json = - webClient.httpGet("https://$domain/ajax/image/list/chap/$chapterId?mode=vertical&quality=high").parseJson() - - val html = json.getString("html").split("/div>") - - val pages = ArrayList() - - html.map { t -> - if (t.contains("data-src=")) { - val url = t.substringAfter("data-src=\"").substringBefore("\"") - pages.add( - MangaPage( - id = generateUid(url), - url = url, - preview = null, - source = source, - ), - ) - } - } - return pages - } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/BarManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/BarManga.kt new file mode 100644 index 00000000..0509103e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/BarManga.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.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.madara.MadaraParser + +@MangaSourceParser("BARMANGA", "Bar Manga", "es") +internal class BarManga(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.BARMANGA, "barmanga.com") { + override val datePattern = "MM/dd/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Taberu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Taberu.kt new file mode 100644 index 00000000..121c8cbe --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Taberu.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +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("TABERU", "Taberu", "pt") +internal class Taberu(context: MangaLoaderContext) : + MadaraParser(context, MangaSource.TABERU, "taberu.org", 10) { + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Origamiorpheans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Origamiorpheans.kt index 4955efa8..443ff174 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Origamiorpheans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Origamiorpheans.kt @@ -7,12 +7,4 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("ORIGAMIORPHEANS", "Origami Orpheans", "pt") internal class Origamiorpheans(context: MangaLoaderContext) : - MangaReaderParser( - context, - MangaSource.ORIGAMIORPHEANS, - "origami-orpheans.com.br", - pageSize = 20, - searchPageSize = 20, - ) { - override val datePattern = "MMM d, yyyy" -} + MangaReaderParser(context, MangaSource.ORIGAMIORPHEANS, "origami-orpheans.com", pageSize = 20, searchPageSize = 10)