add mangashiro.me and fix

devi 3 years ago
parent 609c7188c0
commit f471a3513e

@ -32,19 +32,19 @@ class Manhwa18Parser(context: MangaLoaderContext) :
override suspend fun getDetails(manga: Manga): Manga { override suspend fun getDetails(manga: Manga): Manga {
val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml()
val cardInfoElement = docs.selectFirst("div.series-information") 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") ?.select("a")
?.joinToString(", ") { it.text() } ?.joinToString(", ") { it.text() }
val availableTags = tagsMap.get() 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") ?.select("a")
?.mapNotNullToSet { availableTags[it.text().lowercase(Locale.ENGLISH)] } ?.mapNotNullToSet { availableTags[it.text().lowercase(Locale.ENGLISH)] }
val state = cardInfoElement?.selectFirst(".info-name:contains(Status)")?.parent() val state = cardInfoElement?.selectFirst(".info-name:contains(Status)")?.parent()
?.selectFirst("a") ?.selectFirst("a")
?.let { ?.let {
when (it.text()) { when (it.text().lowercase()) {
"On going" -> MangaState.ONGOING "on going" -> MangaState.ONGOING
"Completed" -> MangaState.FINISHED "completed" -> MangaState.FINISHED
else -> null else -> null
} }
} }
@ -56,7 +56,6 @@ class Manhwa18Parser(context: MangaLoaderContext) :
tags = tags.orEmpty(), tags = tags.orEmpty(),
state = state, state = state,
chapters = docs.select(".card-body > .list-chapters > a").mapChapters(reversed = true) { index, element -> 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) val chapterUrl = element.attrAsAbsoluteUrlOrNull("href")?.toRelativeUrl(domain)
?: return@mapChapters null ?: return@mapChapters null
val uploadDate = parseUploadDate(element.selectFirst(".chapter-time")?.text()) val uploadDate = parseUploadDate(element.selectFirst(".chapter-time")?.text())

@ -10,7 +10,7 @@ import java.text.SimpleDateFormat
@MangaSourceParser("SWATEAM", "Swa Team", "ar") @MangaSourceParser("SWATEAM", "Swa Team", "ar")
internal class SwaTeam(context: MangaLoaderContext) : 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 datePattern = "MMMM dd, yyyy"
override val selectMangalist = ".listupd .bs .bsx" override val selectMangalist = ".listupd .bs .bsx"
@ -44,8 +44,8 @@ internal class SwaTeam(context: MangaLoaderContext) :
} }
val sortQuery = when (sortOrder) { val sortQuery = when (sortOrder) {
SortOrder.ALPHABETICAL -> "title" SortOrder.ALPHABETICAL -> "a-z"
SortOrder.NEWEST -> "latest" SortOrder.NEWEST -> "added"
SortOrder.POPULARITY -> "popular" SortOrder.POPULARITY -> "popular"
SortOrder.UPDATED -> "update" SortOrder.UPDATED -> "update"
else -> "" else -> ""

@ -7,6 +7,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("NIGHTSCANS", "Night scans", "en") @MangaSourceParser("NIGHTSCANS", "Night scans", "en")
internal class Nightscans(context: MangaLoaderContext) : 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" override val selectMangaListImg = "img.ts-post-image, picture img"
} }

@ -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
}

@ -15,7 +15,7 @@ import java.util.*
internal class GoldenManga(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.GOLDENMANGA, 36) { internal class GoldenManga(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.GOLDENMANGA, 36) {
override val sortOrders: Set<SortOrder> = EnumSet.of(SortOrder.ALPHABETICAL) override val sortOrders: Set<SortOrder> = 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() override val headers: Headers = Headers.Builder()
.add("User-Agent", UserAgents.CHROME_MOBILE) .add("User-Agent", UserAgents.CHROME_MOBILE)
.build() .build()

@ -13,6 +13,7 @@ internal class MintMangaParser(
override val configKeyDomain = ConfigKey.Domain( override val configKeyDomain = ConfigKey.Domain(
"mintmanga.live", "mintmanga.live",
"mintmanga.com", "mintmanga.com",
"m.mintmanga.live",
) )
} }

Loading…
Cancel
Save