Update sources and add sources

Fix MagusManga close #1021
master
devi 2 years ago
parent 2da0c17fe2
commit 1163541ac5

@ -16,7 +16,8 @@ import java.util.*
internal class MangaPark(context: MangaLoaderContext) : internal class MangaPark(context: MangaLoaderContext) :
PagedMangaParser(context, MangaParserSource.MANGAPARK, pageSize = 36) { PagedMangaParser(context, MangaParserSource.MANGAPARK, pageSize = 36) {
override val availableSortOrders: Set<SortOrder> = EnumSet.allOf(SortOrder::class.java) override val availableSortOrders: Set<SortOrder> =
EnumSet.of(SortOrder.POPULARITY, SortOrder.UPDATED, SortOrder.NEWEST, SortOrder.ALPHABETICAL, SortOrder.RATING)
override val availableStates: Set<MangaState> = EnumSet.allOf(MangaState::class.java) override val availableStates: Set<MangaState> = EnumSet.allOf(MangaState::class.java)

@ -0,0 +1,214 @@
package org.koitharu.kotatsu.parsers.site.en
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.model.*
import org.koitharu.kotatsu.parsers.util.*
import java.text.DateFormat
import java.text.SimpleDateFormat
import java.util.*
@MangaSourceParser("VYMANGA", "VyManga", "en")
class VyManga(context: MangaLoaderContext) :
PagedMangaParser(context, MangaParserSource.VYMANGA, pageSize = 36) {
override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("vymanga.net")
override fun onCreateConfig(keys: MutableCollection<ConfigKey<*>>) {
super.onCreateConfig(keys)
keys.add(userAgentKey)
}
override val isMultipleTagsSupported = false
override val availableSortOrders: Set<SortOrder> = EnumSet.of(
SortOrder.POPULARITY,
SortOrder.POPULARITY_ASC,
SortOrder.RATING,
SortOrder.RATING_ASC,
SortOrder.NEWEST,
SortOrder.NEWEST_ASC,
SortOrder.UPDATED,
SortOrder.UPDATED_ASC,
)
override val availableStates: Set<MangaState> = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED)
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
val url = buildString {
append("https://")
append(domain)
when (filter) {
is MangaListFilter.Search -> {
append("/search?search_po=0&q=")
append(filter.query.urlEncoded())
append("&author_po=0&author=&completed=2&sort=updated_at&sort_type=desc&page=")
append(page)
}
is MangaListFilter.Advanced -> {
if (filter.tags.isEmpty()) {
append("/search?search_po=0&q=&author_po=0&author=&completed=")
filter.states.oneOrThrowIfMany()?.let {
append(
when (it) {
MangaState.ONGOING -> "0"
MangaState.FINISHED -> "1"
else -> "2"
},
)
}
} else {
append("/genre/")
filter.tags.oneOrThrowIfMany()?.let {
append(it.key)
}
append("?status=")
filter.states.oneOrThrowIfMany()?.let {
append(
when (it) {
MangaState.ONGOING -> "0"
MangaState.FINISHED -> "1"
else -> ""
},
)
}
}
append("&sort=")
when (filter.sortOrder) {
SortOrder.POPULARITY -> append("viewed&sort_type=desc")
SortOrder.POPULARITY_ASC -> append("viewed&sort_type=asc")
SortOrder.RATING -> append("scored&sort_type=desc")
SortOrder.RATING_ASC -> append("scored&sort_type=asc")
SortOrder.NEWEST -> append("created_at&sort_type=desc")
SortOrder.NEWEST_ASC -> append("created_at&sort_type=asc")
SortOrder.UPDATED -> append("updated_at&sort_type=desc")
SortOrder.UPDATED_ASC -> append("updated_at&sort_type=asc")
else -> append("Updated")
}
append("&page=")
append(page)
}
null -> {
append("/search?search_po=0&q=&author_po=0&author=&completed=2&sort=updated_at&sort_type=desc&page=")
append(page)
}
}
}
val doc = webClient.httpGet(url).parseHtml()
return doc.select(".comic-item").map { div ->
val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href")
Manga(
id = generateUid(href),
url = href,
publicUrl = href.toAbsoluteUrl(domain),
coverUrl = div.selectFirst(".comic-image img")?.src().orEmpty(),
title = div.selectFirst(".comic-title")?.text().orEmpty(),
altTitle = null,
rating = RATING_UNKNOWN,
tags = emptySet(),
author = null,
state = null,
source = source,
isNsfw = isNsfwSource,
)
}
}
override suspend fun getAvailableTags(): Set<MangaTag> {
val doc = webClient.httpGet("https://$domain/").parseHtml()
return doc.select("div.dropdown-menu.custom-menu ul li a[href*=genre]").mapNotNullToSet {
MangaTag(
key = it.attr("href").substringAfterLast('/'),
title = it.text(),
source = source,
)
}
}
override suspend fun getDetails(manga: Manga): Manga {
val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml()
val simpleDateFormat = SimpleDateFormat("MMM dd, yyy", sourceLocale)
return manga.copy(
tags = doc.select("div.col-md-7 p a[href*=genre]").mapNotNullToSet { a ->
MangaTag(
key = a.attr("href").substringAfterLast('/'),
title = a.text(),
source = source,
)
},
description = doc.selectFirst("div.summary p.content")?.text().orEmpty(),
state = when (doc.selectLast("div.col-md-7 p:contains(Status) span")?.text()?.lowercase()) {
"ongoing" -> MangaState.ONGOING
"completed" -> MangaState.FINISHED
else -> null
},
rating = doc.selectFirst("div.col-md-7 p:contains(Rating)")?.text()?.substringAfterLast(':')
?.substringBefore('/')?.toFloat() ?: RATING_UNKNOWN,
chapters = doc.select("div.list div.list-group a").mapChapters(reversed = true) { i, a ->
val url = a.attrAsRelativeUrl("href")
MangaChapter(
id = generateUid(url),
name = a.selectFirst("span")?.text() ?: "Chapter ${i + 1}",
number = i + 1f,
volume = 0,
url = url,
scanlator = null,
uploadDate = parseChapterDate(
simpleDateFormat,
a.selectFirst("p")?.text(),
),
branch = null,
source = source,
)
},
)
}
private fun parseChapterDate(dateFormat: DateFormat, date: String?): Long {
val d = date?.lowercase() ?: return 0
return when {
d.endsWith(" ago") -> parseRelativeDate(date)
else -> dateFormat.tryParse(date)
}
}
private fun parseRelativeDate(date: String): Long {
val number = Regex("""(\d+)""").find(date)?.value?.toIntOrNull() ?: return 0
val cal = Calendar.getInstance()
return when {
WordSet("second").anyWordIn(date) -> cal.apply { add(Calendar.SECOND, -number) }.timeInMillis
WordSet("minute", "minutes").anyWordIn(date) -> cal.apply { add(Calendar.MINUTE, -number) }.timeInMillis
WordSet("hour", "hours").anyWordIn(date) -> cal.apply { add(Calendar.HOUR, -number) }.timeInMillis
WordSet("day", "days").anyWordIn(date) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number) }.timeInMillis
WordSet("week", "weeks").anyWordIn(date) -> cal.apply { add(Calendar.WEEK_OF_YEAR, -number) }.timeInMillis
WordSet("month", "months").anyWordIn(date) -> cal.apply { add(Calendar.MONTH, -number) }.timeInMillis
WordSet("year").anyWordIn(date) -> cal.apply { add(Calendar.YEAR, -number) }.timeInMillis
else -> 0
}
}
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
val doc = webClient.httpGet(chapter.url.toAbsoluteUrl(domain)).parseHtml()
return doc.select("img.d-block").map { img ->
val url = img.src() ?: img.parseFailed("Image src not found")
MangaPage(
id = generateUid(url),
url = url,
preview = null,
source = source,
)
}
}
}

