From f471a3513e4fba13195e6005f6f887fdfa001b34 Mon Sep 17 00:00:00 2001 From: devi Date: Tue, 19 Sep 2023 18:48:26 +0200 Subject: [PATCH] add mangashiro.me and fix --- .../kotatsu/parsers/site/en/Manhwa18Parser.kt | 11 +++++------ .../kotatsu/parsers/site/mangareader/ar/SwaTeam.kt | 6 +++--- .../parsers/site/mangareader/en/Nightscans.kt | 3 ++- .../parsers/site/mangareader/id/MangaShiro.kt | 13 +++++++++++++ .../koitharu/kotatsu/parsers/site/pt/GoldenManga.kt | 2 +- .../parsers/site/ru/grouple/MintMangaParser.kt | 1 + 6 files changed, 25 insertions(+), 11 deletions(-) create mode 100644 src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaShiro.kt diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt index 6d9aff90..1e8bbbd3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt @@ -32,19 +32,19 @@ class Manhwa18Parser(context: MangaLoaderContext) : override suspend fun getDetails(manga: Manga): Manga { val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() val cardInfoElement = docs.selectFirst("div.series-information") - val author = cardInfoElement?.selectFirst(".info-name:contains(Author(s))")?.parent() + val author = cardInfoElement?.selectFirst(".info-name:contains(Author)")?.parent() ?.select("a") ?.joinToString(", ") { it.text() } val availableTags = tagsMap.get() - val tags = cardInfoElement?.selectFirst(".info-name:contains(Genre(s))")?.parent() + val tags = cardInfoElement?.selectFirst(".info-name:contains(Genre)")?.parent() ?.select("a") ?.mapNotNullToSet { availableTags[it.text().lowercase(Locale.ENGLISH)] } val state = cardInfoElement?.selectFirst(".info-name:contains(Status)")?.parent() ?.selectFirst("a") ?.let { - when (it.text()) { - "On going" -> MangaState.ONGOING - "Completed" -> MangaState.FINISHED + when (it.text().lowercase()) { + "on going" -> MangaState.ONGOING + "completed" -> MangaState.FINISHED else -> null } } @@ -56,7 +56,6 @@ class Manhwa18Parser(context: MangaLoaderContext) : tags = tags.orEmpty(), state = state, chapters = docs.select(".card-body > .list-chapters > a").mapChapters(reversed = true) { index, element -> - // attrAsRelativeUrl only return page url without the '/' val chapterUrl = element.attrAsAbsoluteUrlOrNull("href")?.toRelativeUrl(domain) ?: return@mapChapters null val uploadDate = parseUploadDate(element.selectFirst(".chapter-time")?.text()) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/SwaTeam.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/SwaTeam.kt index cf1dd2fe..71cfb309 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/SwaTeam.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/SwaTeam.kt @@ -10,7 +10,7 @@ import java.text.SimpleDateFormat @MangaSourceParser("SWATEAM", "Swa Team", "ar") internal class SwaTeam(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SWATEAM, "swatmanga.co", pageSize = 42, searchPageSize = 39) { + MangaReaderParser(context, MangaSource.SWATEAM, "stmanga.me", pageSize = 42, searchPageSize = 39) { override val datePattern = "MMMM dd, yyyy" override val selectMangalist = ".listupd .bs .bsx" @@ -44,8 +44,8 @@ internal class SwaTeam(context: MangaLoaderContext) : } val sortQuery = when (sortOrder) { - SortOrder.ALPHABETICAL -> "title" - SortOrder.NEWEST -> "latest" + SortOrder.ALPHABETICAL -> "a-z" + SortOrder.NEWEST -> "added" SortOrder.POPULARITY -> "popular" SortOrder.UPDATED -> "update" else -> "" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt index a296dd42..b7fc109d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt @@ -7,6 +7,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("NIGHTSCANS", "Night scans", "en") internal class Nightscans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.NIGHTSCANS, "nightscans.org", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaSource.NIGHTSCANS, "nightscans.net", pageSize = 20, searchPageSize = 10) { + override val listUrl = "/series" override val selectMangaListImg = "img.ts-post-image, picture img" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaShiro.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaShiro.kt new file mode 100644 index 00000000..425ecc0b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaShiro.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.id + +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 +import java.util.Locale + +@MangaSourceParser("MANGASHIRO", "Manga Shiro", "id") +internal class MangaShiro(context: MangaLoaderContext) : + MangaReaderParser(context, MangaSource.MANGASHIRO, "mangashiro.me", pageSize = 20, searchPageSize = 10) { + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/GoldenManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/GoldenManga.kt index 69f64541..2b52dd49 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/GoldenManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/GoldenManga.kt @@ -15,7 +15,7 @@ import java.util.* internal class GoldenManga(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.GOLDENMANGA, 36) { override val sortOrders: Set = EnumSet.of(SortOrder.ALPHABETICAL) - override val configKeyDomain = ConfigKey.Domain("www.goldenmangas.top") + override val configKeyDomain = ConfigKey.Domain("goldenmanga.top") override val headers: Headers = Headers.Builder() .add("User-Agent", UserAgents.CHROME_MOBILE) .build() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/MintMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/MintMangaParser.kt index d54cfc40..63c75a29 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/MintMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/MintMangaParser.kt @@ -13,6 +13,7 @@ internal class MintMangaParser( override val configKeyDomain = ConfigKey.Domain( "mintmanga.live", "mintmanga.com", + "m.mintmanga.live", ) }