add HastaTeamReader close #1004

Update Sources ( fix , url and broken )
Add sources
master
devi 2 years ago
parent ca212ca692
commit b3a0b97f0e

@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.heancms.HeanCms
import org.koitharu.kotatsu.parsers.util.domain
@Broken
@Broken // Not dead, changed template
@MangaSourceParser("TEMPLESCAN", "TempleScan", "en")
internal class TempleScan(context: MangaLoaderContext) :
HeanCms(context, MangaParserSource.TEMPLESCAN, "templescan.net") {

@ -6,7 +6,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.*
import org.koitharu.kotatsu.parsers.site.heancms.HeanCms
@Broken // Not dead but changed template and url visualikigai.com
@Broken // Not dead but changed template
@MangaSourceParser("YUGEN_MANGAS_ES", "YugenMangas.lat", "es", ContentType.HENTAI)
internal class YugenMangasEs(context: MangaLoaderContext) :
HeanCms(context, MangaParserSource.YUGEN_MANGAS_ES, "yugenmangas.lat")
HeanCms(context, MangaParserSource.YUGEN_MANGAS_ES, "ikigaimangas.fraviral.com")

@ -19,13 +19,20 @@ internal abstract class IkenParser(
pageSize: Int = 18,
) : PagedMangaParser(context, source, pageSize) {
override val configKeyDomain = ConfigKey.Domain(domain)
private val userAgentKey = ConfigKey.UserAgent(context.getDefaultUserAgent())
override fun onCreateConfig(keys: MutableCollection<ConfigKey<*>>) {
super.onCreateConfig(keys)
keys.add(userAgentKey)
}
override val availableSortOrders: Set<SortOrder> = EnumSet.of(SortOrder.POPULARITY)
override val availableStates: Set<MangaState> =
EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.ABANDONED, MangaState.UPCOMING)
override val configKeyDomain = ConfigKey.Domain(domain)
override val isMultipleTagsSupported = true
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {

@ -0,0 +1,14 @@
package org.koitharu.kotatsu.parsers.site.madara.all
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.ContentType
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
import java.util.*
@MangaSourceParser("EROMANHWA", "EroManhwa", "", ContentType.HENTAI)
internal class EroManhwa(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.EROMANHWA, "eromanhwa.org") {
override val sourceLocale: Locale = Locale.ENGLISH
}

@ -0,0 +1,13 @@
package org.koitharu.kotatsu.parsers.site.madara.all
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.madara.MadaraParser
import java.util.*
@MangaSourceParser("KDTSCANS", "KdtScans", "")
internal class KdtScans(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.KDTSCANS, "kdtscans.com", 10) {
override val sourceLocale: Locale = Locale("es")
}

@ -1,12 +1,10 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("AQUAMANGA", "AquaManga", "en")
internal class AquaManga(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.AQUAMANGA, "aquareader.net", 20)

@ -1,10 +1,12 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken // Not dead, changed template
@MangaSourceParser("COLORED_MANGA", "ColoredManga", "en")
internal class ColoredManga(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.COLORED_MANGA, "coloredmanga.net") {

@ -1,10 +1,12 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("CREEPYSCANS", "CreepyScans", "en")
internal class CreepyScans(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.CREEPYSCANS, "creepyscans.com") {

@ -1,11 +1,13 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.Broken
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.ContentType
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@Broken // Redirect to @hentai20
@MangaSourceParser("HENTAI3Z", "Hentai3z", "en", ContentType.HENTAI)
internal class Hentai3z(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.HENTAI3Z, "manga18h.xyz", pageSize = 20) {

@ -1,11 +1,13 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.Broken
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.ContentType
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@Broken // Redirect to @hentai20
@MangaSourceParser("MANGA18H", "Manga18h", "en", ContentType.HENTAI)
internal class Manga18h(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.MANGA18H, "manga18h.xyz", 20)

@ -17,7 +17,6 @@ internal class MangaDistrict(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.MANGA_DISTRICT, "mangadistrict.com", pageSize = 30) {
override val tagPrefix = "publication-genre/"
override val datePattern = "MMM dd,yyyy"
override suspend fun getChapters(manga: Manga, doc: Document): List<MangaChapter> {
val slug = manga.url.removeSuffix('/').substringAfterLast('/')

@ -1,10 +1,12 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("MANGAEFFECT", "MangaEffect", "en")
internal class MangaEffect(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.MANGAEFFECT, "mangaeffect.com") {

@ -1,10 +1,12 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("MANGAROSIE", "Toon69", "en")
internal class MangaRosie(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.MANGAROSIE, "toon69.com", pageSize = 16) {

@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("MANGAWEEBS", "MangaWeebs", "en")
internal class MangaWeebs(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.MANGAWEEBS, "mangaweebs.org", pageSize = 20) {
MadaraParser(context, MangaParserSource.MANGAWEEBS, "mangaweebs.in", pageSize = 20) {
override val datePattern = "dd MMMM HH:mm"
}

@ -1,12 +1,10 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("MANHUAUSS", "Manhuauss", "en")
internal class Manhuauss(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.MANHUAUSS, "manhuauss.com") {

@ -1,15 +1,13 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("NVMANGA", "NvManga", "en")
internal class NvManga(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.NVMANGA, "nvmanga.com") {
MadaraParser(context, MangaParserSource.NVMANGA, "1manhwa.com") {
override val datePattern = "dd/MM/yyyy"
override val tagPrefix = "genre/"
override val listUrl = "webtoon/"

@ -8,6 +8,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("PORNCOMIXONLINE", "PornComix Online", "en", ContentType.HENTAI)
internal class PornComixOnline(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.PORNCOMIXONLINE, "www.porncomixonline.net") {
override val listUrl = "m-comic/"
MadaraParser(context, MangaParserSource.PORNCOMIXONLINE, "porncomix.online") {
override val listUrl = "comic/"
override val tagPrefix = "comic-genre/"
}

@ -1,11 +1,13 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.Broken
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.ContentType
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@Broken
@MangaSourceParser("READMANHUA", "ReadManhua", "en", ContentType.HENTAI)
internal class ReadManhua(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.READMANHUA, "readmanhua.net", 20) {

@ -1,10 +1,12 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("ZINMANGA_CC", "ZinManga.cc", "en")
internal class ZinMangaCc(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.ZINMANGA_CC, "zinmanga.cc")

@ -1,12 +1,10 @@
package org.koitharu.kotatsu.parsers.site.madara.en
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("ZIN_MANGA_COM", "Zin-Manga.com", "en")
internal class ZinMangaCom(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.ZIN_MANGA_COM, "zin-manga.com") {

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

@ -1,10 +1,12 @@
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.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@Broken
@MangaSourceParser("HOUSEMANGAS", "HouseMangas", "es")
internal class HouseMangas(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.HOUSEMANGAS, "housemangas.com")

@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("KNIGHTNOSCANLATION", "TwoBlueScans", "es")
internal class KnightnoScanlation(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.KNIGHTNOSCANLATION, "kns.twobluescans.com") {
MadaraParser(context, MangaParserSource.KNIGHTNOSCANLATION, "lectorkns.com") {
override val listUrl = "sr/"
override val tagPrefix = "generos/"
}

@ -7,4 +7,4 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("RIGHTDARKSCAN", "RightDarkScan", "es")
internal class RightdarkScan(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.RIGHTDARKSCAN, "rightdark-scan.com", 10)
MadaraParser(context, MangaParserSource.RIGHTDARKSCAN, "rsdleft.com", 10)

@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("SAMURAISCAN", "SamuraiScan", "es")
internal class SamuraiScan(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.SAMURAISCAN, "samurai.ragnarokscanlation.org", 10) {
MadaraParser(context, MangaParserSource.SAMURAISCAN, "latan.visorsmr.com", 10) {
override val listUrl = "leer/"
}

@ -1,15 +0,0 @@
package org.koitharu.kotatsu.parsers.site.madara.fr
import org.koitharu.kotatsu.parsers.Broken
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.ContentType
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@Broken
@MangaSourceParser("LUNARHENTAI", "LunarHentai", "fr", ContentType.HENTAI)
internal class LunarHentai(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.LUNARHENTAI, "hentai.lunarscans.fr") {
override val datePattern = "dd MMMM yyyy"
}

@ -8,7 +8,7 @@ import java.util.*
@MangaSourceParser("POJOKMANGA", "PojokManga", "id")
internal class PojokManga(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.POJOKMANGA, "pojokmanga.org") {
MadaraParser(context, MangaParserSource.POJOKMANGA, "pojokmanga.info") {
override val tagPrefix = "komik-genre/"
override val listUrl = "komik/"
override val datePattern = "MMM d, yyyy"

@ -1,10 +1,12 @@
package org.koitharu.kotatsu.parsers.site.madara.pt
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("ANCIENTCOMICS", "AncientComics", "pt")
internal class AncientComics(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.ANCIENTCOMICS, "ancientcomics.com.br") {

@ -1,10 +1,12 @@
package org.koitharu.kotatsu.parsers.site.madara.pt
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("IMPERIOSCANS", "ImperioScans", "pt")
internal class ImperioScans(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.IMPERIOSCANS, "imperioscans.com.br") {

@ -1,12 +1,10 @@
package org.koitharu.kotatsu.parsers.site.madara.pt
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("WONDERLANDSCAN", "WonderlandScan", "pt")
internal class WonderlandScan(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.WONDERLANDSCAN, "wonderlandscan.com") {

@ -7,4 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("YANPFANSUB", "YanpFansub", "pt")
internal class YanpFansub(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.YANPFANSUB, "yanpfansub.com")
MadaraParser(context, MangaParserSource.YANPFANSUB, "trisalyanp.com") {
override val datePattern = "d 'de' MMMM 'de' yyyy"
}

@ -0,0 +1,12 @@
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.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("KORELISCANS", "KoreliScans", "tr")
internal class KoreliScans(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.KORELISCANS, "koreliscans.com", 10) {
override val datePattern = "d MMMM"
}

@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("MANGASEHRINET", "MangaSehri.net", "tr")
internal class MangaSehriNet(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.MANGASEHRINET, "mangasehri.net", 20) {
MadaraParser(context, MangaParserSource.MANGASEHRINET, "manga-sehri.net", 20) {
override val datePattern = "dd MMMM yyyy"
}

@ -0,0 +1,12 @@
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.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("NABISCANS", "NabiScans", "tr")
internal class NabiScans(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.NABISCANS, "nabiscans.com") {
override val datePattern = "d MMMM yyyy"
}

@ -1,13 +1,11 @@
package org.koitharu.kotatsu.parsers.site.madara.tr
import org.koitharu.kotatsu.parsers.Broken
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.ContentType
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@Broken
@MangaSourceParser("PIEDPIPERFANSUBYY", "PiedPiperFansubyy", "tr", ContentType.HENTAI)
internal class PiedPiperFansubyy(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.PIEDPIPERFANSUBYY, "piedpiperfansubyy.me", 18) {

@ -1,12 +1,10 @@
package org.koitharu.kotatsu.parsers.site.madara.tr
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("PIEDPIPERFANSUB", "PiedpiperFansub", "tr")
internal class PiedpiperFansub(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.PIEDPIPERFANSUB, "piedpiperfansub.me", 18) {

@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("RUYAMANGA", "RuyaManga", "tr")
internal class RuyaManga(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.RUYAMANGA, "www.ruyamanga.com", 18) {
MadaraParser(context, MangaParserSource.RUYAMANGA, "www.ruya-manga.com", 18) {
override val tagPrefix = "manga-kategori/"
override val datePattern = "dd/MM/yyyy"
override val withoutAjax = true

@ -1,12 +1,10 @@
package org.koitharu.kotatsu.parsers.site.madara.tr
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("TIMENAIGHT", "TimeNaight", "tr")
internal class Timenaight(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.TIMENAIGHT, "timenaight.com") {

@ -0,0 +1,15 @@
package org.koitharu.kotatsu.parsers.site.madara.vi
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.ContentType
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.madara.MadaraParser
@MangaSourceParser("HENTAIVNCAFE", "HentaiVnCafe", "vi", ContentType.HENTAI)
internal class HentaiVnCafe(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.HENTAIVNCAFE, "hentaivn.cafe", 24) {
override val listUrl = "truyen-hentai/"
override val tagPrefix = "the-loai/"
override val datePattern = "dd/MM/yyyy"
}

@ -1,10 +1,12 @@
package org.koitharu.kotatsu.parsers.site.madara.vi
import org.koitharu.kotatsu.parsers.Broken
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.madara.MadaraParser
@Broken
@MangaSourceParser("MANGAZODIAC", "MangaZodiac", "vi")
internal class MangaZodiac(context: MangaLoaderContext) :
MadaraParser(context, MangaParserSource.MANGAZODIAC, "mangazodiac.com")

@ -5,8 +5,8 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("FURYMANGA", "FuryManga", "en")
@MangaSourceParser("FURYMANGA", "KingOfScans", "en")
internal class FuryManga(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.FURYMANGA, "furymanga.com", pageSize = 30, searchPageSize = 10) {
MangaReaderParser(context, MangaParserSource.FURYMANGA, "kingofscans.com", pageSize = 30, searchPageSize = 10) {
override val listUrl = "/comics"
}

@ -1,12 +1,10 @@
package org.koitharu.kotatsu.parsers.site.mangareader.en
import org.koitharu.kotatsu.parsers.Broken
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
@Broken
@MangaSourceParser("MANHWA_FREAK", "ManhwaFreak", "en")
internal class ManhwaFreak(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.MANHWA_FREAK, "manhwafreak.xyz", pageSize = 30, searchPageSize = 42)

@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("RAISCANS", "RaiScans", "en")
internal class RaiScans(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.RAISCANS, "www.raiscans.com", pageSize = 20, searchPageSize = 10) {
override val listUrl = "/Series"
MangaReaderParser(context, MangaParserSource.RAISCANS, "kenmanga.com", pageSize = 20, searchPageSize = 10) {
override val listUrl = "/series"
}

@ -7,6 +7,6 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("TECNOSCANS", "TecnoScans", "en")
internal class TecnoScans(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.TECNOSCANS, "tecnoscans.xyz", pageSize = 20, searchPageSize = 10) {
MangaReaderParser(context, MangaParserSource.TECNOSCANS, "olyscans.xyz", pageSize = 20, searchPageSize = 10) {
override val isTagsExclusionSupported = false
}

@ -1,10 +1,12 @@
package org.koitharu.kotatsu.parsers.site.mangareader.es
import org.koitharu.kotatsu.parsers.Broken
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
@Broken
@MangaSourceParser("INARIPIKAV", "InariPikav", "es")
internal class InariPikav(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.INARIPIKAV, "inaripikav.org", pageSize = 10, searchPageSize = 10) {

@ -0,0 +1,12 @@
package org.koitharu.kotatsu.parsers.site.mangareader.fr
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("LUNARHENTAI", "GloryScans", "fr")
internal class LunarHentai(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.LUNARHENTAI, "gloryscans.fr", pageSize = 40, searchPageSize = 10) {
override val isTagsExclusionSupported = false
}

@ -0,0 +1,12 @@
package org.koitharu.kotatsu.parsers.site.mangareader.fr
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("PORNHWASCANS", "PornhwaScans", "fr")
internal class PornhwaScans(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.PORNHWASCANS, "pornhwascans.fr", pageSize = 24, searchPageSize = 10) {
override val isTagsExclusionSupported = false
}

@ -1,13 +1,11 @@
package org.koitharu.kotatsu.parsers.site.mangareader.id
import org.koitharu.kotatsu.parsers.Broken
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
import java.util.*
@Broken
@MangaSourceParser("ALCEASCAN", "AlceaScan", "id")
internal class AlceaScan(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.ALCEASCAN, "alceacomic.my.id", pageSize = 20, searchPageSize = 10) {

@ -1,10 +1,12 @@
package org.koitharu.kotatsu.parsers.site.mangareader.id
import org.koitharu.kotatsu.parsers.Broken
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
@Broken
@MangaSourceParser("COMICASO", "Comicaso", "id")
internal class Comicaso(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.COMICASO, "comicaso.org", pageSize = 20, searchPageSize = 10) {

@ -6,8 +6,8 @@ import org.koitharu.kotatsu.parsers.model.ContentType
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@MangaSourceParser("DOUJINDESURIP", "DoujinDesu.mobi", "id", ContentType.HENTAI)
@MangaSourceParser("DOUJINDESURIP", "DoujinDesu.click", "id", ContentType.HENTAI)
internal class DoujinDesuRip(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.DOUJINDESURIP, "doujindesu.mobi", pageSize = 20, searchPageSize = 10) {
MangaReaderParser(context, MangaParserSource.DOUJINDESURIP, "doujindesu.click", pageSize = 20, searchPageSize = 10) {
override val isTagsExclusionSupported = false
}

@ -0,0 +1,14 @@
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.MangaParserSource
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
import java.util.*
@MangaSourceParser("MONZEEKOMIK", "MonzeeKomik", "id")
internal class MonzeeKomik(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.MONZEEKOMIK, "www.monzeekomik.my.id", pageSize = 30, searchPageSize = 10) {
override val sourceLocale: Locale = Locale.ENGLISH
override val isTagsExclusionSupported = false
}

@ -1,11 +1,13 @@
package org.koitharu.kotatsu.parsers.site.mangareader.th
import org.koitharu.kotatsu.parsers.Broken
import org.koitharu.kotatsu.parsers.MangaLoaderContext
import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.ContentType
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser
@Broken
@MangaSourceParser("DOUJIN69", "Doujin69", "th", type = ContentType.HENTAI)
internal class Doujin69(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.DOUJIN69, "doujin69.com", pageSize = 40, searchPageSize = 21) {

@ -1,10 +1,12 @@
package org.koitharu.kotatsu.parsers.site.mangareader.th
import org.koitharu.kotatsu.parsers.Broken
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
@Broken
@MangaSourceParser("MANGAMOONS", "MangaMoons", "th")
internal class MangaMoons(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.MANGAMOONS, "manga-moons.net", pageSize = 20, searchPageSize = 10) {

@ -1,12 +1,10 @@
package org.koitharu.kotatsu.parsers.site.mangareader.tr
import org.koitharu.kotatsu.parsers.Broken
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
@Broken
@MangaSourceParser("MANGAGEZGINI", "MangaGezgini", "tr")
internal class MangaGezgini(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.MANGAGEZGINI, "mangagezgini.net", pageSize = 20, searchPageSize = 10) {

@ -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("TEMPESTSCANS", "TempestScans", "tr")
internal class TempestScans(context: MangaLoaderContext) :
MangaReaderParser(context, MangaParserSource.TEMPESTSCANS, "adumanga.com", pageSize = 20, searchPageSize = 10) {
override val isTagsExclusionSupported = false
}

@ -5,6 +5,6 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser
import org.koitharu.kotatsu.parsers.model.MangaParserSource
import org.koitharu.kotatsu.parsers.site.pizzareader.PizzaReaderParser
@MangaSourceParser("HASTATEAM", "HastaTeam", "it")
@MangaSourceParser("HASTATEAM", "HastaTeamDdt", "it")
internal class HastaTeam(context: MangaLoaderContext) :
PizzaReaderParser(context, MangaParserSource.HASTATEAM, "ddt.hastateam.com")

@ -0,0 +1,10 @@
package org.koitharu.kotatsu.parsers.site.pizzareader.it
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.pizzareader.PizzaReaderParser
@MangaSourceParser("HASTATEAM_READER", "HastaTeamReader", "it")
internal class HastaTeamReader(context: MangaLoaderContext) :
PizzaReaderParser(context, MangaParserSource.HASTATEAM_READER, "reader.hastateam.com")

@ -17,7 +17,7 @@ internal class Truyenqq(context: MangaLoaderContext) : PagedMangaParser(context,
override val availableStates: Set<MangaState> = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED)
override val configKeyDomain = ConfigKey.Domain("truyenqqviet.com")
override val configKeyDomain = ConfigKey.Domain("truyenqqto.com")
private val userAgentKey = ConfigKey.UserAgent(context.getDefaultUserAgent())

@ -1,73 +0,0 @@
package org.koitharu.kotatsu.parsers.site.zeistmanga.id
import org.jsoup.nodes.Document
import org.koitharu.kotatsu.parsers.Broken
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.MangaParserSource
import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser
import org.koitharu.kotatsu.parsers.util.*
import org.koitharu.kotatsu.parsers.util.json.toJSONList
import java.text.SimpleDateFormat
@Broken
@MangaSourceParser("MONZEEKOMIK", "MonzeeKomik", "id")
internal class MonzeeKomik(context: MangaLoaderContext) :
ZeistMangaParser(context, MangaParserSource.MONZEEKOMIK, "www.monzeekomik.my.id") {
override val selectPage = "article#reader img"
override suspend fun loadChapters(mangaUrl: String, doc: Document): List<MangaChapter> {
val chapterRegex = """clwd\.run\('([^']+)'""".toRegex()
val scriptSelector = "#clwd > script"
val script = doc.selectFirstOrThrow(scriptSelector)
val feedFind = chapterRegex
.find(script.html())
?.groupValues?.get(1)
?: throw Exception("Failed to find chapter feed")
val feedClean = feedFind.removeSuffix(")") // clean
val feed = if (feedClean == "Reincarnation Colosseum") // hot fix
{
"I Have 90 Billion Licking Gold"
} else {
feedClean
}
val url = buildString {
append("https://")
append(domain)
append("/feeds/posts/default/-/")
append(feed)
append("?alt=json&orderby=published&max-results=9999")
}
val json =
webClient.httpGet(url).parseJson().getJSONObject("feed").getJSONArray("entry").toJSONList().reversed()
val dateFormat = SimpleDateFormat(datePattern, sourceLocale)
return json.mapIndexedNotNull { i, j ->
val name = j.getJSONObject("title").getString("\$t")
val href =
j.getJSONArray("link").toJSONList().first { it.getString("rel") == "alternate" }.getString("href")
val dateText = j.getJSONObject("published").getString("\$t").substringBefore("T")
val slug = mangaUrl.substringAfterLast('/')
val slugChapter = href.substringAfterLast('/')
if (slug == slugChapter) {
return@mapIndexedNotNull null
}
MangaChapter(
id = generateUid(href),
url = href,
name = name,
number = i + 1f,
volume = 0,
branch = null,
uploadDate = dateFormat.tryParse(dateText),
scanlator = null,
source = source,
)
}
}
}
Loading…
Cancel
Save