@ -203,9 +203,9 @@ internal abstract class KeyoappParser(
source = source, source = source,
) )
}, },
description = doc.selectFirstOrThrow(selectDesc).html(), description = doc.selectFirst(selectDesc)?.html().orEmpty(),
state = when ( state = when (
doc.selectFirstOrThrow(selectState).text().lowercase() doc.selectFirst(selectState)?.text()?.lowercase().orEmpty()
) { ) {
in ongoing -> MangaState.ONGOING in ongoing -> MangaState.ONGOING
in finished -> MangaState.FINISHED in finished -> MangaState.FINISHED

@ -0,0 +1,33 @@
package org.koitharu.kotatsu.parsers.site.keyoapp.en
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaChapter
import org.koitharu.kotatsu.parsers.model.MangaPage
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser
import org.koitharu.kotatsu.parsers.util.domain
import org.koitharu.kotatsu.parsers.util.generateUid
import org.koitharu.kotatsu.parsers.util.parseFailed
import org.koitharu.kotatsu.parsers.util.parseHtml
import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl
@MangaSourceParser("MAGUSMANGA", "MagusToon", "en")
internal class MagusToon(context: MangaLoaderContext) :
KeyoappParser(context, MangaParserSource.MAGUSMANGA, "magustoon.com") {
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
val fullUrl = chapter.url.toAbsoluteUrl(domain)
val doc = webClient.httpGet(fullUrl).parseHtml()
return doc.select(selectPage).map { img ->
val id = img.attr("uid") ?: img.parseFailed("Image id not found")
val url = "https://cdn.$domain/x/$id"
MangaPage(
id = generateUid(url),
url = url,
preview = null,
source = source,
)
}
}
}

@ -8,4 +8,4 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("MANGAHALL", "MangaHall", "en", ContentType.HENTAI) @MangaSourceParser("MANGAHALL", "MangaHall", "en", ContentType.HENTAI)
internal class MangaHall(context: MangaLoaderContext) : internal class MangaHall(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.MANGAHALL, "mangahall.org", 24) MadaraParser(context, MangaParserSource.MANGAHALL, "mangahall.net", 24)

@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("EMPERORSCAN", "EmperorScan", "es") @MangaSourceParser("EMPERORSCAN", "EmperorScan", "es")
internal class EmperorScan(context: MangaLoaderContext) : internal class EmperorScan(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.EMPERORSCAN, "emperormanga.com") MadaraParser(context, MangaParserSource.EMPERORSCAN, "emperormanga.net")

@ -5,9 +5,10 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
// redirect to @PANCONCOLA
@MangaSourceParser("MANTRAZSCAN", "MantrazScan", "es") @MangaSourceParser("MANTRAZSCAN", "MantrazScan", "es")
internal class MantrazScan(context: MangaLoaderContext) : internal class MantrazScan(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.MANTRAZSCAN, "mantrazscan.com") { MadaraParser(context, MangaParserSource.MANTRAZSCAN, "panconcola.com") {
override val datePattern = "dd/MM/yyyy" override val datePattern = "dd/MM/yyyy"
override val tagPrefix = "generos-de-manga/" override val tagPrefix = "generos-de-manga/"
} }

@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("MHSCANS", "MhScans", "es") @MangaSourceParser("MHSCANS", "MhScans", "es")
internal class MhScans(context: MangaLoaderContext) : internal class MhScans(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.MHSCANS, "mh.twobluescans.com") { MadaraParser(context, MangaParserSource.MHSCANS, "mhscans.manhuaonline.org") {
override val datePattern = "d 'de' MMMMM 'de' yyyy" override val datePattern = "d 'de' MMMMM 'de' yyyy"
override val listUrl = "series/" override val listUrl = "series/"
} }

@ -1,12 +1,10 @@
package org.koitharu.kotatsu.parsers.site.madara.es package org.koitharu.kotatsu.parsers.site.madara.es
import org.koitharu.kotatsu.parsers.Broken
import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@Broken
@MangaSourceParser("NOBLESSETRANSLATIONS", "NoblesseTranslations", "es") @MangaSourceParser("NOBLESSETRANSLATIONS", "NoblesseTranslations", "es")
internal class NoblesseTranslations(context: MangaLoaderContext) : internal class NoblesseTranslations(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.NOBLESSETRANSLATIONS, "www.noblessev1.com") MadaraParser(context, MangaParserSource.NOBLESSETRANSLATIONS, "www.swordalada.org")

@ -9,7 +9,7 @@ import java.util.EnumSet
@MangaSourceParser("HUNTERSSCAN", "HuntersScan", "pt") @MangaSourceParser("HUNTERSSCAN", "HuntersScan", "pt")
internal class HuntersScan(context: MangaLoaderContext) : internal class HuntersScan(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.HUNTERSSCAN, "huntersscan.net", pageSize = 50) { MadaraParser(context, MangaParserSource.HUNTERSSCAN, "hunterscomics.com", pageSize = 50) {
override val withoutAjax = true override val withoutAjax = true
override val availableSortOrders: Set<SortOrder> = override val availableSortOrders: Set<SortOrder> =
EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.NEWEST, SortOrder.ALPHABETICAL, SortOrder.RATING) EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.NEWEST, SortOrder.ALPHABETICAL, SortOrder.RATING)

@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("MAJORSCANS", "MajorScans", "tr") @MangaSourceParser("MAJORSCANS", "MajorScans", "tr")
internal class MajorScans(context: MangaLoaderContext) : internal class MajorScans(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.MAJORSCANS, "www.majorscans.com", pageSize = 18) { MadaraParser(context, MangaParserSource.MAJORSCANS, "www.mangatilkisi.com", pageSize = 18) {
override val datePattern = "dd/MM/yyyy" override val datePattern = "dd/MM/yyyy"
} }

@ -10,7 +10,7 @@ import org.koitharu.kotatsu.parsers.util.*
@MangaSourceParser("MANJANOON", "Manjanoon", "ar") @MangaSourceParser("MANJANOON", "Manjanoon", "ar")
internal class Manjanoon(context: MangaLoaderContext) : internal class Manjanoon(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.MANJANOON, "noonscan.net", pageSize = 21, searchPageSize = 10) { MangaReaderParser(context, MangaParserSource.MANJANOON, "manjanoon.xyz", pageSize = 21, searchPageSize = 10) {
override suspend fun getDetails(manga: Manga): Manga { override suspend fun getDetails(manga: Manga): Manga {
val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml()

@ -7,7 +7,13 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("THUNDERSCANS", "ThunderScans", "ar") @MangaSourceParser("THUNDERSCANS", "ThunderScans", "ar")
internal class ThunderScans(context: MangaLoaderContext) : internal class ThunderScans(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.THUNDERSCANS, "thunderscans.com", pageSize = 32, searchPageSize = 10) { MangaReaderParser(
context,
MangaParserSource.THUNDERSCANS,
"ar-thunderepic.com",
pageSize = 32,
searchPageSize = 10,
) {
override val isTagsExclusionSupported = false override val isTagsExclusionSupported = false
override val selectChapter = ".eplister > ul > li" override val selectChapter = ".eplister > ul > li"
} }

@ -5,9 +5,9 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
// Redirect to luacomic.com // Redirect to @LUACOMIC_COM
@MangaSourceParser("KAISCANS", "KaiScans", "en") @MangaSourceParser("KAISCANS", "KaiScans", "en")
internal class KaiScans(context: MangaLoaderContext) : internal class KaiScans(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.KAISCANS, "luacomic.com", pageSize = 20, searchPageSize = 10) { MangaReaderParser(context, MangaParserSource.KAISCANS, "ponvi.online", pageSize = 20, searchPageSize = 10) {
override val isTagsExclusionSupported = false override val isTagsExclusionSupported = false
} }

@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("LUACOMIC_COM", "luaComic.com", "en") @MangaSourceParser("LUACOMIC_COM", "luaComic.com", "en")
internal class LuaComicCom(context: MangaLoaderContext) : internal class LuaComicCom(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.LUACOMIC_COM, "luacomic.com", pageSize = 20, searchPageSize = 10) { MangaReaderParser(context, MangaParserSource.LUACOMIC_COM, "ponvi.online", pageSize = 20, searchPageSize = 10) {
override val isTagsExclusionSupported = false override val isTagsExclusionSupported = false
} }

@ -1,12 +0,0 @@
package org.koitharu.kotatsu.parsers.site.mangareader.en
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("MAGUSMANGA", "Recipeslik", "en")
internal class MagusManga(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.MAGUSMANGA, "oocini.biz", pageSize = 20, searchPageSize = 10) {
override val listUrl = "/series"
}

@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("NIGHTSCANS", "NightScans", "en") @MangaSourceParser("NIGHTSCANS", "NightScans", "en")
internal class Nightscans(context: MangaLoaderContext) : internal class Nightscans(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.NIGHTSCANS, "night-scans.com", pageSize = 20, searchPageSize = 10) { MangaReaderParser(context, MangaParserSource.NIGHTSCANS, "nightsup.net", pageSize = 20, searchPageSize = 10) {
override val listUrl = "/series" override val listUrl = "/series"
override val selectMangaListImg = "img.ts-post-image, picture img" override val selectMangaListImg = "img.ts-post-image, picture img"
override val isTagsExclusionSupported = false override val isTagsExclusionSupported = false

@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("VFSCAN", "VfScan", "fr") @MangaSourceParser("VFSCAN", "VfScan", "fr")
internal class VfScan(context: MangaLoaderContext) : internal class VfScan(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.VFSCAN, "www.vfscan.cc", pageSize = 18, searchPageSize = 18) { MangaReaderParser(context, MangaParserSource.VFSCAN, "www.vfscan.net", pageSize = 18, searchPageSize = 18) {
override val isTagsExclusionSupported = false override val isTagsExclusionSupported = false
} }

@ -9,7 +9,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@Broken @Broken
@MangaSourceParser("COMICASO", "Comicaso", "id") @MangaSourceParser("COMICASO", "Comicaso", "id")
internal class Comicaso(context: MangaLoaderContext) : internal class Comicaso(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.COMICASO, "comicaso.org", pageSize = 20, searchPageSize = 10) { MangaReaderParser(context, MangaParserSource.COMICASO, "comicaso.id", pageSize = 20, searchPageSize = 10) {
override val encodedSrc = true override val encodedSrc = true
override val isTagsExclusionSupported = false override val isTagsExclusionSupported = false
} }

@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("DEMONSECT", "DemonSect", "pt") @MangaSourceParser("DEMONSECT", "DemonSect", "pt")
internal class DemonSect(context: MangaLoaderContext) : internal class DemonSect(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.DEMONSECT, "dsectcomics.org", pageSize = 20, searchPageSize = 10) { MangaReaderParser(context, MangaParserSource.DEMONSECT, "seitacelestial.com", pageSize = 20, searchPageSize = 10) {
override val listUrl = "/comics" override val listUrl = "/comics"
override val isTagsExclusionSupported = false override val isTagsExclusionSupported = false
} }

@ -0,0 +1,12 @@
package org.koitharu.kotatsu.parsers.site.mangareader.th
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("MANGAKIMI", "MangaKimi", "th")
internal class MangaKimi(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.MANGAKIMI, "www.mangakimi.com", pageSize = 40, searchPageSize = 10) {
override val isTagsExclusionSupported = false
}

@ -0,0 +1,12 @@
package org.koitharu.kotatsu.parsers.site.mangareader.tr
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("NOXSCANS", "NoxScans", "tr")
internal class NoxScans(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.NOXSCANS, "noxscans.com", pageSize = 30, searchPageSize = 20) {
override val isTagsExclusionSupported = false
}

@ -16,7 +16,7 @@ import java.util.*
class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.YUGENMANGAS, 28) { class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.YUGENMANGAS, 28) {
override val availableSortOrders: Set<SortOrder> = EnumSet.of(SortOrder.UPDATED, SortOrder.ALPHABETICAL) override val availableSortOrders: Set<SortOrder> = EnumSet.of(SortOrder.UPDATED, SortOrder.ALPHABETICAL)
override val configKeyDomain = ConfigKey.Domain("yugenapp.lat") override val configKeyDomain = ConfigKey.Domain("yugenweb.com")
override fun onCreateConfig(keys: MutableCollection<ConfigKey<*>>) { override fun onCreateConfig(keys: MutableCollection<ConfigKey<*>>) {
super.onCreateConfig(keys) super.onCreateConfig(keys)

Loading…
Cancel
Save