commit
69af4fe586
@ -0,0 +1,219 @@
|
||||
package org.koitharu.kotatsu.parsers.site
|
||||
|
||||
import okhttp3.Headers
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.PagedMangaParser
|
||||
import org.koitharu.kotatsu.parsers.config.ConfigKey
|
||||
import org.koitharu.kotatsu.parsers.exception.ParseException
|
||||
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.RATING_UNKNOWN
|
||||
import org.koitharu.kotatsu.parsers.model.SortOrder
|
||||
import org.koitharu.kotatsu.parsers.network.UserAgents
|
||||
import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrl
|
||||
import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrlOrNull
|
||||
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.mapChapters
|
||||
import org.koitharu.kotatsu.parsers.util.mapNotNullToSet
|
||||
import org.koitharu.kotatsu.parsers.util.mapToSet
|
||||
import org.koitharu.kotatsu.parsers.util.parseFailed
|
||||
import org.koitharu.kotatsu.parsers.util.parseHtml
|
||||
import org.koitharu.kotatsu.parsers.util.requireElementById
|
||||
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.tryParse
|
||||
import org.koitharu.kotatsu.parsers.util.urlEncoded
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.EnumSet
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("SCANTRADUNION", "Scantrad Union", "fr")
|
||||
internal class ScantradUnion(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.SCANTRADUNION, 10) {
|
||||
|
||||
override val sortOrders: Set<SortOrder> = EnumSet.of(
|
||||
SortOrder.ALPHABETICAL,
|
||||
SortOrder.UPDATED,
|
||||
)
|
||||
|
||||
override val configKeyDomain = ConfigKey.Domain("scantrad-union.com")
|
||||
|
||||
override val headers: Headers = Headers.Builder()
|
||||
.add("User-Agent", UserAgents.CHROME_DESKTOP)
|
||||
.build()
|
||||
|
||||
override suspend fun getListPage(
|
||||
page: Int,
|
||||
query: String?,
|
||||
tags: Set<MangaTag>?,
|
||||
sortOrder: SortOrder,
|
||||
): List<Manga> {
|
||||
val url = buildString {
|
||||
append("https://")
|
||||
append(domain)
|
||||
when {
|
||||
!query.isNullOrEmpty() -> {
|
||||
append("/page/")
|
||||
append(page.toString())
|
||||
append("/?s=")
|
||||
append(query.urlEncoded())
|
||||
|
||||
}
|
||||
|
||||
!tags.isNullOrEmpty() -> {
|
||||
append("/tag/")
|
||||
for (tag in tags) {
|
||||
append(tag.key)
|
||||
append(',')
|
||||
}
|
||||
append("/page/")
|
||||
append(page.toString())
|
||||
}
|
||||
|
||||
else -> {
|
||||
|
||||
if (sortOrder == SortOrder.ALPHABETICAL) {
|
||||
append("/manga/")
|
||||
append("/page/")
|
||||
append(page.toString())
|
||||
}
|
||||
|
||||
if (sortOrder == SortOrder.UPDATED) {
|
||||
append("")
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
val doc = webClient.httpGet(url).parseHtml()
|
||||
if (doc.getElementById("dernierschapitres") != null) {
|
||||
val root = doc.requireElementById("dernierschapitres")
|
||||
return root.select("div.colonne")
|
||||
.map { article ->
|
||||
val href = article.selectFirstOrThrow("a.index-top4-a").attrAsAbsoluteUrl("href")
|
||||
Manga(
|
||||
id = generateUid(href),
|
||||
title = article.select(".carteinfos a").text(),
|
||||
altTitle = null,
|
||||
url = href,
|
||||
publicUrl = href.toAbsoluteUrl(domain),
|
||||
rating = RATING_UNKNOWN,
|
||||
isNsfw = false,
|
||||
coverUrl = article.selectFirstOrThrow("img.attachment-thumbnail").attrAsAbsoluteUrl("src"),
|
||||
tags = setOf(),
|
||||
state = null,
|
||||
author = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
} else {
|
||||
val root = doc.requireElementById("main")
|
||||
return root.select("article.post-outer")
|
||||
.map { article ->
|
||||
val href = article.selectFirstOrThrow("a.thumb-link").attrAsAbsoluteUrl("href")
|
||||
Manga(
|
||||
id = generateUid(href),
|
||||
title = article.select(".index-post-header a").text(),
|
||||
altTitle = null,
|
||||
url = href,
|
||||
publicUrl = href.toAbsoluteUrl(domain),
|
||||
rating = RATING_UNKNOWN,
|
||||
isNsfw = false,
|
||||
coverUrl = article.selectFirstOrThrow("img").attrAsAbsoluteUrl("src"),
|
||||
tags = setOf(),
|
||||
state = null,
|
||||
author = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
override suspend fun getDetails(manga: Manga): Manga {
|
||||
val root = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml().requireElementById("main")
|
||||
val dateFormat = SimpleDateFormat("dd-MM-yyyy", Locale.FRANCE)
|
||||
|
||||
return manga.copy(
|
||||
altTitle = root.select(".divider2:contains(Noms associés :)").firstOrNull()?.text(),
|
||||
state = when (root.select(".label.label-primary")[2].text()) {
|
||||
"En cours" -> MangaState.ONGOING
|
||||
"Terminé", "Abondonné", "One Shot" -> MangaState.FINISHED
|
||||
else -> null
|
||||
},
|
||||
tags = root.select("div.project-details a[href*=tag]").mapNotNullToSet { a ->
|
||||
MangaTag(
|
||||
key = a.attr("href").removeSuffix("/").substringAfterLast('/'),
|
||||
title = a.text().toTitleCase(),
|
||||
source = source,
|
||||
)
|
||||
},
|
||||
author = root.select("div.project-details a[href*=auteur]").text(),
|
||||
description = root.selectFirst("p.sContent")?.html(),
|
||||
chapters = root.select("div.chapter-list li")
|
||||
.mapChapters(reversed = true) { i, li ->
|
||||
|
||||
val href = li.getElementsByTag("a").firstNotNullOf { a ->
|
||||
a.attrAsAbsoluteUrlOrNull("href")?.takeIf { it.contains("https://$domain/read/") }
|
||||
}
|
||||
|
||||
val name = if (li.select(".chapter-name").isNullOrEmpty()) {
|
||||
li.select(".chapter-name").text()
|
||||
} else {
|
||||
"Chapter $i"
|
||||
}
|
||||
val date = li.select(".name-chapter").first()!!.children().elementAt(2).text()
|
||||
MangaChapter(
|
||||
id = generateUid(href),
|
||||
name = name,
|
||||
number = i,
|
||||
url = href,
|
||||
scanlator = null,
|
||||
uploadDate = dateFormat.tryParse(date),
|
||||
branch = null,
|
||||
source = source,
|
||||
)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
|
||||
val fullUrl = chapter.url.toAbsoluteUrl(domain)
|
||||
val doc = webClient.httpGet(fullUrl).parseHtml()
|
||||
val root = doc.body().selectFirst("#webtoon")
|
||||
?: throw ParseException("Root not found", fullUrl)
|
||||
return root.select("img").map { img ->
|
||||
val url = img.attrAsRelativeUrlOrNull("data-src") ?: img.attrAsRelativeUrlOrNull("src")
|
||||
?: img.parseFailed("Image src not found")
|
||||
MangaPage(
|
||||
id = generateUid(url),
|
||||
url = url,
|
||||
preview = null,
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun getTags(): Set<MangaTag> {
|
||||
val doc = webClient.httpGet("https://$domain/").parseHtml()
|
||||
val body = doc.body()
|
||||
val root = body.select(".asp_gochosen")[1]
|
||||
val list = root?.select("option").orEmpty()
|
||||
return list.mapToSet { li ->
|
||||
|
||||
MangaTag(
|
||||
key = li.text(),
|
||||
title = li.text(),
|
||||
source = source,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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("AZORANOV", "Azoranov", "ar")
|
||||
internal class Azoranov(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.AZORANOV, "azoranov.com", pageSize = 10) {
|
||||
|
||||
override val tagPrefix = "novel-genre/"
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("ar", "AR")
|
||||
}
|
||||
@ -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("GATEMANGA", "Gate Manga", "ar")
|
||||
internal class GateManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.GATEMANGA, "gatemanga.com") {
|
||||
|
||||
override val postreq = true
|
||||
override val datePattern = "d MMMM، yyyy"
|
||||
override val sourceLocale: Locale = Locale("ar", "AR")
|
||||
}
|
||||
@ -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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("WEBTOONEMPIRE", "Webtoon Empire", "ar")
|
||||
internal class WebtoonEmpire(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.WEBTOONEMPIRE, "webtoonempire.org", pageSize = 10) {
|
||||
|
||||
override val datePattern = "d MMMM yyyy"
|
||||
override val sourceLocale: Locale = Locale("ar", "AR")
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
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("ADULT_WEBTOON", "Adult Webtoon", "en")
|
||||
internal class AdultWebtoon(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.ADULT_WEBTOON, "adultwebtoon.com") {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val tagPrefix = "adult-webtoon-genre/"
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val postreq = true
|
||||
}
|
||||
@ -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("ANSHSCANS", "Ansh Scans", "en")
|
||||
internal class AnshScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.ANSHSCANS, "anshscans.org", 10) {
|
||||
|
||||
override val tagPrefix = "genre/"
|
||||
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
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("ASTRALLIBRARY", "Astrallibrary", "en")
|
||||
internal class Astrallibrary(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.ASTRALLIBRARY, "astrallibrary.net", 18) {
|
||||
|
||||
override val datePattern = "dd MMM"
|
||||
override val postreq = true
|
||||
}
|
||||
@ -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("BABELWUXIA", "Babelwuxia", "en")
|
||||
internal class Babelwuxia(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.BABELWUXIA, "read.babelwuxia.com") {
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
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("BLOG_MANGA", "Blog Manga", "en")
|
||||
internal class BlogManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.BLOG_MANGA, "blogmanga.net") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val postreq = true
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
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("BOYS_LOVE", "Boys Love", "en")
|
||||
internal class BoysLove(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.BOYS_LOVE, "boyslove.me", 20) {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val tagPrefix = "boyslove-genre/"
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val postreq = true
|
||||
}
|
||||
@ -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("CM_READER", "Cm Reader", "en")
|
||||
internal class CmReader(context: MangaLoaderContext) : MadaraParser(context, MangaSource.CM_READER, "cmreader.info") {
|
||||
|
||||
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("COFFEE_MANGA", "Coffee Manga", "en")
|
||||
internal class CoffeeManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.COFFEE_MANGA, "coffeemanga.io") {
|
||||
|
||||
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("COLORED_MANGA", "Colored Manga", "en")
|
||||
internal class ColoredManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.COLORED_MANGA, "coloredmanga.com") {
|
||||
|
||||
override val tagPrefix = "manga-tag/"
|
||||
override val datePattern = "dd-MMM"
|
||||
}
|
||||
@ -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("DARK_SCANS", "DarkScans", "en")
|
||||
internal class DarkScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.DARK_SCANS, "darkscans.com", 18) {
|
||||
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("DECADENCESCANS", "Decadence Scans", "en")
|
||||
internal class DecadenceScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.DECADENCESCANS, "reader.decadencescans.com", 10) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val isNsfwSource = true
|
||||
}
|
||||
@ -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("DRAKESCANS", "Drake Scans", "en")
|
||||
internal class DrakeScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.DRAKESCANS, "drakescans.com", 10) {
|
||||
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
override val tagPrefix = "series-genre/"
|
||||
}
|
||||
@ -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("FREEMANGATOP", "Free Manga Top", "en")
|
||||
internal class FreeMangaTop(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.FREEMANGATOP, "freemangatop.com") {
|
||||
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("FREEWEBTOONCOINS", "Free Webtoon Coins", "en")
|
||||
internal class FreeWebtoonCoins(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.FREEWEBTOONCOINS, "freewebtooncoins.com") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val tagPrefix = "webtoon-genre/"
|
||||
}
|
||||
@ -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("GDSCANS", "GdScans", "en")
|
||||
internal class GdScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.GDSCANS, "gdscans.com", 10) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val tagPrefix = "webtoon-genre/"
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
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("HMANHWA", "HManhwa", "en")
|
||||
internal class HManhwa(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.HMANHWA, "hmanhwa.com") {
|
||||
|
||||
override val tagPrefix = "manhwa-genre/"
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern = "dd MMM"
|
||||
override val postreq = true
|
||||
|
||||
}
|
||||
@ -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("HENTAIMANGA", "Hentai Manga", "en")
|
||||
internal class HentaiManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.HENTAIMANGA, "hentaimanga.me", 36) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val isNsfwSource = true
|
||||
override val postreq = true
|
||||
}
|
||||
@ -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("HENTAIWEBTOON", "Hentai Webtoon", "en")
|
||||
internal class HentaiWebtoon(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.HENTAIWEBTOON, "hentaiwebtoon.com") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val isNsfwSource = true
|
||||
override val postreq = true
|
||||
|
||||
}
|
||||
@ -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("HENTAIXCOMIC", "Hentai x Comic", "en")
|
||||
internal class HentaixComic(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.HENTAIXCOMIC, "hentaixcomic.com", 16) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val isNsfwSource = true
|
||||
override val postreq = true
|
||||
}
|
||||
@ -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("HENTAIXYURI", "Hentai x Yuri", "en")
|
||||
internal class HentaixYuri(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.HENTAIXYURI, "hentaixyuri.com", 16) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val isNsfwSource = true
|
||||
override val postreq = true
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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("HSCANS", "Hscans", "en")
|
||||
internal class Hscans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.HSCANS, "hscans.com", 10) {
|
||||
|
||||
override val tagPrefix = "manga-tag/"
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
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("PARAGONSCANS", "Paragonscans", "en")
|
||||
internal class Paragonscans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.PARAGONSCANS, "paragonscans.com", pageSize = 50) {
|
||||
|
||||
override val datePattern = "MM/dd/yyyy"
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("APOLL_COMICS", "Apoll Comics", "es")
|
||||
internal class ApollComics(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.APOLL_COMICS, "apollcomics.com", 10) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("es")
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("COPYPASTESCAN", "Copypastescan", "es")
|
||||
internal class Copypastescan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.COPYPASTESCAN, "copypastescan.xyz", 10) {
|
||||
|
||||
override val datePattern = "d MMMM, yyyy"
|
||||
override val sourceLocale: Locale = Locale("es")
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("DAPROB", "Daprob", "es")
|
||||
internal class Daprob(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.DAPROB, "daprob.com") {
|
||||
|
||||
override val datePattern = "d 'de' MMMMM 'de' yyyy"
|
||||
override val sourceLocale: Locale = Locale("es")
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("DOKKOMANGA", "Dokko Manga", "es")
|
||||
internal class DokkoManga(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.DOKKOMANGA, "dokkomanga.com", 10) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("es")
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("EMPERORSCAN", "Emperor Scan", "es")
|
||||
internal class EmperorScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.EMPERORSCAN, "dokkomanga.com") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("es")
|
||||
}
|
||||
@ -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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("EROMIAU", "Eromiau", "es")
|
||||
internal class Eromiau(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.EROMIAU, "www.eromiau.com", 10) {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("es")
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("HERENSCAN", "Heren Scan", "es")
|
||||
internal class HerenScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.HERENSCAN, "herenscan.com") {
|
||||
|
||||
override val datePattern = "d 'de' MMMMM 'de' yyyy"
|
||||
override val sourceLocale: Locale = Locale("es")
|
||||
}
|
||||
@ -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("MANGAREADERPRO", "Manga Reader Pro", "es")
|
||||
internal class MangaReaderpro(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGAREADERPRO, "mangareaderpro.com", 10) {
|
||||
|
||||
override val datePattern = "MM/dd/yyyy"
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("MUNDO_MANHWA", "Mundo Manhwa", "es")
|
||||
internal class MundoManhwa(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MUNDO_MANHWA, "mundomanhwa.com", 10) {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("es")
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("BLUESOLO", "Blue Solo", "fr")
|
||||
internal class BlueSolo(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.BLUESOLO, "www1.bluesolo.org", 10) {
|
||||
|
||||
override val datePattern = "d MMMM yyyy"
|
||||
override val sourceLocale: Locale = Locale.FRENCH
|
||||
}
|
||||
@ -0,0 +1,63 @@
|
||||
package org.koitharu.kotatsu.parsers.site.madara.fr
|
||||
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
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.site.madara.MadaraParser
|
||||
import org.koitharu.kotatsu.parsers.util.domain
|
||||
import org.koitharu.kotatsu.parsers.util.mapNotNullToSet
|
||||
import org.koitharu.kotatsu.parsers.util.parseHtml
|
||||
import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl
|
||||
import org.koitharu.kotatsu.parsers.util.toTitleCase
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("HENTAISCANTRADVF", "Hentai-Scantrad", "fr")
|
||||
internal class HentaiScantradVf(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.HENTAISCANTRADVF, "hentai.scantrad-vf.cc") {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern = "d MMMM, yyyy"
|
||||
override val sourceLocale: Locale = Locale.FRENCH
|
||||
|
||||
override suspend fun getDetails(manga: Manga): Manga = coroutineScope {
|
||||
val fullUrl = manga.url.toAbsoluteUrl(domain)
|
||||
val doc = webClient.httpGet(fullUrl).parseHtml()
|
||||
|
||||
val chaptersDeferred = async { loadChapters(manga.url, doc) }
|
||||
|
||||
val stateselect = doc.body().select("div.summary-content").last()
|
||||
val state =
|
||||
stateselect?.let {
|
||||
when (it.text()) {
|
||||
in ongoing -> MangaState.ONGOING
|
||||
in finished -> MangaState.FINISHED
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
val desc = doc.body().selectFirst("div.description-summary div.summary__content")?.text()
|
||||
?: doc.body() .selectFirst("div.datas_synopsis")?.text()
|
||||
|
||||
manga.copy(
|
||||
tags = doc.body().select("div.genres-content a").mapNotNullToSet { a ->
|
||||
MangaTag(
|
||||
key = a.attr("href").removeSuffix("/").substringAfterLast('/'),
|
||||
title = a.text().toTitleCase(),
|
||||
source = source,
|
||||
)
|
||||
},
|
||||
description = desc,
|
||||
altTitle =
|
||||
doc.body().select(".post-content_item:contains(Alt) .summary-content").firstOrNull()?.tableValue()?.text()
|
||||
?.trim() ?: doc.body().select(".post-content_item:contains(Nomes alternativos: ) .summary-content")
|
||||
.firstOrNull()?.tableValue()?.text()?.trim(),
|
||||
state = state,
|
||||
chapters = chaptersDeferred.await(),
|
||||
)
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("MANGASORIGINES", "Mangas Origines", "fr")
|
||||
internal class MangasOrigines(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGASORIGINES, "mangas-origines.fr") {
|
||||
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
override val sourceLocale: Locale = Locale.FRENCH
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("MANGASORIGINESUNOFFICIAL", "Mangas Origines ( unofficial )", "fr")
|
||||
internal class MangasOriginesUnofficial(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.MANGASORIGINESUNOFFICIAL, "mangas-origines.xyz") {
|
||||
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale.FRENCH
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("PANTHEONSCAN", "Pantheon Scan", "fr")
|
||||
internal class PantheonScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.PANTHEONSCAN, "pantheon-scan.com") {
|
||||
|
||||
override val datePattern = "d MMMM yyyy"
|
||||
override val sourceLocale: Locale = Locale.FRENCH
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
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
|
||||
import java.util.Locale
|
||||
|
||||
@MangaSourceParser("SCANHENTAIMENU", "Scan Hentai Menu", "fr")
|
||||
internal class ScanHentaiMenu(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.SCANHENTAIMENU, "scan.hentai.menu") {
|
||||
|
||||
override val isNsfwSource = true
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale.FRENCH
|
||||
}
|
||||
@ -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("SHADOWTRAD", "Shadow Trad", "fr")
|
||||
internal class ShadowTrad(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.SHADOWTRAD, "shadowtrad.net", 10) {
|
||||
|
||||
override val datePattern = "MMMM 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("KOMIKSA", "Komiksay", "id")
|
||||
internal class Komiksay(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.KOMIKSA, "komiksay.site") {
|
||||
|
||||
override val tagPrefix = "komik-genre/"
|
||||
override val datePattern = "MMMM d"
|
||||
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("WORLDMANHWAS", "Worldmanhwas", "id")
|
||||
internal class Worldmanhwas(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.WORLDMANHWAS, "worldmanhwas.bar", 10) {
|
||||
|
||||
override val tagPrefix = "komik-genre/"
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
}
|
||||
@ -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("ARTHUR_SCAN", "Arthur Scan", "pt")
|
||||
internal class ArthurScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.ARTHUR_SCAN, "arthurscan.xyz") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("pt", "PT")
|
||||
|
||||
}
|
||||
@ -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("CABAREDOWATAME", "Dessert Scan", "pt")
|
||||
internal class Cabaredowatame(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.CABAREDOWATAME, "cabaredowatame.site", 10) {
|
||||
|
||||
override val datePattern = "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("CAFECOMYAOI", "Cafecom Yaoi", "pt")
|
||||
internal class CafecomYaoi(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.CAFECOMYAOI, "cafecomyaoi.com.br") {
|
||||
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
override val postreq = true
|
||||
}
|
||||
@ -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
|
||||
import java.util.Locale
|
||||
|
||||
|
||||
@MangaSourceParser("CERISE_SCANS", "Cerise Scans", "pt")
|
||||
internal class CeriseScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.CERISE_SCANS, "cerisescans.com") {
|
||||
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
override val sourceLocale: Locale = Locale("pt", "PT")
|
||||
}
|
||||
@ -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("FBSQUADS", "Fbsquads", "pt")
|
||||
internal class Fbsquads(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.FBSQUADS, "fbsquads.com") {
|
||||
|
||||
override val tagPrefix = "manga-tag/"
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
override val isNsfwSource = true
|
||||
}
|
||||
@ -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("FINALSCANS", "Final Scans", "pt")
|
||||
internal class FinalScans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.FINALSCANS, "finalscans.com") {
|
||||
|
||||
override val datePattern: String = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("pt", "PT")
|
||||
override val isNsfwSource = true
|
||||
}
|
||||
@ -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
|
||||
import java.util.Locale
|
||||
|
||||
|
||||
@MangaSourceParser("FOXWHITE", "Fox White", "pt")
|
||||
internal class FoxWhite(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.FOXWHITE, "foxwhite.com.br") {
|
||||
|
||||
override val datePattern = "MMMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale("pt", "PT")
|
||||
}
|
||||
@ -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("GEKKOU", "Gekkou", "pt")
|
||||
internal class Gekkou(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.GEKKOU, "gekkou.com.br", 10) {
|
||||
|
||||
override val tagPrefix = "genero/"
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
override val sourceLocale: Locale = Locale("pt", "PT")
|
||||
}
|
||||
@ -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("GOOFFANSUB", "Goof Fansub", "pt")
|
||||
internal class GoofFansub(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.GOOFFANSUB, "gooffansub.com") {
|
||||
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
override val isNsfwSource = true
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
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("HENTAIGEKKOU", "Hentai Gekkou", "pt")
|
||||
internal class HentaiGekkou(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.HENTAIGEKKOU, "hentai.gekkouscans.com.br", 10) {
|
||||
|
||||
override val tagPrefix = "genero/"
|
||||
override val datePattern: String = "dd 'de' MMMMM 'de' yyyy"
|
||||
override val sourceLocale: Locale = Locale("pt", "PT")
|
||||
override val isNsfwSource = true
|
||||
}
|
||||
@ -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("NEOX_SCANS", "Neox scans", "pt")
|
||||
internal class Neoxscans(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.NEOX_SCANS, "neoxscans.net", 18) {
|
||||
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue