commit
7fe1f4b3ff
@ -0,0 +1,15 @@
|
||||
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("ARABTOONS", "Arab Toons", "ar")
|
||||
internal class ArabToons(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.ARABTOONS, "arabtoons.net") {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern = "dd-MM-yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("ASQORG", "3Asq", "ar")
|
||||
internal class Asq(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.ASQORG, "3asq.org") {
|
||||
|
||||
override val datePattern = "d MMMM، yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("MANGALIONZ", "Manga Lionz", "ar")
|
||||
internal class MangaLionz(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGALIONZ, "mangalionz.com", pageSize = 10) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("MANGASTARZ", "Manga Starz", "ar")
|
||||
internal class MangaStarz(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGASTARZ, "mangastarz.com", pageSize = 10) {
|
||||
|
||||
override val datePattern = "d MMMM، yyyy"
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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("MANGASPARK", "Mangaspark", "ar")
|
||||
internal class Mangaspark(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGASPARK, "mangaspark.com", pageSize = 10) {
|
||||
|
||||
override val postreq = true
|
||||
override val datePattern = "d MMMM، yyyy"
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("MANHATIC", "Manhatic", "ar")
|
||||
internal class Manhatic(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANHATIC, "manhatic.com") {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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("NIJITRANSLATIONS", "Niji Translations", "ar")
|
||||
internal class NijiTranslations(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.NIJITRANSLATIONS, "niji-translations.com") {
|
||||
|
||||
override val postreq = true
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("NOVELSTOWN", "Novelstown", "ar")
|
||||
internal class Novelstown(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.NOVELSTOWN, "novelstown.cyou") {
|
||||
|
||||
override val datePattern = "d MMMM، yyyy"
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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("IMMORTALUPDATES", "Immortal Updates", "en")
|
||||
internal class ImmortalUpdates(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.IMMORTALUPDATES, "immortalupdates.com") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
|
||||
}
|
||||
@ -0,0 +1,165 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.pt
|
||||
|
||||
|
||||
import org.jsoup.nodes.Document
|
||||
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.MangaState
|
||||
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.attrAsRelativeUrl
|
||||
import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull
|
||||
import org.koitharu.kotatsu.parsers.util.domain
|
||||
import org.koitharu.kotatsu.parsers.util.generateUid
|
||||
import org.koitharu.kotatsu.parsers.util.host
|
||||
import org.koitharu.kotatsu.parsers.util.mapChapters
|
||||
import org.koitharu.kotatsu.parsers.util.mapNotNullToSet
|
||||
import org.koitharu.kotatsu.parsers.util.parseFailed
|
||||
import org.koitharu.kotatsu.parsers.util.parseHtml
|
||||
import org.koitharu.kotatsu.parsers.util.removeSuffix
|
||||
import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow
|
||||
import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl
|
||||
import org.koitharu.kotatsu.parsers.util.toTitleCase
|
||||
import org.koitharu.kotatsu.parsers.util.urlEncoded
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.EnumSet
|
||||
|
||||
@MangaSourceParser("ISEKAISCAN", "Isekai Scan", "en")
|
||||
internal class IsekaiScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.ISEKAISCAN, "isekaiscan.top", 16) {
|
||||
|
||||
override val tagPrefix = "mangas/"
|
||||
override val datePattern = "MMMM d, HH:mm"
|
||||
|
||||
override val sortOrders: Set<SortOrder> = EnumSet.of(
|
||||
SortOrder.POPULARITY,
|
||||
SortOrder.UPDATED,
|
||||
)
|
||||
|
||||
override suspend fun getListPage(
|
||||
page: Int,
|
||||
query: String?,
|
||||
tags: Set<MangaTag>?,
|
||||
sortOrder: SortOrder,
|
||||
): List<Manga> {
|
||||
val url = buildString {
|
||||
append("https://")
|
||||
append(domain)
|
||||
val pages = page + 1
|
||||
|
||||
when {
|
||||
!query.isNullOrEmpty() -> {
|
||||
|
||||
append("/?search=")
|
||||
append(query.urlEncoded())
|
||||
append("&page=")
|
||||
append(pages.toString())
|
||||
append("&post_type=wp-manga")
|
||||
}
|
||||
|
||||
!tags.isNullOrEmpty() -> {
|
||||
append("/mangas/")
|
||||
for (tag in tags) {
|
||||
append(tag.key)
|
||||
}
|
||||
|
||||
append("?orderby=2&page=")
|
||||
append(pages.toString())
|
||||
|
||||
}
|
||||
|
||||
else -> {
|
||||
|
||||
if (sortOrder == SortOrder.POPULARITY) {
|
||||
append("/popular-manga")
|
||||
}
|
||||
if (sortOrder == SortOrder.UPDATED) {
|
||||
append("/latest-manga")
|
||||
}
|
||||
append("?page=")
|
||||
append(pages.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
val doc = webClient.httpGet(url).parseHtml()
|
||||
return doc.select("div.row.c-tabs-item__content").ifEmpty {
|
||||
doc.select("div.page-item-detail.manga")
|
||||
}.map { div ->
|
||||
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
|
||||
val summary = div.selectFirst(".tab-summary") ?: div.selectFirst(".item-summary")
|
||||
Manga(
|
||||
id = generateUid(href),
|
||||
url = href,
|
||||
publicUrl = href.toAbsoluteUrl(div.host ?: domain),
|
||||
coverUrl = div.selectFirst("img")?.src().orEmpty(),
|
||||
title = (summary?.selectFirst("h3") ?: summary?.selectFirst("h4"))?.text().orEmpty(),
|
||||
altTitle = null,
|
||||
rating = div.selectFirst("span.total_votes")?.ownText()?.toFloatOrNull()?.div(5f) ?: -1f,
|
||||
tags = summary?.selectFirst(".mg_genres")?.select("a")?.mapNotNullToSet { a ->
|
||||
MangaTag(
|
||||
key = a.attr("href").removeSuffix('/').substringAfterLast('/'),
|
||||
title = a.text().ifEmpty { return@mapNotNullToSet null }.toTitleCase(),
|
||||
source = source,
|
||||
)
|
||||
}.orEmpty(),
|
||||
author = summary?.selectFirst(".mg_author")?.selectFirst("a")?.ownText(),
|
||||
state = when (summary?.selectFirst(".mg_status")?.selectFirst(".summary-content")?.ownText()?.trim()
|
||||
?.lowercase()) {
|
||||
"Ongoing" -> MangaState.ONGOING
|
||||
"Completed " -> MangaState.FINISHED
|
||||
else -> null
|
||||
},
|
||||
source = source,
|
||||
isNsfw = isNsfwSource,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun loadChapters(mangaUrl: String, document: Document): List<MangaChapter> {
|
||||
|
||||
|
||||
val mangaId = document.select("div[id^=manga-chapters-holder]").attr("data-id")
|
||||
|
||||
val doc = webClient.httpGet("https://$domain/ajax-list-chapter?mangaID=$mangaId").parseHtml()
|
||||
|
||||
val dateFormat = SimpleDateFormat(datePattern, sourceLocale)
|
||||
|
||||
return doc.select(selectchapter).mapChapters(reversed = true) { i, li ->
|
||||
val a = li.selectFirst("a")
|
||||
val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing")
|
||||
val link = href + stylepage
|
||||
MangaChapter(
|
||||
id = generateUid(href),
|
||||
url = link,
|
||||
name = a.ownText(),
|
||||
number = i + 1,
|
||||
branch = null,
|
||||
uploadDate = parseChapterDate(
|
||||
dateFormat,
|
||||
li.selectFirst(selectdate)?.text(),
|
||||
),
|
||||
scanlator = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
|
||||
val fullUrl = chapter.url.toAbsoluteUrl(domain)
|
||||
val doc = webClient.httpGet(fullUrl).parseHtml()
|
||||
val urlarray = doc.select("p#arraydata").text().split(",").toTypedArray()
|
||||
return urlarray.map { url ->
|
||||
MangaPage(
|
||||
id = generateUid(url),
|
||||
url = url,
|
||||
preview = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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("ITSYOURIGHTMANHUA", "Itsyourightmanhua", "en")
|
||||
internal class Itsyourightmanhua(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.ITSYOURIGHTMANHUA, "itsyourightmanhua.com", 10) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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("KSGROUPSCANS", "Ks Group Scans", "en")
|
||||
internal class KsGroupScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.KSGROUPSCANS, "ksgroupscans.com") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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("KUNMANGA", "Kun Manga", "en")
|
||||
internal class KunManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.KUNMANGA, "kunmanga.com", 10) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("LADYMANGA", "Lady Manga", "en")
|
||||
internal class LadyManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.LADYMANGA, "ladymanga.com") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
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("LILYMANGA", "LilyManga", "en")
|
||||
internal class LilyManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.LILYMANGA, "lilymanga.net") {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val tagPrefix = "ys-genre/"
|
||||
override val datePattern = "yyyy-MM-dd"
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
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("LOLICONMOBI", "LoliconMobi", "en")
|
||||
internal class LoliconMobi(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.LOLICONMOBI, "lolicon.mobi") {
|
||||
|
||||
override val postreq = true
|
||||
override val isNsfwSource = true
|
||||
override val tagPrefix = "lolicon-genre/"
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("LUXMANGA", "LuxManga", "en")
|
||||
internal class LuxManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.LUXMANGA, "luxmanga.net") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("MANGAACTION", "Manga Action", "en")
|
||||
internal class MangaAction(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGAACTION, "mangaaction.com") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("MANGAGALAXY", "Manga Galaxy", "en")
|
||||
internal class MangaGalaxy(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGAGALAXY, "mangagalaxy.me", 16) {
|
||||
|
||||
override val datePattern = "MM/dd/yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("MANGASTIC", "Mangastic", "en")
|
||||
internal class Mangastic(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGASTIC, "mangastic.cc", 20) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("TOONCHILL", "Toon Chill", "en")
|
||||
internal class ToonChill(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.TOONCHILL, "toonchill.com", 32) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("INFRAFANDUB", "infrafandub", "es")
|
||||
internal class Infrafandub(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.INFRAFANDUB, "infrafandub.xyz", 10) {
|
||||
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("MANGAMUNDODRAMA", "Manga Mundo Drama", "es")
|
||||
internal class MangaMundoDrama(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGAMUNDODRAMA, "inmortalscan.com") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("MANGAPT", "Mangapt", "es")
|
||||
internal class Mangapt(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGAPT, "mangapt.com") {
|
||||
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("NOBLESSETRANSLATIONS", "Noblesse Translations", "es")
|
||||
internal class NoblesseTranslations(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.NOBLESSETRANSLATIONS, "www.noblessetranslations.com") {
|
||||
|
||||
override val datePattern = "d MMMM, yyyy"
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
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("RAGNAROKSCAN", "Ragnarok Scan", "es")
|
||||
internal class RagnarokScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.RAGNAROKSCAN, "ragnarokscan.com") {
|
||||
|
||||
override val stylepage = ""
|
||||
override val tagPrefix = "genero/"
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("RAGNAROKSCANLATION", "Ragnarok Scanlation", "es")
|
||||
internal class RagnarokScanlation(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.RAGNAROKSCANLATION, "ragnarokscanlation.com") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("SAMURAISCAN", "Samurai Scan", "es")
|
||||
internal class SamuraiScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.SAMURAISCAN, "samuraiscan.com", 10) {
|
||||
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("SCAMBERTRASLATOR", "Scambertraslator", "es")
|
||||
internal class Scambertraslator(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.SCAMBERTRASLATOR, "scambertraslator.com") {
|
||||
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("TECNOSCANN", "TecnoScann", "es")
|
||||
internal class TecnoScann(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.TECNOSCANN, "tecnoscann.com", 24) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,128 @@
|
||||
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.Manga
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.model.MangaState
|
||||
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.attrAsRelativeUrl
|
||||
import org.koitharu.kotatsu.parsers.util.domain
|
||||
import org.koitharu.kotatsu.parsers.util.generateUid
|
||||
import org.koitharu.kotatsu.parsers.util.host
|
||||
import org.koitharu.kotatsu.parsers.util.mapNotNullToSet
|
||||
import org.koitharu.kotatsu.parsers.util.parseHtml
|
||||
import org.koitharu.kotatsu.parsers.util.removeSuffix
|
||||
import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow
|
||||
import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl
|
||||
import org.koitharu.kotatsu.parsers.util.toTitleCase
|
||||
import org.koitharu.kotatsu.parsers.util.urlEncoded
|
||||
import java.util.EnumSet
|
||||
|
||||
@MangaSourceParser("VERMANHWA", "Vermanhwa", "es")
|
||||
internal class Vermanhwa(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.VERMANHWA, "vermanhwa.es", 10) {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
|
||||
override val sortOrders: Set<SortOrder> = EnumSet.of(
|
||||
SortOrder.NEWEST,
|
||||
SortOrder.ALPHABETICAL,
|
||||
SortOrder.RATING,
|
||||
SortOrder.POPULARITY,
|
||||
SortOrder.UPDATED,
|
||||
|
||||
|
||||
)
|
||||
|
||||
override suspend fun getListPage(
|
||||
page: Int,
|
||||
query: String?,
|
||||
tags: Set<MangaTag>?,
|
||||
sortOrder: SortOrder,
|
||||
): List<Manga> {
|
||||
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("/manga-genre/")
|
||||
for (tag in tags) {
|
||||
append(tag.key)
|
||||
}
|
||||
append("/page/")
|
||||
append(pages.toString())
|
||||
}
|
||||
|
||||
else -> {
|
||||
|
||||
append("/manga/")
|
||||
append("/page/")
|
||||
append(pages.toString())
|
||||
append("?m_orderby=")
|
||||
if (sortOrder == SortOrder.NEWEST) {
|
||||
append("new-manga")
|
||||
}
|
||||
if (sortOrder == SortOrder.ALPHABETICAL) {
|
||||
append("alphabet")
|
||||
}
|
||||
if (sortOrder == SortOrder.RATING) {
|
||||
append("rating")
|
||||
}
|
||||
if (sortOrder == SortOrder.POPULARITY) {
|
||||
append("views")
|
||||
}
|
||||
if (sortOrder == SortOrder.UPDATED) {
|
||||
append("latest")
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
val doc = webClient.httpGet(url).parseHtml()
|
||||
return doc.select("div.row.c-tabs-item__content").ifEmpty {
|
||||
doc.select("div.page-item-detail.manga")
|
||||
}.map { div ->
|
||||
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
|
||||
val summary = div.selectFirst(".tab-summary") ?: div.selectFirst(".item-summary")
|
||||
Manga(
|
||||
id = generateUid(href),
|
||||
url = href,
|
||||
publicUrl = href.toAbsoluteUrl(div.host ?: domain),
|
||||
coverUrl = div.selectFirst("img")?.src().orEmpty(),
|
||||
title = (summary?.selectFirst("h3") ?: summary?.selectFirst("h4"))?.text().orEmpty(),
|
||||
altTitle = null,
|
||||
rating = div.selectFirst("span.total_votes")?.ownText()?.toFloatOrNull()?.div(5f) ?: -1f,
|
||||
tags = summary?.selectFirst(".mg_genres")?.select("a")?.mapNotNullToSet { a ->
|
||||
MangaTag(
|
||||
key = a.attr("href").removeSuffix('/').substringAfterLast('/'),
|
||||
title = a.text().ifEmpty { return@mapNotNullToSet null }.toTitleCase(),
|
||||
source = source,
|
||||
)
|
||||
}.orEmpty(),
|
||||
author = summary?.selectFirst(".mg_author")?.selectFirst("a")?.ownText(),
|
||||
state = when (summary?.selectFirst(".mg_status")?.selectFirst(".summary-content")?.ownText()?.trim()
|
||||
?.lowercase()) {
|
||||
"OnGoing" -> MangaState.ONGOING
|
||||
"Completed" -> MangaState.FINISHED
|
||||
else -> null
|
||||
},
|
||||
source = source,
|
||||
isNsfw = isNsfwSource,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.fr
|
||||
|
||||
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("KARATCAMSCANS", "Karatcam Scans", "fr")
|
||||
internal class KaratcamScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.KARATCAMSCANS, "karatcam-scans.fr") {
|
||||
|
||||
override val tagPrefix = "webtoon-genre/"
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.fr
|
||||
|
||||
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("MANGAHUB", "Manga Hub", "fr")
|
||||
internal class MangaHub(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGAHUB, "mangahub.fr") {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern = "d MMMM yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.fr
|
||||
|
||||
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("MANGASCANTRADUNOFFICIAL", "Manga Scantrad ( Unofficial )", "fr")
|
||||
internal class MangaScantradUnofficial(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGASCANTRADUNOFFICIAL, "www.mangascantrad.fr", 10) {
|
||||
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.fr
|
||||
|
||||
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("RAIJINSCANS", "Raijin Scans", "fr")
|
||||
internal class RaijinScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.RAIJINSCANS, "raijinscans.fr") {
|
||||
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.fr
|
||||
|
||||
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.madara.MadaraParser
|
||||
import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl
|
||||
import org.koitharu.kotatsu.parsers.util.domain
|
||||
import org.koitharu.kotatsu.parsers.util.generateUid
|
||||
import org.koitharu.kotatsu.parsers.util.mapChapters
|
||||
import org.koitharu.kotatsu.parsers.util.parseHtml
|
||||
import org.koitharu.kotatsu.parsers.util.removeSuffix
|
||||
import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow
|
||||
import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl
|
||||
import java.text.SimpleDateFormat
|
||||
|
||||
@MangaSourceParser("TOONFR", "Toon Fr", "fr")
|
||||
internal class ToonFr(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.TOONFR, "toonfr.com") {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val tagPrefix = "webtoon-genre/"
|
||||
override val datePattern = "MMM d"
|
||||
|
||||
override suspend fun loadChapters(mangaUrl: String, document: Document): List<MangaChapter> {
|
||||
val url = mangaUrl.toAbsoluteUrl(domain).removeSuffix('/') + "/ajax/chapters/"
|
||||
val dateFormat = SimpleDateFormat(datePattern, sourceLocale)
|
||||
val doc = webClient.httpPost(url, emptyMap()).parseHtml()
|
||||
|
||||
return doc.select("li.wp-manga-chapter").mapChapters(reversed = true) { i, li ->
|
||||
val a = li.selectFirstOrThrow("a")
|
||||
val href = a.attrAsRelativeUrl("href") + "?style=list"
|
||||
|
||||
// correct parse date missing a "."
|
||||
val dateOrg = li.selectFirst("span.chapter-release-date i")?.text() ?: "janv 1, 2000"
|
||||
val dateCorrectParse = dateOrg
|
||||
.replace("Jan", "janv.")
|
||||
.replace("Févr", "févr.")
|
||||
.replace("Avr", "avr.")
|
||||
.replace("Juil", "juil.")
|
||||
.replace("Sept", "sept.")
|
||||
.replace("Nov", "nov.")
|
||||
.replace("Oct", "oct.")
|
||||
.replace("Déc", "déc.")
|
||||
MangaChapter(
|
||||
id = generateUid(href),
|
||||
url = href,
|
||||
name = a.text(),
|
||||
number = i + 1,
|
||||
branch = null,
|
||||
uploadDate = parseChapterDate(
|
||||
dateFormat,
|
||||
dateCorrectParse,
|
||||
),
|
||||
scanlator = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.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.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("KLIKMANGA", "Klik Manga", "id")
|
||||
internal class KlikManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.KLIKMANGA, "klikmanga.id", 36) {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val tagPrefix = "genre/"
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.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.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("MGKOMIK", "Mgkomik", "id")
|
||||
internal class Mgkomik(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MGKOMIK, "mgkomik.com", 20) {
|
||||
|
||||
override val tagPrefix = "genres/"
|
||||
override val datePattern = "dd MMM yy"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.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.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("POJOKMANGA", "PojokManga", "id")
|
||||
internal class PojokManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.POJOKMANGA, "pojokmanga.net") {
|
||||
|
||||
override val tagPrefix = "komik-genre/"
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.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.madara.MadaraParser
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("SHINIGAMI", "Shinigami", "id")
|
||||
internal class Shinigami(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.SHINIGAMI, "shinigami.id", 10) {
|
||||
|
||||
override val tagPrefix = "genre/"
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.ko
|
||||
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("RAWDEX", "Raw Dex", "ko")
|
||||
internal class RawDex(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.RAWDEX, "rawdex.net", 40) {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("ILLUSIONSCAN", "Illusion Scan", "pt")
|
||||
internal class IllusionScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.ILLUSIONSCAN, "illusionscan.com") {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("IMPERIOSCANS", "Imperio Scans", "pt")
|
||||
internal class ImperioScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.IMPERIOSCANS, "imperioscans.com.br") {
|
||||
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("LEITORKAMISAMA", "Leitor Kamisama", "pt")
|
||||
internal class LeitorKamisama(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.LEITORKAMISAMA, "leitor.kamisama.com.br", 10) {
|
||||
|
||||
override val tagPrefix = "manga-tag/"
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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("LERYAOI", "LerYaoi", "pt")
|
||||
internal class LerYaoi(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.LERYAOI, "leryaoi.com", 10) {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val tagPrefix = "genero/"
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("MOMONOHANASCAN", "Momonohana Scan", "pt")
|
||||
internal class MomonohanaScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MOMONOHANASCAN, "momonohanascan.com", 10) {
|
||||
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("MOONLOVERSSCAN", "Moon Lovers Scan", "pt")
|
||||
internal class MoonLoversScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MOONLOVERSSCAN, "moonloversscan.com.br", 10) {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("MOONWITCHINLOVESCAN", "Moon Witchin Love Scan", "pt")
|
||||
internal class Moonwitchinlovescan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MOONWITCHINLOVESCAN, "moonwitchinlovescan.com", 10) {
|
||||
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("NOINDEXSCAN", "Noindex Scan", "pt")
|
||||
internal class NoindexScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.NOINDEXSCAN, "noindexscan.com") {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("PEACHSCAN", "Peach Scan", "pt")
|
||||
internal class PeachScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.PEACHSCAN, "www.peachscan.com", 10) {
|
||||
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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("PIRULITOROSA", "Pirulitorosa", "pt")
|
||||
internal class Pirulitorosa(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.PIRULITOROSA, "pirulitorosa.site") {
|
||||
|
||||
override val postreq = true
|
||||
override val isNsfwSource = true
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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("PORTALYAOI", "PortalYaoi", "pt")
|
||||
internal class PortalYaoi(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.PORTALYAOI, "portalyaoi.com", 10) {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val tagPrefix = "genero/"
|
||||
override val datePattern: String = "dd/MM"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("PROJETOSCANLATOR", "Projeto Scanlator", "pt")
|
||||
internal class ProjetoScanlator(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.PROJETOSCANLATOR, "projetoscanlator.com", 10) {
|
||||
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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("PSUNICORN", "Psunicorn", "pt")
|
||||
internal class Psunicorn(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.PSUNICORN, "psunicorn.com") {
|
||||
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern: String = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("RAINBOWFAIRYSCAN", "Rainbow Fairy Scan", "pt")
|
||||
internal class RainbowFairyScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.RAINBOWFAIRYSCAN, "rainbowfairyscan.com", 10) {
|
||||
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("RANDOMSCANS", "Random Scans", "pt")
|
||||
internal class RandomScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.RANDOMSCANS, "randomscans.com") {
|
||||
|
||||
override val datePattern: String = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,13 @@
|
||||
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("ROGMANGAS", "Rog Mangas", "pt")
|
||||
internal class RogMangas(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.ROGMANGAS, "rogmangas.com", 51) {
|
||||
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
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("TANKOUHENTAI", "Tankou Hentai", "pt")
|
||||
internal class TankouHentai(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.TANKOUHENTAI, "tankouhentai.com", pageSize = 16) {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
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("THESUGARSCAN", "The Sugar Scan", "pt")
|
||||
internal class TheSugarScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.THESUGARSCAN, "thesugarscan.com", pageSize = 15) {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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("VALKYRIESCAN", "Valkyrie Scan", "pt")
|
||||
internal class ValkyrieScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.VALKYRIESCAN, "valkyriescan.com", pageSize = 10) {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("WINTERSCAN", "Winter Scan", "pt")
|
||||
internal class WinterScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.WINTERSCAN, "winterscan.com", pageSize = 20) {
|
||||
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue