add filter on sources
Remove Komikgo redirect to ManhwaLand Add Template PizzaReaderParser and move FmTeam Add PhoenixScans, TuttoAnimeManga, LupiTeam, LadyEstelarScan, GtoTheGreatSite
This commit is contained in:
@@ -20,7 +20,7 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex
|
||||
override val availableStates: Set<MangaState> =
|
||||
EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.ABANDONED)
|
||||
|
||||
override val configKeyDomain = ConfigKey.Domain("team11x11.fun")
|
||||
override val configKeyDomain = ConfigKey.Domain("team1x12.com")
|
||||
override val isMultipleTagsSupported = false
|
||||
|
||||
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
||||
|
||||
@@ -30,6 +30,8 @@ class Manhwa18Parser(context: MangaLoaderContext) :
|
||||
MangaState.PAUSED,
|
||||
)
|
||||
|
||||
override val isTagsExclusionSupported = true
|
||||
|
||||
private val tagsMap = SuspendLazy(::parseTags)
|
||||
|
||||
override suspend fun getFavicons(): Favicons {
|
||||
@@ -64,6 +66,13 @@ class Manhwa18Parser(context: MangaLoaderContext) :
|
||||
)
|
||||
}
|
||||
|
||||
append("&reject_genres=")
|
||||
if (filter.tagsExclude.isNotEmpty()) {
|
||||
append(
|
||||
filter.tagsExclude.joinToString(",") { it.key },
|
||||
)
|
||||
}
|
||||
|
||||
append("&sort=")
|
||||
append(
|
||||
when (filter.sortOrder) {
|
||||
|
||||
@@ -24,6 +24,8 @@ class TuMangaOnlineParser(context: MangaLoaderContext) : PagedMangaParser(
|
||||
|
||||
private val chapterDateFormat = SimpleDateFormat("yyyy-MM-dd", sourceLocale)
|
||||
|
||||
override val availableContentRating: Set<ContentRating> = EnumSet.of(ContentRating.SAFE, ContentRating.ADULT)
|
||||
|
||||
override val availableSortOrders: Set<SortOrder> = EnumSet.of(
|
||||
SortOrder.ALPHABETICAL,
|
||||
SortOrder.ALPHABETICAL_DESC,
|
||||
@@ -64,6 +66,17 @@ class TuMangaOnlineParser(context: MangaLoaderContext) : PagedMangaParser(
|
||||
append(tag.key)
|
||||
}
|
||||
}
|
||||
|
||||
filter.contentRating.oneOrThrowIfMany()?.let {
|
||||
append("&erotic=")
|
||||
append(
|
||||
when (it) {
|
||||
ContentRating.SAFE -> "false"
|
||||
ContentRating.ADULT -> "true"
|
||||
else -> ""
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
null -> {
|
||||
|
||||
@@ -34,6 +34,8 @@ internal abstract class FmreaderParser(
|
||||
MangaState.ABANDONED,
|
||||
)
|
||||
|
||||
override val isTagsExclusionSupported = true
|
||||
|
||||
protected open val listUrl = "/manga-list.html"
|
||||
protected open val datePattern = "MMMM d, yyyy"
|
||||
protected open val tagPrefix = "manga-list-genre-"
|
||||
@@ -81,6 +83,9 @@ internal abstract class FmreaderParser(
|
||||
append("&genre=")
|
||||
append(filter.tags.joinToString(",") { it.key })
|
||||
|
||||
append("&ungenre=")
|
||||
append(filter.tagsExclude.joinToString(",") { it.key })
|
||||
|
||||
|
||||
append("&sort=")
|
||||
when (filter.sortOrder) {
|
||||
|
||||
@@ -38,11 +38,10 @@ internal class Manhwa18Com(context: MangaLoaderContext) :
|
||||
is MangaListFilter.Advanced -> {
|
||||
|
||||
append("&accept_genres=")
|
||||
if (filter.tags.isNotEmpty()) {
|
||||
append(
|
||||
filter.tags.joinToString(",") { it.key },
|
||||
)
|
||||
}
|
||||
append(filter.tags.joinToString(",") { it.key })
|
||||
|
||||
append("&reject_genres=")
|
||||
append(filter.tagsExclude.joinToString(",") { it.key })
|
||||
|
||||
append("&sort=")
|
||||
append(
|
||||
|
||||
@@ -15,6 +15,7 @@ internal class OlimpoScans(context: MangaLoaderContext) :
|
||||
override val selectTag = "ul.manga-info li:contains(Género) a"
|
||||
override val tagPrefix = "lista-de-comics-genero-"
|
||||
override val isMultipleTagsSupported = false
|
||||
override val isTagsExclusionSupported = false
|
||||
|
||||
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
||||
val url = buildString {
|
||||
|
||||
@@ -19,6 +19,9 @@ internal class LegacyScansParser(context: MangaLoaderContext) :
|
||||
|
||||
override val availableSortOrders: Set<SortOrder> = EnumSet.of(SortOrder.POPULARITY)
|
||||
|
||||
override val availableStates: Set<MangaState> =
|
||||
EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.ABANDONED, MangaState.PAUSED)
|
||||
|
||||
override val configKeyDomain = ConfigKey.Domain("legacy-scans.com")
|
||||
|
||||
override val headers: Headers = Headers.Builder()
|
||||
@@ -45,7 +48,19 @@ internal class LegacyScansParser(context: MangaLoaderContext) :
|
||||
val url = buildString {
|
||||
append("https://api.")
|
||||
append(domain)
|
||||
append("/misc/comic/search/query?status=&order=&genreNames=")
|
||||
append("/misc/comic/search/query?status=")
|
||||
filter.states.oneOrThrowIfMany()?.let {
|
||||
append(
|
||||
when (it) {
|
||||
MangaState.ONGOING -> "En cours"
|
||||
MangaState.FINISHED -> "Terminé"
|
||||
MangaState.ABANDONED -> "Abandonné"
|
||||
MangaState.PAUSED -> "En pause"
|
||||
else -> ""
|
||||
},
|
||||
)
|
||||
}
|
||||
append("&order=&genreNames=")
|
||||
append(filter.tags.joinToString(",") { it.key })
|
||||
append("&type=&start=")
|
||||
append(start)
|
||||
|
||||
@@ -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("LADYESTELARSCAN", "LadyEstelarScan", "pt")
|
||||
internal class LadyestelarScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.LADYESTELARSCAN, "ladyestelarscan.com.br", 10) {
|
||||
override val datePattern: String = "dd/MM/yyyy"
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("LUNARSCAN", "LunarScan", "pt")
|
||||
@MangaSourceParser("LUNARSCAN", "LunarScan.com.br", "pt")
|
||||
internal class LunarScan(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.LUNARSCAN, "lunarscan.com.br") {
|
||||
override val listUrl = "obra/"
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package org.koitharu.kotatsu.parsers.site.mangareader.tr
|
||||
package org.koitharu.kotatsu.parsers.site.madara.tr
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
|
||||
|
||||
@MangaSourceParser("MAJORSCANS", "MajorScans", "tr")
|
||||
internal class MajorScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MAJORSCANS, "www.majorscans.com", pageSize = 20, searchPageSize = 25)
|
||||
MadaraParser(context, MangaSource.MAJORSCANS, "www.majorscans.com", pageSize = 18) {
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
}
|
||||
@@ -12,7 +12,7 @@ import org.koitharu.kotatsu.parsers.util.*
|
||||
|
||||
@MangaSourceParser("HENTAICUBE", "HentaiCube", "vi", ContentType.HENTAI)
|
||||
internal class HentaiCube(context: MangaLoaderContext) :
|
||||
MadaraParser(context, MangaSource.HENTAICUBE, "hentaicube.net") {
|
||||
MadaraParser(context, MangaSource.HENTAICUBE, "cbhentai.net") {
|
||||
|
||||
override val datePattern = "dd/MM/yyyy"
|
||||
override val tagPrefix = "the-loai/"
|
||||
|
||||
@@ -26,6 +26,8 @@ internal abstract class MangaboxParser(
|
||||
|
||||
override val availableStates: Set<MangaState> = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED)
|
||||
|
||||
override val isTagsExclusionSupported = true
|
||||
|
||||
protected open val listUrl = "/advanced_search"
|
||||
protected open val searchUrl = "/search/story/"
|
||||
protected open val datePattern = "MMM dd,yy"
|
||||
@@ -71,6 +73,15 @@ internal abstract class MangaboxParser(
|
||||
}
|
||||
}
|
||||
|
||||
if (filter.tagsExclude.isNotEmpty()) {
|
||||
append("&g_e=")
|
||||
filter.tagsExclude.forEach {
|
||||
append("_")
|
||||
append(it.key)
|
||||
append("_")
|
||||
}
|
||||
}
|
||||
|
||||
filter.states.oneOrThrowIfMany()?.let {
|
||||
append("&sts=")
|
||||
append(
|
||||
|
||||
@@ -37,6 +37,7 @@ internal class Mangairo(context: MangaLoaderContext) :
|
||||
SortOrder.POPULARITY,
|
||||
SortOrder.NEWEST,
|
||||
)
|
||||
override val isTagsExclusionSupported = false
|
||||
override val isMultipleTagsSupported = false
|
||||
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
||||
val url = buildString {
|
||||
|
||||
@@ -19,6 +19,7 @@ internal class Mangakakalot(context: MangaLoaderContext) :
|
||||
SortOrder.POPULARITY,
|
||||
SortOrder.NEWEST,
|
||||
)
|
||||
override val isTagsExclusionSupported = false
|
||||
override val isMultipleTagsSupported = false
|
||||
override val otherDomain = "chapmanganato.com"
|
||||
override val listUrl = "/manga_list"
|
||||
|
||||
@@ -23,6 +23,7 @@ internal class MangakakalotTv(context: MangaLoaderContext) :
|
||||
SortOrder.NEWEST,
|
||||
)
|
||||
override val isMultipleTagsSupported = false
|
||||
override val isTagsExclusionSupported = false
|
||||
|
||||
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
||||
val url = buildString {
|
||||
|
||||
@@ -41,6 +41,8 @@ internal abstract class MangaReaderParser(
|
||||
override val availableStates: Set<MangaState>
|
||||
get() = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED)
|
||||
|
||||
override val isTagsExclusionSupported = true
|
||||
|
||||
protected open val listUrl = "/manga"
|
||||
protected open val datePattern = "MMMM d, yyyy"
|
||||
protected open val isNetShieldProtected = false
|
||||
@@ -77,11 +79,19 @@ internal abstract class MangaReaderParser(
|
||||
},
|
||||
)
|
||||
|
||||
val tagKey = "genre[]".urlEncoded()
|
||||
val tagQuery =
|
||||
if (filter.tags.isEmpty()) ""
|
||||
else filter.tags.joinToString(separator = "&", prefix = "&") { "$tagKey=${it.key}" }
|
||||
append(tagQuery)
|
||||
filter.tags.forEach {
|
||||
append("&")
|
||||
append("genre[]".urlEncoded())
|
||||
append("=")
|
||||
append(it.key)
|
||||
}
|
||||
|
||||
filter.tagsExclude.forEach {
|
||||
append("&")
|
||||
append("genre[]".urlEncoded())
|
||||
append("=-")
|
||||
append(it.key)
|
||||
}
|
||||
|
||||
if (filter.states.isNotEmpty()) {
|
||||
filter.states.oneOrThrowIfMany()?.let {
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("AREASCANS", "AreaScans", "ar")
|
||||
internal class AreaScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.AREASCANS, "www.areascans.net", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.AREASCANS, "www.areascans.net", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class AresManga(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.ARESMANGA, "aresnov.org", pageSize = 20, searchPageSize = 10) {
|
||||
override val listUrl = "/series"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("BEASTSCANS", "BeastScans", "ar")
|
||||
internal class BeastScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.BEASTSCANS, "beastscans.net", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.BEASTSCANS, "beastscans.net", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("ELITON", "Eliton", "ar")
|
||||
internal class Eliton(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.ELITON, "eliton.lol", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.ELITON, "eliton.lol", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -10,4 +10,5 @@ internal class EnAresManga(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.ENARESMANGA, "en-aresmanga.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val listUrl = "/series"
|
||||
override val encodedSrc = true
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import java.util.ArrayList
|
||||
internal class PotatoManga(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.POTATOMANGA, "potatomanga.xyz", pageSize = 30, searchPageSize = 10) {
|
||||
override val listUrl = "/series"
|
||||
override val isTagsExclusionSupported = false
|
||||
|
||||
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
|
||||
val chapterUrl = chapter.url.toAbsoluteUrl(domain)
|
||||
|
||||
@@ -16,6 +16,7 @@ internal class SwaTeam(context: MangaLoaderContext) :
|
||||
override val selectMangaList = ".listupd .bs .bsx"
|
||||
override val selectMangaListImg = "img"
|
||||
override val isNetShieldProtected = true
|
||||
override val isTagsExclusionSupported = false
|
||||
|
||||
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
||||
val url = buildString {
|
||||
|
||||
@@ -14,6 +14,7 @@ internal class VexManga(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.VEXMANGA, "vexmanga.com", pageSize = 10, searchPageSize = 10) {
|
||||
override val selectMangaList = ".listarchives .latest-recom"
|
||||
override val selectChapter = ".ulChapterList > a"
|
||||
override val isTagsExclusionSupported = false
|
||||
|
||||
override suspend fun getDetails(manga: Manga): Manga {
|
||||
val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml()
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class AgsComics(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.AGSCOMICS, "agscomics.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val listUrl = "/series"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class AnigliScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.ANIGLISCANS, "anigliscans.xyz", pageSize = 47, searchPageSize = 47) {
|
||||
override val listUrl = "/series"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("ASCALONSCANS", "AscalonScans", "en")
|
||||
internal class AscalonScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.ASCALONSCANS, "ascalonscans.com", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.ASCALONSCANS, "ascalonscans.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("ASTRASCANS", "AstraScans", "en")
|
||||
internal class AstraScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.ASTRASCANS, "astrascans.com", pageSize = 30, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.ASTRASCANS, "astrascans.com", pageSize = 30, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -10,4 +10,5 @@ internal class AsuraScansParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.ASURASCANS, "asuratoon.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val selectPage = "#readerarea img:not(.asurascans)"
|
||||
override val selectTestScript = "force html"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class BirdManga(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.BIRDMANGA, "birdmanga.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val encodedSrc = true
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.koitharu.kotatsu.parsers.util.*
|
||||
internal class Constellarcomic(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.CONSTELLARCOMIC, "constellarcomic.com", pageSize = 30, searchPageSize = 18) {
|
||||
override val selectTestScript = "script:containsData(ts_rea_der_._run)"
|
||||
override val isTagsExclusionSupported = false
|
||||
|
||||
override suspend fun getDetails(manga: Manga): Manga {
|
||||
val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml()
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class CosmicScansParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.COSMICSCANS, "cosmic-scans.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("FREAKCOMIC", "FreakComic", "en")
|
||||
internal class FreakComic(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.FREAKCOMIC, "freakcomic.com", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.FREAKCOMIC, "freakcomic.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class FreakScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.FREAKSCANS, "freakscans.com", pageSize = 20, searchPageSize = 20) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class KaiScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.KAISCANS, "kaiscans.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val listUrl = "/series"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class KomikLabParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.KOMIKLAB, "komiklab.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("LIGHTSCANS", "LightScans", "en")
|
||||
internal class LightScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.LIGHTSCANS, "lightscans.fun", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.LIGHTSCANS, "lightscans.fun", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class LuminousScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.LUMINOUSSCANS, "luminousscans.net", pageSize = 20, searchPageSize = 10) {
|
||||
override val listUrl = "/series"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -6,8 +6,9 @@ import org.koitharu.kotatsu.parsers.model.ContentType
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("LUNAR_SCAN", "LunarScan", "en", ContentType.HENTAI)
|
||||
@MangaSourceParser("LUNAR_SCAN", "LunarScan.org", "en", ContentType.HENTAI)
|
||||
internal class LunarScan(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.LUNAR_SCAN, "lunarscan.org", pageSize = 20, searchPageSize = 20) {
|
||||
override val listUrl = "/series"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ internal class ManhwaFreak(context: MangaLoaderContext) :
|
||||
override val selectMangaListImg = "img"
|
||||
override val availableStates: Set<MangaState> = emptySet()
|
||||
override val isMultipleTagsSupported = false
|
||||
override val isTagsExclusionSupported = false
|
||||
|
||||
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
||||
val url = buildString {
|
||||
|
||||
@@ -10,4 +10,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class ManhwaLover(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MANHWALOVER, "www.manhwalover.com", pageSize = 20, searchPageSize = 20) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -10,4 +10,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class Manhwax(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MANHWAX, "manhwax.org", pageSize = 20, searchPageSize = 20) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("MANJANOON_EN", "Manjanoon.net", "en")
|
||||
internal class Manjanoon(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MANJANOON_EN, "manjanoon.net", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.MANJANOON_EN, "manjanoon.net", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -10,4 +10,5 @@ internal class Nightscans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.NIGHTSCANS, "nightscans.net", pageSize = 20, searchPageSize = 10) {
|
||||
override val listUrl = "/series"
|
||||
override val selectMangaListImg = "img.ts-post-image, picture img"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class RavenScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.RAVENSCANS, "ravenscans.com", pageSize = 10, searchPageSize = 10) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class ReadersPoint(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.READERSPOINT, "readers-point.space", pageSize = 20, searchPageSize = 10) {
|
||||
override val listUrl = "/series"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,5 +9,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class Readkomik(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.READKOMIK, "readkomik.com", pageSize = 20, searchPageSize = 20) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ internal class RizzComic(context: MangaLoaderContext) :
|
||||
override val availableStates: Set<MangaState> = emptySet()
|
||||
override val isMultipleTagsSupported = false
|
||||
override val isSearchSupported = false
|
||||
override val isTagsExclusionSupported = false
|
||||
|
||||
// TODO Query created in json
|
||||
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("SURYASCANS", "SuryaScans", "en")
|
||||
internal class SuryaScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.SURYASCANS, "suryacomics.com", pageSize = 5, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.SURYASCANS, "suryacomics.com", pageSize = 5, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class VoidScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.VOIDSCANS, "void-scans.com", pageSize = 150, searchPageSize = 150) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("XCALIBRSCANS", "XCalibrScans", "en")
|
||||
internal class XCalibrScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.XCALIBRSCANS, "xcalibrscans.com", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.XCALIBRSCANS, "xcalibrscans.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ internal class Zahard(context: MangaLoaderContext) :
|
||||
override val availableSortOrders: Set<SortOrder> = EnumSet.of(SortOrder.NEWEST)
|
||||
override val availableStates: Set<MangaState> = emptySet()
|
||||
override val isMultipleTagsSupported = false
|
||||
override val isTagsExclusionSupported = false
|
||||
|
||||
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
||||
val url = buildString {
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("GREMORYMANGAS", "GremoryMangas", "es")
|
||||
internal class GremoryMangas(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.GREMORYMANGAS, "gremorymangas.com", pageSize = 20, searchPageSize = 20)
|
||||
MangaReaderParser(context, MangaSource.GREMORYMANGAS, "gremorymangas.com", pageSize = 20, searchPageSize = 20) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("INARIMANGA", "InariManga", "es")
|
||||
internal class InariManga(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.INARIMANGA, "inarimanga.net", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.INARIMANGA, "inarimanga.net", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -10,4 +10,5 @@ internal class NekoScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.NEKOSCANS, "nekoscans.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val listUrl = "/proyecto"
|
||||
override val encodedSrc = true
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("RAGNASCAN", "RagnaScan", "es")
|
||||
internal class RagnaScan(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.RAGNASCAN, "ragnascan.com", pageSize = 5, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.RAGNASCAN, "ragnascan.com", pageSize = 5, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -8,6 +8,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
@MangaSourceParser("SHADOWMANGAS", "ShadowMangas", "es")
|
||||
internal class Shadowmangas(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.SHADOWMANGAS, "shadowmangas.com", pageSize = 10, searchPageSize = 10) {
|
||||
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class SkyMangas(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.SKYMANGAS, "skymangas.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val encodedSrc = true
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("TECNOSCANN", "TecnoScann", "es")
|
||||
internal class TecnoScann(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.TECNOSCANN, "tecnoscann.com", 20, 10)
|
||||
MangaReaderParser(context, MangaSource.TECNOSCANN, "tecnoscann.com", 20, 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -11,4 +11,5 @@ import java.util.Locale
|
||||
internal class TenkaiScan(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.TENKAISCAN, "tenkaiscan.net", 20, 10) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,6 +9,4 @@ import java.util.Locale
|
||||
|
||||
@MangaSourceParser("TRADUCCIONESMOONLIGHT", "TraduccionesMoonlight", "es", ContentType.HENTAI)
|
||||
internal class TraduccionesMoonlight(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.TRADUCCIONESMOONLIGHT, "tenkaiscan.net", 20, 10) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
}
|
||||
MangaReaderParser(context, MangaSource.TRADUCCIONESMOONLIGHT, "traduccionesmoonlight.com", 20, 10)
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("TRESDAOS", "Tresdaos", "es")
|
||||
internal class Tresdaos(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.TRESDAOS, "tresdaos.com", 20, 10)
|
||||
MangaReaderParser(context, MangaSource.TRESDAOS, "tresdaos.com", 20, 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ internal class TuManhwas(context: MangaLoaderContext) :
|
||||
override val availableSortOrders: Set<SortOrder> = EnumSet.of(SortOrder.NEWEST)
|
||||
override val availableStates: Set<MangaState> = emptySet()
|
||||
override val isMultipleTagsSupported = false
|
||||
override val isTagsExclusionSupported = false
|
||||
|
||||
override suspend fun getAvailableTags(): Set<MangaTag> = emptySet()
|
||||
|
||||
|
||||
@@ -8,4 +8,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("EPSILONSCAN", "EpsilonScan", "fr", ContentType.HENTAI)
|
||||
internal class EpsilonscanParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.EPSILONSCAN, "epsilonscan.fr", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.EPSILONSCAN, "epsilonscan.fr", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("GLORYSCANS", "GloryScans", "fr")
|
||||
internal class GloryScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.GLORYSCANS, "gloryscans.fr", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.GLORYSCANS, "gloryscans.fr", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class PhenixscansParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.PHENIXSCANS, "phenixscans.fr", pageSize = 20, searchPageSize = 10) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("VFSCAN", "VfScan", "fr")
|
||||
internal class VfScan(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.VFSCAN, "www.vfscan.cc", pageSize = 18, searchPageSize = 18)
|
||||
MangaReaderParser(context, MangaSource.VFSCAN, "www.vfscan.cc", pageSize = 18, searchPageSize = 18) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -12,4 +12,5 @@ internal class AinzScans(context: MangaLoaderContext) :
|
||||
override val listUrl = "/series"
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class Comicaso(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.COMICASO, "comicaso.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val encodedSrc = true
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -18,53 +18,6 @@ import java.util.Locale
|
||||
@MangaSourceParser("COSMIC_SCANS", "CosmicScans.id", "id")
|
||||
internal class CosmicScans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.COSMIC_SCANS, "cosmicscans.id", pageSize = 30, searchPageSize = 30) {
|
||||
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val availableSortOrders: Set<SortOrder> = EnumSet.of(SortOrder.UPDATED)
|
||||
override val availableStates: Set<MangaState> = emptySet()
|
||||
override val isMultipleTagsSupported = false
|
||||
override val listUrl = "/semua-komik"
|
||||
|
||||
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
||||
val url = buildString {
|
||||
append("https://")
|
||||
append(domain)
|
||||
|
||||
when (filter) {
|
||||
|
||||
is MangaListFilter.Search -> {
|
||||
append("/page/")
|
||||
append(page.toString())
|
||||
append("/?s=")
|
||||
append(filter.query.urlEncoded())
|
||||
}
|
||||
|
||||
is MangaListFilter.Advanced -> {
|
||||
if (filter.tags.isNotEmpty()) {
|
||||
filter.tags.oneOrThrowIfMany()?.let {
|
||||
append("/genres/")
|
||||
append(it.key)
|
||||
append("/page/")
|
||||
append(page.toString())
|
||||
append('/')
|
||||
}
|
||||
} else {
|
||||
if (page > 1) {
|
||||
return emptyList()
|
||||
}
|
||||
append(listUrl)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
null -> {
|
||||
if (page > 1) {
|
||||
return emptyList()
|
||||
}
|
||||
append(listUrl)
|
||||
}
|
||||
}
|
||||
}
|
||||
return parseMangaList(webClient.httpGet(url).parseHtml())
|
||||
}
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -10,4 +10,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class Dojing(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.DOJING, "dojing.net", pageSize = 12, searchPageSize = 12) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -8,4 +8,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("DOUJINDESURIP", "DoujinDesu.cfd", "id", ContentType.HENTAI)
|
||||
internal class DoujinDesuRip(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.DOUJINDESURIP, "doujindesu.cfd", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.DOUJINDESURIP, "doujindesu.cfd", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -11,4 +11,5 @@ import java.util.Locale
|
||||
internal class DoujinKu(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.DOUJINKU, "doujinku.xyz", pageSize = 20, searchPageSize = 10) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("FUTARI", "Futari", "id")
|
||||
internal class Futari(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.FUTARI, "futari.info", pageSize = 25, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.FUTARI, "futari.info", pageSize = 25, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -8,4 +8,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("KANZENIN", "Kanzenin", "id", ContentType.HENTAI)
|
||||
internal class Kanzenin(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.KANZENIN, "kanzenin.info", pageSize = 27, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.KANZENIN, "kanzenin.info", pageSize = 27, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -10,4 +10,5 @@ import java.util.*
|
||||
internal class KataKomik(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.KATAKOMIK, "katakomik.my.id", pageSize = 20, searchPageSize = 10) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("KIRYUU", "Kiryuu", "id")
|
||||
internal class KiryuuParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.KIRYUU, "kiryuu.id", pageSize = 30, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.KIRYUU, "kiryuu.id", pageSize = 30, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("KOMIKAV", "KomikAv", "id")
|
||||
internal class KomikAvParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.KOMIKAV, "komikav.com", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.KOMIKAV, "komikav.com", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -17,4 +17,5 @@ internal class KomikDewasa(context: MangaLoaderContext) :
|
||||
searchPageSize = 10,
|
||||
) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -12,4 +12,5 @@ internal class KomikDewasaParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.KOMIKDEWASA, "komikremaja.cfd", pageSize = 20, searchPageSize = 10) {
|
||||
override val listUrl: String = "/komik"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class KomikIndoParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.KOMIKINDO, "komikindo.co", pageSize = 20, searchPageSize = 10) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ internal class KomikSan(context: MangaLoaderContext) :
|
||||
override val selectMangaListImg = "img.attachment-medium"
|
||||
override val listUrl = "/list"
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
|
||||
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
||||
val url = buildString {
|
||||
|
||||
@@ -10,4 +10,5 @@ import java.util.*
|
||||
internal class KomikSay(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.KOMIKSAY, "komiksay.info", pageSize = 30, searchPageSize = 10) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -10,4 +10,5 @@ import java.util.Locale
|
||||
internal class KomikTapParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.KOMIKTAP, "komiktap.me", pageSize = 25, searchPageSize = 10) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ internal class Komikcast(context: MangaLoaderContext) :
|
||||
override val availableSortOrders: Set<SortOrder> =
|
||||
EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.ALPHABETICAL)
|
||||
override val availableStates: Set<MangaState> = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED)
|
||||
override val isTagsExclusionSupported = false
|
||||
|
||||
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
||||
val url = buildString {
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
package org.koitharu.kotatsu.parsers.site.mangareader.id
|
||||
|
||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("KOMIKGO", "Komikgo", "id")
|
||||
internal class KomikgoParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.KOMIKGO, "komikgo.org", pageSize = 20, searchPageSize = 10) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
}
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class Komikstation(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.KOMIKSTATION, "komikstation.co", pageSize = 30, searchPageSize = 30) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,4 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
internal class Komiku(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.KOMIKU, "komiku.com", pageSize = 20, searchPageSize = 20) {
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -9,6 +9,5 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
@MangaSourceParser("LIANSCANS", "LianScans", "id", ContentType.HENTAI)
|
||||
internal class Lianscans(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.LIANSCANS, "www.lianscans.my.id", pageSize = 10, searchPageSize = 10) {
|
||||
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
}
|
||||
|
||||
@@ -10,4 +10,5 @@ import java.util.Locale
|
||||
internal class MangaShiro(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MANGASHIRO, "mangashiro.me", pageSize = 20, searchPageSize = 10) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -10,4 +10,5 @@ import java.util.*
|
||||
internal class MangaTaleParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MANGATALE, "mangatale.co", pageSize = 20, searchPageSize = 10) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -10,4 +10,5 @@ import java.util.*
|
||||
internal class MangakKita(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MANGAKITA, "mangakita.id", pageSize = 20, searchPageSize = 10) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -10,4 +10,5 @@ internal class Mangakyo(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MANGAKYO, "mangakyo.vip", pageSize = 40, searchPageSize = 20) {
|
||||
override val listUrl = "/komik"
|
||||
override val datePattern = "MMM d, yyyy"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -11,5 +11,5 @@ internal class ManhwaIndoParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MANHWAINDO, "manhwaindo.id", pageSize = 30, searchPageSize = 10) {
|
||||
override val datePattern = "MMMM dd, yyyy"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val listUrl: String get() = "/series"
|
||||
override val listUrl = "/series"
|
||||
}
|
||||
|
||||
@@ -8,4 +8,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("MANHWALAND", "ManhwaLand", "id", ContentType.HENTAI)
|
||||
internal class ManhwaLand(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MANHWALAND, "62.182.80.253", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.MANHWALAND, "62.182.80.253", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -11,4 +11,5 @@ internal class ManhwaPlus(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MANHWAPLUS, "manhwablue.com", 20, 10) {
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val listUrl = "/komik"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("MANHWADESU", "ManhwaDesu", "id", ContentType.HENTAI)
|
||||
internal class ManhwadesuParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.MANHWADESU, "manhwadesu.bio", pageSize = 20, searchPageSize = 10) {
|
||||
MangaReaderParser(context, MangaSource.MANHWADESU, "manhwadesu.cc", pageSize = 20, searchPageSize = 10) {
|
||||
override val listUrl = "/komik"
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("NATSU", "Natsu", "id")
|
||||
internal class Natsu(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.NATSU, "natsu.id", pageSize = 20, searchPageSize = 10)
|
||||
MangaReaderParser(context, MangaSource.NATSU, "natsu.id", pageSize = 20, searchPageSize = 10) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -11,4 +11,5 @@ internal class Noromax(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.NOROMAX, "noromax.my.id", pageSize = 20, searchPageSize = 10) {
|
||||
override val listUrl = "/Komik"
|
||||
override val sourceLocale: Locale = Locale.ENGLISH
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
@@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
|
||||
|
||||
@MangaSourceParser("SEKAIKOMIK", "SekaiKomik", "id")
|
||||
internal class SekaikomikParser(context: MangaLoaderContext) :
|
||||
MangaReaderParser(context, MangaSource.SEKAIKOMIK, "sekaikomik.bio", pageSize = 20, searchPageSize = 100)
|
||||
MangaReaderParser(context, MangaSource.SEKAIKOMIK, "sekaikomik.bio", pageSize = 20, searchPageSize = 100) {
|
||||
override val isTagsExclusionSupported = false
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user