diff --git a/README.md b/README.md index 3c0eebadc..a7c3c8586 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ This library provides manga sources. 3. Usage in code ```kotlin - val parser = mangaLoaderContext.newParserInstance(MangaSource.MANGADEX) + val parser = mangaLoaderContext.newParserInstance(MangaParserSourceMANGADEX) ``` `mangaLoaderContext` is an implementation of the `MangaLoaderContext` class. @@ -62,7 +62,7 @@ This library provides manga sources. and [Non-Android](https://github.com/KotatsuApp/kotatsu-dl/blob/master/src/jvmMain/kotlin/org/koitharu/kotatsu_dl/logic/MangaLoaderContextImpl.kt) implementation. - Note that the `MangaSource.LOCAL` and `MangaSource.DUMMY` parsers cannot be instantiated. + Note that the `MangaParserSourceLOCAL` and `MangaParserSourceDUMMY` parsers cannot be instantiated. ## Contribution diff --git a/build.gradle b/build.gradle index b51f4bb0d..f5883e5f4 100644 --- a/build.gradle +++ b/build.gradle @@ -2,8 +2,8 @@ import tasks.ReportGenerateTask plugins { id 'java-library' - id 'org.jetbrains.kotlin.jvm' version '1.9.23' - id 'com.google.devtools.ksp' version '1.9.23-1.0.20' + id 'org.jetbrains.kotlin.jvm' version '2.0.10-RC' + id 'com.google.devtools.ksp' version '2.0.10-RC-1.0.23' id 'maven-publish' } @@ -53,12 +53,12 @@ afterEvaluate { } dependencies { - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0-RC' implementation 'com.squareup.okhttp3:okhttp:4.12.0' implementation 'com.squareup.okio:okio:3.9.0' - api 'org.jsoup:jsoup:1.17.2' + api 'org.jsoup:jsoup:1.18.1' implementation 'org.json:json:20240303' - implementation 'androidx.collection:collection:1.4.0' + implementation 'androidx.collection:collection:1.4.1' ksp project(':kotatsu-parsers-ksp') diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index b4d834344..e83d9827b 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'org.jetbrains.kotlin.jvm' version '1.9.23' + id 'org.jetbrains.kotlin.jvm' version '2.0.10-RC' } repositories { @@ -14,5 +14,5 @@ dependencies { implementation gradleApi() implementation 'org.simpleframework:simple-xml:2.7.1' implementation 'com.soywiz.korlibs.korte:korte-jvm:4.0.10' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0-RC' } diff --git a/kotatsu-parsers-ksp/build.gradle b/kotatsu-parsers-ksp/build.gradle index ec303d600..4ec426dce 100644 --- a/kotatsu-parsers-ksp/build.gradle +++ b/kotatsu-parsers-ksp/build.gradle @@ -7,5 +7,5 @@ kotlin { } dependencies { - implementation 'com.google.devtools.ksp:symbol-processing-api:1.9.23-1.0.20' + implementation 'com.google.devtools.ksp:symbol-processing-api:2.0.10-RC-1.0.23' } diff --git a/kotatsu-parsers-ksp/src/main/kotlin/org/koitharu/kotatsu/parsers/ksp/ParserProcessor.kt b/kotatsu-parsers-ksp/src/main/kotlin/org/koitharu/kotatsu/parsers/ksp/ParserProcessor.kt index 892d749c2..b7a2144e5 100644 --- a/kotatsu-parsers-ksp/src/main/kotlin/org/koitharu/kotatsu/parsers/ksp/ParserProcessor.kt +++ b/kotatsu-parsers-ksp/src/main/kotlin/org/koitharu/kotatsu/parsers/ksp/ParserProcessor.kt @@ -69,12 +69,9 @@ class ParserProcessor( """ package org.koitharu.kotatsu.parsers - import org.koitharu.kotatsu.parsers.model.MangaSource - - @Suppress("DEPRECATION") - @InternalParsersApi - @Deprecated("", replaceWith = ReplaceWith("context.newParserInstance(this)")) - fun MangaSource.newParser(context: MangaLoaderContext): MangaParser = when (this) { + import org.koitharu.kotatsu.parsers.model.MangaParserSource + + internal fun MangaParserSource.newParser(context: MangaLoaderContext): MangaParser = when (this) { """.trimIndent(), ) @@ -83,14 +80,12 @@ class ParserProcessor( """ package org.koitharu.kotatsu.parsers.model - enum class MangaSource( + enum class MangaParserSource( val title: String, val locale: String, val contentType: ContentType, val isBroken: Boolean, - ) { - LOCAL("Local", "", ContentType.OTHER, false), - UNKNOWN("Unknown", "", ContentType.OTHER, true), + ): MangaSource { """.trimIndent(), ) @@ -102,9 +97,7 @@ class ParserProcessor( factoryWriter?.write( """ - MangaSource.LOCAL, - MangaSource.UNKNOWN, - MangaSource.DUMMY -> throw NotImplementedError("Manga parser ${'$'}name cannot be instantiated") + MangaParserSource.DUMMY -> throw NotImplementedError("Manga parser ${'$'}name cannot be instantiated") }.also { require(it.source == this) { "Cannot instantiate manga parser: ${'$'}name mapped to ${'$'}{it.source}" @@ -166,7 +159,7 @@ class ParserProcessor( logger.warn("Source title duplication: \"$title\" is assigned to both $prevTitleClass and $className") } - factoryWriter?.write("\tMangaSource.$name -> $className(context)\n") + factoryWriter?.write("\tMangaParserSource.$name -> $className(context)\n") val deprecationString = if (deprecation != null) { val reason = diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaLoaderContext.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaLoaderContext.kt index c5eaeb9eb..d7cde2cd2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaLoaderContext.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaLoaderContext.kt @@ -5,6 +5,7 @@ import okhttp3.OkHttpClient import okhttp3.Response import org.koitharu.kotatsu.parsers.bitmap.Bitmap import org.koitharu.kotatsu.parsers.config.MangaSourceConfig +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaSource import java.util.* @@ -14,8 +15,7 @@ abstract class MangaLoaderContext { abstract val cookieJar: CookieJar - @Suppress("DEPRECATION") - fun newParserInstance(source: MangaSource): MangaParser = source.newParser(this) + fun newParserInstance(source: MangaParserSource): MangaParser = source.newParser(this) open fun encodeBase64(data: ByteArray): String = Base64.getEncoder().encodeToString(data) @@ -42,7 +42,7 @@ abstract class MangaLoaderContext { */ abstract fun redrawImageResponse( response: Response, - redraw: (image: Bitmap) -> Bitmap + redraw: (image: Bitmap) -> Bitmap, ): Response /** @@ -50,6 +50,6 @@ abstract class MangaLoaderContext { */ abstract fun createBitmap( width: Int, - height: Int + height: Int, ): Bitmap } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt index 739637f5d..51333a0a6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt @@ -15,7 +15,7 @@ import java.util.* abstract class MangaParser @InternalParsersApi constructor( @property:InternalParsersApi val context: MangaLoaderContext, - val source: MangaSource, + val source: MangaParserSource, ) { /** @@ -62,7 +62,7 @@ abstract class MangaParser @InternalParsersApi constructor( val config by lazy { context.getConfig(source) } open val sourceLocale: Locale - get() = source.locale?.let { Locale(it) } ?: Locale.ROOT + get() = if (source.locale.isEmpty()) Locale.ROOT else Locale(source.locale) val isNsfwSource = source.contentType == ContentType.HENTAI @@ -244,7 +244,7 @@ abstract class MangaParser @InternalParsersApi constructor( return RelatedMangaFinder(listOf(this)).invoke(seed) } - protected fun getParser(source: MangaSource) = if (this.source == source) { + protected fun getParser(source: MangaParserSource) = if (this.source == source) { this } else { context.newParserInstance(source) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/PagedMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/PagedMangaParser.kt index 5868bb8f7..3d38152ac 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/PagedMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/PagedMangaParser.kt @@ -7,7 +7,7 @@ import org.koitharu.kotatsu.parsers.util.Paginator @InternalParsersApi abstract class PagedMangaParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, @VisibleForTesting(otherwise = VisibleForTesting.PROTECTED) @JvmField internal val pageSize: Int, searchPageSize: Int = pageSize, ) : MangaParser(context, source) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/model/Favicons.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/model/Favicons.kt index 4fe744214..37c2d1d4d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/model/Favicons.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/model/Favicons.kt @@ -2,7 +2,7 @@ package org.koitharu.kotatsu.parsers.model class Favicons internal constructor( favicons: Collection, - @JvmField val referer: String, + @JvmField val referer: String?, ) : Collection { private val icons = favicons.sortedDescending() @@ -47,4 +47,12 @@ class Favicons internal constructor( } return result } + + companion object { + + @JvmStatic + fun empty() = Favicons(emptySet(), null) + + fun single(url: String) = Favicons(setOf(Favicon(url, 0, null)), null) + } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaSource.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaSource.kt new file mode 100644 index 000000000..20a481f4d --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaSource.kt @@ -0,0 +1,6 @@ +package org.koitharu.kotatsu.parsers.model + +interface MangaSource { + + val name: String +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/BatoToParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/BatoToParser.kt index 1d6d60d65..49445d216 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/BatoToParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/BatoToParser.kt @@ -21,7 +21,7 @@ import javax.crypto.spec.SecretKeySpec @MangaSourceParser("BATOTO", "Bato.To") internal class BatoToParser(context: MangaLoaderContext) : PagedMangaParser( context = context, - source = MangaSource.BATOTO, + source = MangaParserSource.BATOTO, pageSize = 60, searchPageSize = 20, ) { @@ -104,7 +104,12 @@ internal class BatoToParser(context: MangaLoaderContext) : PagedMangaParser( filter.locale?.let { append("&langs=") - append(it.language) + if (it.language == "in") { + append("id") + } else { + append(it.language) + } + } append("&genres=") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ComickFunParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ComickFunParser.kt index 68b3a9d1f..e32612112 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ComickFunParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ComickFunParser.kt @@ -21,7 +21,8 @@ import java.util.* private const val CHAPTERS_LIMIT = 99999 @MangaSourceParser("COMICK_FUN", "ComicK") -internal class ComickFunParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.COMICK_FUN, 20) { +internal class ComickFunParser(context: MangaLoaderContext) : + PagedMangaParser(context, MangaParserSource.COMICK_FUN, 20) { override val configKeyDomain = ConfigKey.Domain("comick.io", "comick.cc") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt index 73bd8ff11..28e8956f8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ExHentaiParser.kt @@ -24,7 +24,7 @@ private const val DOMAIN_AUTHORIZED = "exhentai.org" @MangaSourceParser("EXHENTAI", "ExHentai", type = ContentType.HENTAI) internal class ExHentaiParser( context: MangaLoaderContext, -) : PagedMangaParser(context, MangaSource.EXHENTAI, pageSize = 25), MangaParserAuthProvider { +) : PagedMangaParser(context, MangaParserSource.EXHENTAI, pageSize = 25), MangaParserAuthProvider { override val availableSortOrders: Set = setOf(SortOrder.NEWEST) override val isTagsExclusionSupported: Boolean = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HitomiLaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HitomiLaParser.kt index 7d3a7f2a2..f304474f5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HitomiLaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/HitomiLaParser.kt @@ -27,7 +27,7 @@ import kotlin.math.min @OptIn(ExperimentalUnsignedTypes::class) @MangaSourceParser("HITOMILA", "Hitomi.La", type = ContentType.HENTAI) -class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaSource.HITOMILA) { +class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context, MangaParserSource.HITOMILA) { override val configKeyDomain = ConfigKey.Domain("hitomi.la") private val ltnBaseUrl get() = "https://${getDomain("ltn")}" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ImHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ImHentai.kt index 8160cd156..262a3c93f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ImHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/ImHentai.kt @@ -15,7 +15,7 @@ import java.util.* @MangaSourceParser("IMHENTAI", "ImHentai", type = ContentType.HENTAI) internal class ImHentai(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.IMHENTAI, pageSize = 20) { + PagedMangaParser(context, MangaParserSource.IMHENTAI, pageSize = 20) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.RATING) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/LineWebtoonsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/LineWebtoonsParser.kt index a946d0f08..c6818f096 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/LineWebtoonsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/LineWebtoonsParser.kt @@ -21,7 +21,7 @@ import javax.crypto.spec.SecretKeySpec internal abstract class LineWebtoonsParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, ) : MangaParser(context, source) { override val isMultipleTagsSupported = false @@ -308,25 +308,25 @@ internal abstract class LineWebtoonsParser( } @MangaSourceParser("LINEWEBTOONS_EN", "LineWebtoons English", "en", type = ContentType.MANGA) - class English(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaSource.LINEWEBTOONS_EN) + class English(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaParserSource.LINEWEBTOONS_EN) @MangaSourceParser("LINEWEBTOONS_ZH", "LineWebtoons Chinese", "zh", type = ContentType.MANGA) - class Chinese(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaSource.LINEWEBTOONS_ZH) + class Chinese(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaParserSource.LINEWEBTOONS_ZH) @MangaSourceParser("LINEWEBTOONS_TH", "LineWebtoons Thai", "th", type = ContentType.MANGA) - class Thai(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaSource.LINEWEBTOONS_TH) + class Thai(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaParserSource.LINEWEBTOONS_TH) @MangaSourceParser("LINEWEBTOONS_ID", "LineWebtoons Indonesian", "id", type = ContentType.MANGA) - class Indonesian(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaSource.LINEWEBTOONS_ID) + class Indonesian(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaParserSource.LINEWEBTOONS_ID) @MangaSourceParser("LINEWEBTOONS_ES", "LineWebtoons Spanish", "es", type = ContentType.MANGA) - class Spanish(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaSource.LINEWEBTOONS_ES) + class Spanish(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaParserSource.LINEWEBTOONS_ES) @MangaSourceParser("LINEWEBTOONS_FR", "LineWebtoons French", "fr", type = ContentType.MANGA) - class French(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaSource.LINEWEBTOONS_FR) + class French(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaParserSource.LINEWEBTOONS_FR) @MangaSourceParser("LINEWEBTOONS_DE", "LineWebtoons German", "de", type = ContentType.MANGA) - class German(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaSource.LINEWEBTOONS_DE) + class German(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaParserSource.LINEWEBTOONS_DE) private inner class WebtoonsUrlSigner(private val secret: String) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaDexParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaDexParser.kt index 67acf3464..328e6c796 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaDexParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaDexParser.kt @@ -24,7 +24,7 @@ private const val CHAPTERS_MAX_COUNT = 10_000 // strange api behavior, looks lik private const val LOCALE_FALLBACK = "en" @MangaSourceParser("MANGADEX", "MangaDex") -internal class MangaDexParser(context: MangaLoaderContext) : MangaParser(context, MangaSource.MANGADEX) { +internal class MangaDexParser(context: MangaLoaderContext) : MangaParser(context, MangaParserSource.MANGADEX) { override val configKeyDomain = ConfigKey.Domain("mangadex.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaFireParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaFireParser.kt index 77b7e35f3..b586fcd4b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaFireParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaFireParser.kt @@ -1,6 +1,8 @@ package org.koitharu.kotatsu.parsers.site.all -import kotlinx.coroutines.* +import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll +import kotlinx.coroutines.coroutineScope import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Interceptor import okhttp3.Response @@ -22,7 +24,7 @@ private const val MIN_SPLIT_COUNT = 5 internal abstract class MangaFireParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, private val siteLang: String, ) : PagedMangaParser(context, source, 30), Interceptor { @@ -425,23 +427,25 @@ internal abstract class MangaFireParser( private fun Int.ceilDiv(other: Int) = (this + (other - 1)) / other @MangaSourceParser("MANGAFIRE_EN", "MangaFire English", "en") - class English(context: MangaLoaderContext) : MangaFireParser(context, MangaSource.MANGAFIRE_EN, "en") + class English(context: MangaLoaderContext) : MangaFireParser(context, MangaParserSource.MANGAFIRE_EN, "en") @MangaSourceParser("MANGAFIRE_ES", "MangaFire Spanish", "es") - class Spanish(context: MangaLoaderContext) : MangaFireParser(context, MangaSource.MANGAFIRE_ES, "es") + class Spanish(context: MangaLoaderContext) : MangaFireParser(context, MangaParserSource.MANGAFIRE_ES, "es") @MangaSourceParser("MANGAFIRE_ESLA", "MangaFire Spanish (Latim)", "es") - class SpanishLatim(context: MangaLoaderContext) : MangaFireParser(context, MangaSource.MANGAFIRE_ESLA, "es-la") + class SpanishLatim(context: MangaLoaderContext) : + MangaFireParser(context, MangaParserSource.MANGAFIRE_ESLA, "es-la") @MangaSourceParser("MANGAFIRE_FR", "MangaFire French", "fr") - class French(context: MangaLoaderContext) : MangaFireParser(context, MangaSource.MANGAFIRE_FR, "fr") + class French(context: MangaLoaderContext) : MangaFireParser(context, MangaParserSource.MANGAFIRE_FR, "fr") @MangaSourceParser("MANGAFIRE_JA", "MangaFire Japanese", "ja") - class Japanese(context: MangaLoaderContext) : MangaFireParser(context, MangaSource.MANGAFIRE_JA, "ja") + class Japanese(context: MangaLoaderContext) : MangaFireParser(context, MangaParserSource.MANGAFIRE_JA, "ja") @MangaSourceParser("MANGAFIRE_PT", "MangaFire Portuguese", "pt") - class Portuguese(context: MangaLoaderContext) : MangaFireParser(context, MangaSource.MANGAFIRE_PT, "pt") + class Portuguese(context: MangaLoaderContext) : MangaFireParser(context, MangaParserSource.MANGAFIRE_PT, "pt") @MangaSourceParser("MANGAFIRE_PTBR", "MangaFire Portuguese (Brazil)", "pt") - class PortugueseBR(context: MangaLoaderContext) : MangaFireParser(context, MangaSource.MANGAFIRE_PTBR, "pt-br") + class PortugueseBR(context: MangaLoaderContext) : + MangaFireParser(context, MangaParserSource.MANGAFIRE_PTBR, "pt-br") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPark.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPark.kt index 28cdfc869..a41f31bc8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPark.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPark.kt @@ -14,7 +14,7 @@ import java.util.* @MangaSourceParser("MANGAPARK", "MangaPark") internal class MangaPark(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.MANGAPARK, pageSize = 36) { + PagedMangaParser(context, MangaParserSource.MANGAPARK, pageSize = 36) { override val availableSortOrders: Set = EnumSet.allOf(SortOrder::class.java) @@ -257,7 +257,7 @@ internal class MangaPark(context: MangaLoaderContext) : .findAll(script) .mapNotNullTo(ArrayList()) { val url = it.groupValues.getOrNull(1) ?: return@mapNotNullTo null - if (url.contains("/comic/") || url.contains("/manga/")) { + if (url.contains("/comic/") || url.contains("/manga/") || url.contains("/image/mpup/")) { MangaPage( id = generateUid(url), url = url, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPlusParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPlusParser.kt index ba5e9a168..d9ae470db 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPlusParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaPlusParser.kt @@ -22,7 +22,7 @@ import java.util.* internal abstract class MangaPlusParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, private val sourceLang: String, ) : MangaParser(context, source), Interceptor { @@ -267,63 +267,63 @@ internal abstract class MangaPlusParser( @MangaSourceParser("MANGAPLUSPARSER_EN", "MANGA Plus English", "en") class English(context: MangaLoaderContext) : MangaPlusParser( context, - MangaSource.MANGAPLUSPARSER_EN, + MangaParserSource.MANGAPLUSPARSER_EN, "ENGLISH", ) @MangaSourceParser("MANGAPLUSPARSER_ES", "MANGA Plus Spanish", "es") class Spanish(context: MangaLoaderContext) : MangaPlusParser( context, - MangaSource.MANGAPLUSPARSER_ES, + MangaParserSource.MANGAPLUSPARSER_ES, "SPANISH", ) @MangaSourceParser("MANGAPLUSPARSER_FR", "MANGA Plus French", "fr") class French(context: MangaLoaderContext) : MangaPlusParser( context, - MangaSource.MANGAPLUSPARSER_FR, + MangaParserSource.MANGAPLUSPARSER_FR, "FRENCH", ) @MangaSourceParser("MANGAPLUSPARSER_ID", "MANGA Plus Indonesian", "id") class Indonesian(context: MangaLoaderContext) : MangaPlusParser( context, - MangaSource.MANGAPLUSPARSER_ID, + MangaParserSource.MANGAPLUSPARSER_ID, "INDONESIAN", ) @MangaSourceParser("MANGAPLUSPARSER_PTBR", "MANGA Plus Portuguese (Brazil)", "pt") class Portuguese(context: MangaLoaderContext) : MangaPlusParser( context, - MangaSource.MANGAPLUSPARSER_PTBR, + MangaParserSource.MANGAPLUSPARSER_PTBR, "PORTUGUESE_BR", ) @MangaSourceParser("MANGAPLUSPARSER_RU", "MANGA Plus Russian", "ru") class Russian(context: MangaLoaderContext) : MangaPlusParser( context, - MangaSource.MANGAPLUSPARSER_RU, + MangaParserSource.MANGAPLUSPARSER_RU, "RUSSIAN", ) @MangaSourceParser("MANGAPLUSPARSER_TH", "MANGA Plus Thai", "th") class Thai(context: MangaLoaderContext) : MangaPlusParser( context, - MangaSource.MANGAPLUSPARSER_TH, + MangaParserSource.MANGAPLUSPARSER_TH, "THAI", ) @MangaSourceParser("MANGAPLUSPARSER_VI", "MANGA Plus Vietnamese", "vi") class Vietnamese(context: MangaLoaderContext) : MangaPlusParser( context, - MangaSource.MANGAPLUSPARSER_VI, + MangaParserSource.MANGAPLUSPARSER_VI, "VIETNAMESE", ) @MangaSourceParser("MANGAPLUSPARSER_DE", "MANGA Plus German", "de") class German(context: MangaLoaderContext) : MangaPlusParser( context, - MangaSource.MANGAPLUSPARSER_DE, + MangaParserSource.MANGAPLUSPARSER_DE, "GERMAN", ) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaReaderToParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaReaderToParser.kt index b25e338b4..3848b6f38 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaReaderToParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/MangaReaderToParser.kt @@ -20,7 +20,7 @@ import javax.crypto.spec.SecretKeySpec import kotlin.math.min @MangaSourceParser("MANGAREADERTO", "MangaReader.To") -class MangaReaderToParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.MANGAREADERTO, 16), +class MangaReaderToParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.MANGAREADERTO, 16), Interceptor { override val configKeyDomain = ConfigKey.Domain("mangareader.to") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt index 5d1362837..c94d6ec8b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineMangaParser.kt @@ -17,7 +17,7 @@ import java.util.* internal abstract class NineMangaParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, defaultDomain: String, ) : PagedMangaParser(context, source, pageSize = 26), Interceptor { @@ -267,49 +267,49 @@ internal abstract class NineMangaParser( @MangaSourceParser("NINEMANGA_EN", "NineManga English", "en") class English(context: MangaLoaderContext) : NineMangaParser( context, - MangaSource.NINEMANGA_EN, + MangaParserSource.NINEMANGA_EN, "www.ninemanga.com", ) @MangaSourceParser("NINEMANGA_ES", "NineManga Español", "es") class Spanish(context: MangaLoaderContext) : NineMangaParser( context, - MangaSource.NINEMANGA_ES, + MangaParserSource.NINEMANGA_ES, "es.ninemanga.com", ) @MangaSourceParser("NINEMANGA_RU", "NineManga Русский", "ru") class Russian(context: MangaLoaderContext) : NineMangaParser( context, - MangaSource.NINEMANGA_RU, + MangaParserSource.NINEMANGA_RU, "ru.ninemanga.com", ) @MangaSourceParser("NINEMANGA_DE", "NineManga Deutsch", "de") class Deutsch(context: MangaLoaderContext) : NineMangaParser( context, - MangaSource.NINEMANGA_DE, + MangaParserSource.NINEMANGA_DE, "de.ninemanga.com", ) @MangaSourceParser("NINEMANGA_BR", "NineManga Brasil", "pt") class Brazil(context: MangaLoaderContext) : NineMangaParser( context, - MangaSource.NINEMANGA_BR, + MangaParserSource.NINEMANGA_BR, "br.ninemanga.com", ) @MangaSourceParser("NINEMANGA_IT", "NineManga Italiano", "it") class Italiano(context: MangaLoaderContext) : NineMangaParser( context, - MangaSource.NINEMANGA_IT, + MangaParserSource.NINEMANGA_IT, "it.ninemanga.com", ) @MangaSourceParser("NINEMANGA_FR", "NineManga Français", "fr") class Francais(context: MangaLoaderContext) : NineMangaParser( context, - MangaSource.NINEMANGA_FR, + MangaParserSource.NINEMANGA_FR, "fr.ninemanga.com", ) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineNineNineHentaiParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineNineNineHentaiParser.kt index 1d06e03de..483895955 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineNineNineHentaiParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/NineNineNineHentaiParser.kt @@ -18,11 +18,11 @@ import org.koitharu.kotatsu.parsers.util.json.toJSONList import java.text.SimpleDateFormat import java.util.* -@MangaSourceParser("NINENINENINEHENTAI", "999Hentai", type = ContentType.HENTAI) +@MangaSourceParser("NINENINENINEHENTAI", "AnimeH", type = ContentType.HENTAI) internal class NineNineNineHentaiParser(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.NINENINENINEHENTAI, size), Interceptor { + PagedMangaParser(context, MangaParserSource.NINENINENINEHENTAI, size), Interceptor { - override val configKeyDomain = ConfigKey.Domain("999hentai.net") + override val configKeyDomain = ConfigKey.Domain("animeh.to") override val availableSortOrders: EnumSet = EnumSet.of( SortOrder.POPULARITY, @@ -377,7 +377,7 @@ internal class NineNineNineHentaiParser(context: MangaLoaderContext) : } private suspend fun apiCall(query: String): JSONObject { - return webClient.graphQLQuery("https://hapi.$domain/api", query).getJSONObject("data") + return webClient.graphQLQuery("https://api.$domain/api", query).getJSONObject("data") } companion object { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/WebtoonsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/WebtoonsParser.kt index 647300520..6e7569a73 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/WebtoonsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/all/WebtoonsParser.kt @@ -14,39 +14,16 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.exception.NotFoundException import org.koitharu.kotatsu.parsers.exception.ParseException -import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.Manga -import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaListFilter -import org.koitharu.kotatsu.parsers.model.MangaPage -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.model.MangaTag -import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN -import org.koitharu.kotatsu.parsers.model.SortOrder -import org.koitharu.kotatsu.parsers.util.SoftSuspendLazy -import org.koitharu.kotatsu.parsers.util.SuspendLazy -import org.koitharu.kotatsu.parsers.util.domain -import org.koitharu.kotatsu.parsers.util.generateUid -import org.koitharu.kotatsu.parsers.util.json.getBooleanOrDefault -import org.koitharu.kotatsu.parsers.util.json.getFloatOrDefault -import org.koitharu.kotatsu.parsers.util.json.getIntOrDefault -import org.koitharu.kotatsu.parsers.util.json.getStringOrNull -import org.koitharu.kotatsu.parsers.util.json.mapJSON -import org.koitharu.kotatsu.parsers.util.json.mapJSONIndexed -import org.koitharu.kotatsu.parsers.util.mapChapters -import org.koitharu.kotatsu.parsers.util.oneOrThrowIfMany -import org.koitharu.kotatsu.parsers.util.parseJson -import org.koitharu.kotatsu.parsers.util.splitTwoParts -import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl -import org.koitharu.kotatsu.parsers.util.urlEncoded -import java.util.Calendar -import java.util.EnumSet +import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.util.* +import org.koitharu.kotatsu.parsers.util.json.* +import java.util.* import javax.crypto.Mac import javax.crypto.spec.SecretKeySpec internal abstract class WebtoonsParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, ) : MangaParser(context, source) { override val isMultipleTagsSupported = false @@ -307,25 +284,25 @@ internal abstract class WebtoonsParser( } @MangaSourceParser("WEBTOONS_EN", "Webtoons English", "en", type = ContentType.MANGA) - class English(context: MangaLoaderContext) : WebtoonsParser(context, MangaSource.WEBTOONS_EN) + class English(context: MangaLoaderContext) : WebtoonsParser(context, MangaParserSource.WEBTOONS_EN) @MangaSourceParser("WEBTOONS_ID", "Webtoons Indonesia", "id", type = ContentType.MANGA) - class Indonesian(context: MangaLoaderContext) : WebtoonsParser(context, MangaSource.WEBTOONS_ID) + class Indonesian(context: MangaLoaderContext) : WebtoonsParser(context, MangaParserSource.WEBTOONS_ID) @MangaSourceParser("WEBTOONS_ES", "Webtoons Spanish", "es", type = ContentType.MANGA) - class Spanish(context: MangaLoaderContext) : WebtoonsParser(context, MangaSource.WEBTOONS_ES) + class Spanish(context: MangaLoaderContext) : WebtoonsParser(context, MangaParserSource.WEBTOONS_ES) @MangaSourceParser("WEBTOONS_FR", "Webtoons French", "fr", type = ContentType.MANGA) - class French(context: MangaLoaderContext) : WebtoonsParser(context, MangaSource.WEBTOONS_FR) + class French(context: MangaLoaderContext) : WebtoonsParser(context, MangaParserSource.WEBTOONS_FR) @MangaSourceParser("WEBTOONS_TH", "Webtoons Thai", "th", type = ContentType.MANGA) - class Thai(context: MangaLoaderContext) : WebtoonsParser(context, MangaSource.WEBTOONS_TH) + class Thai(context: MangaLoaderContext) : WebtoonsParser(context, MangaParserSource.WEBTOONS_TH) @MangaSourceParser("WEBTOONS_ZH", "Webtoons Chinese", "zh", type = ContentType.MANGA) - class Chinese(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaSource.WEBTOONS_ZH) + class Chinese(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaParserSource.WEBTOONS_ZH) @MangaSourceParser("WEBTOONS_DE", "Webtoons German", "de", type = ContentType.MANGA) - class German(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaSource.WEBTOONS_DE) + class German(context: MangaLoaderContext) : LineWebtoonsParser(context, MangaParserSource.WEBTOONS_DE) private inner class WebtoonsUrlSigner(private val secret: String) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/AnimeBootstrapParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/AnimeBootstrapParser.kt index 4f9115c3d..b87818cc8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/AnimeBootstrapParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/AnimeBootstrapParser.kt @@ -13,7 +13,7 @@ import java.util.* internal abstract class AnimeBootstrapParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 24, ) : PagedMangaParser(context, source, pageSize) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/fr/PapScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/fr/PapScan.kt index d82508d55..edb065541 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/fr/PapScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/fr/PapScan.kt @@ -10,13 +10,12 @@ import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.animebootstrap.AnimeBootstrapParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat -import java.util.EnumSet -import java.util.Locale +import java.util.* @Broken @MangaSourceParser("PAPSCAN", "PapScan", "fr") internal class PapScan(context: MangaLoaderContext) : - AnimeBootstrapParser(context, MangaSource.PAPSCAN, "papscan.com") { + AnimeBootstrapParser(context, MangaParserSource.PAPSCAN, "papscan.com") { override val sourceLocale: Locale = Locale.ENGLISH override val isMultipleTagsSupported = false override val listUrl = "/liste-manga" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/id/KomikzoId.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/id/KomikzoId.kt index 7278e9612..8e47eb775 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/id/KomikzoId.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/id/KomikzoId.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.animebootstrap.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.animebootstrap.AnimeBootstrapParser @MangaSourceParser("KOMIKZOID", "KomikzoId", "id") internal class KomikzoId(context: MangaLoaderContext) : - AnimeBootstrapParser(context, MangaSource.KOMIKZOID, "komikzoid.id") + AnimeBootstrapParser(context, MangaParserSource.KOMIKZOID, "komikzoid.id") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/id/NeuManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/id/NeuManga.kt index 4912109e1..1a8fcfa53 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/id/NeuManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/id/NeuManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.animebootstrap.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.animebootstrap.AnimeBootstrapParser @MangaSourceParser("NEUMANGA", "NeuManga.xyz", "id") internal class NeuManga(context: MangaLoaderContext) : - AnimeBootstrapParser(context, MangaSource.NEUMANGA, "neumanga.xyz") + AnimeBootstrapParser(context, MangaParserSource.NEUMANGA, "neumanga.xyz") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/id/SekteKomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/id/SekteKomik.kt index 574cba241..4e0c30dee 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/id/SekteKomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/animebootstrap/id/SekteKomik.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.animebootstrap.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.animebootstrap.AnimeBootstrapParser @MangaSourceParser("SEKTEKOMIK", "SekteKomik", "id") internal class SekteKomik(context: MangaLoaderContext) : - AnimeBootstrapParser(context, MangaSource.SEKTEKOMIK, "sektekomik.xyz") + AnimeBootstrapParser(context, MangaParserSource.SEKTEKOMIK, "sektekomik.xyz") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/FlixScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/FlixScans.kt index 74ed7c702..4d42eac2a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/FlixScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/FlixScans.kt @@ -16,7 +16,7 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("FLIXSCANS", "FlixScans.net", "ar") -internal class FlixScans(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.FLIXSCANS, 18) { +internal class FlixScans(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.FLIXSCANS, 18) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED) override val availableStates: Set = EnumSet.allOf(MangaState::class.java) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/MangaStorm.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/MangaStorm.kt index dc0f301b2..83eb7d256 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/MangaStorm.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/MangaStorm.kt @@ -11,7 +11,7 @@ import org.koitharu.kotatsu.parsers.util.* import java.util.* @MangaSourceParser("MANGASTORM", "MangaStorm", "ar") -internal class MangaStorm(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.MANGASTORM, 30) { +internal class MangaStorm(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.MANGASTORM, 30) { override val availableSortOrders: Set = EnumSet.of(SortOrder.POPULARITY, SortOrder.UPDATED) override val configKeyDomain = ConfigKey.Domain("mangastorm.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt index 0322983b8..acd374223 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ar/TeamXNovel.kt @@ -14,13 +14,13 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("TEAMXNOVEL", "TeamXNovel", "ar") -internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.TEAMXNOVEL, 10) { +internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.TEAMXNOVEL, 10) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY) override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.ABANDONED) - override val configKeyDomain = ConfigKey.Domain("teamxnovel.com") + override val configKeyDomain = ConfigKey.Domain("teamoney.site") override val isMultipleTagsSupported = false override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { @@ -31,7 +31,7 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex when (filter) { is MangaListFilter.Search -> { - append("/series?search=") + append("/?search=") append(filter.query.urlEncoded()) if (page > 1) { append("&page=") @@ -95,7 +95,7 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex publicUrl = href.toAbsoluteUrl(domain), rating = RATING_UNKNOWN, isNsfw = false, - coverUrl = div.selectFirstOrThrow("img").src().orEmpty(), + coverUrl = div.selectFirstOrThrow("img").src()?.replace("thumbnail_", "").orEmpty(), tags = emptySet(), state = when (div.selectFirst(".status")?.text()) { "مستمرة" -> MangaState.ONGOING diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/be/AnibelParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/be/AnibelParser.kt index 3df028ace..5f56e0cbc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/be/AnibelParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/be/AnibelParser.kt @@ -21,7 +21,7 @@ import java.util.* @Broken @MangaSourceParser("ANIBEL", "Anibel", "be") -internal class AnibelParser(context: MangaLoaderContext) : MangaParser(context, MangaSource.ANIBEL) { +internal class AnibelParser(context: MangaLoaderContext) : MangaParser(context, MangaParserSource.ANIBEL) { override val configKeyDomain = ConfigKey.Domain("anibel.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/CupFoxParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/CupFoxParser.kt new file mode 100644 index 000000000..2f2eb6b02 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/CupFoxParser.kt @@ -0,0 +1,202 @@ +package org.koitharu.kotatsu.parsers.site.cupfox + +import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.MangaLoaderContext +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.util.* + +internal abstract class CupFoxParser( + context: MangaLoaderContext, + source: MangaParserSource, + domain: String, + pageSize: Int = 24, +) : PagedMangaParser(context, source, pageSize) { + + override val configKeyDomain = ConfigKey.Domain(domain) + + override val availableSortOrders: Set = EnumSet.of( + SortOrder.POPULARITY, + SortOrder.UPDATED, + ) + + override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED) + + override val isMultipleTagsSupported = false + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + val url = buildString { + append("https://") + append(domain) + when (filter) { + is MangaListFilter.Search -> { + append("/search/") + append(filter.query.urlEncoded()) + append('/') + append(page) + } + + is MangaListFilter.Advanced -> { + append("/category/") + + when (filter.sortOrder) { + SortOrder.POPULARITY -> append("order/hits/") + SortOrder.UPDATED -> append("order/addtime/") + else -> append("order/addtime/") + } + + filter.states.oneOrThrowIfMany()?.let { + append( + when (it) { + MangaState.ONGOING -> "finish/1/" + MangaState.FINISHED -> "finish/2/" + else -> "" + }, + ) + } + + if (filter.tags.isNotEmpty()) { + filter.tags.oneOrThrowIfMany()?.let { + append("tags/") + append(it.key) + append('/') + } + } + + append("page/") + append(page) + } + + null -> { + append("/category/order/addtime/page/") + append(page) + } + } + } + return parseMangaList(webClient.httpGet(url).parseHtml()) + } + + protected open val selectMangas = + "ul.row li, ul.stui-vodlist li, ul.clearfix li.dm-list, div.vod-list ul.row li, ul.ewave-vodlist li" + protected open val selectMangasCover = + "div.img-wrapper, div.stui-vodlist__thumb, a.stui-vodlist__thumb, div.ewave-vodlist__thumb, img.dm-thumb" + + private fun parseMangaList(doc: Document): List { + return doc.select(selectMangas).map { li -> + val href = li.selectFirstOrThrow("a").attrAsRelativeUrl("href") + Manga( + id = generateUid(href), + title = li.selectFirst("h3, h4, p.dm-bn")?.text().orEmpty(), + altTitle = null, + url = href, + publicUrl = href.toAbsoluteUrl(domain), + rating = RATING_UNKNOWN, + isNsfw = false, + coverUrl = li.selectFirst(selectMangasCover) + ?.src().orEmpty(), + tags = setOf(), + state = null, + author = null, + source = source, + ) + } + } + + protected open val selectMangaDetailsAltTitle = + "div.info span:contains(Autres noms), div.info span:contains(Biệt danh)" + protected open val selectMangaDetailsTags = + "div.info span a[href*=tags], p.data a[href*=tags], div.book-main-right p.info-text a[href*=tags]" + protected open val selectMangaDetailsAuthor = + "div.info span:contains(Auteur(s)), div.info span:contains(Tác giả), p.data span:contains(Auteur(s)), p.data span:contains(Autor), p.data span:contains(作者), div.book-main-right div.book-info:contains(作者) .info-text" + protected open val selectMangaDescription = + "div.vod-list:contains(Résumé) div.more-box, div.stui-pannel__head:contains(Résumé), div.book-desc div.info-text, div.info div.text:contains(Giới thiệu), #desc" + protected open val selectMangaChapters = + "div.episode-box ul li, ul.stui-content__playlist li a, ul.cnxh-ul li a, ul.ewave-content__playlist li a" + + override suspend fun getDetails(manga: Manga): Manga { + val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + return manga.copy( + altTitle = doc.selectFirst(selectMangaDetailsAltTitle)?.text()?.substringAfter(":"), + state = null, + tags = doc.select(selectMangaDetailsTags).mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").removeSuffix("/").substringAfterLast('/'), + title = a.text().toTitleCase(), + source = source, + ) + }, + author = doc.selectFirst(selectMangaDetailsAuthor)?.text()?.substringAfter(":"), + description = doc.selectFirst(selectMangaDescription) + ?.html(), + chapters = doc.select(selectMangaChapters) + .mapChapters { i, li -> + val a = li.selectFirstOrThrow("a") + val href = a.attrAsRelativeUrl("href") + MangaChapter( + id = generateUid(href), + name = a.text(), + number = i + 1f, + volume = 0, + url = href, + scanlator = null, + uploadDate = 0L, + branch = null, + source = source, + ) + }, + ) + } + + override suspend fun getRelatedManga(seed: Manga): List { + val doc = webClient.httpGet(seed.url.toAbsoluteUrl(domain)).parseHtml() + return doc.select("div.vod-list div.more-box li, ul.stui-vodlist__bd li, ul.about-yxul li, ul.ewave-vodlist__bd li") + .map { li -> + val href = li.selectFirstOrThrow("a").attrAsRelativeUrl("href") + Manga( + id = generateUid(href), + title = li.selectFirst("h3, h4, p.dm-bn")?.text().orEmpty(), + altTitle = null, + url = href, + publicUrl = href.toAbsoluteUrl(domain), + rating = RATING_UNKNOWN, + isNsfw = false, + coverUrl = li.selectFirst(selectMangasCover)?.src().orEmpty(), + tags = setOf(), + state = null, + author = null, + source = source, + ) + } + } + + protected open val selectPages = "div.more-box li img, ul.main li img" + + override suspend fun getPages(chapter: MangaChapter): List { + val fullUrl = chapter.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + return doc.select(selectPages).map { img -> + val url = img.src() ?: img.parseFailed("Image src not found") + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } + + protected open val selectAvailableTags = "div.swiper-wrapper a[href*=tags], ul.stui-screen__list li a[href*=tags]" + override suspend fun getAvailableTags(): Set { + val doc = webClient.httpGet("https://$domain/category/").parseHtml() + return doc.select(selectAvailableTags) + .mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").removeSuffix("/").substringAfterLast('/'), + title = a.text().toTitleCase(), + source = source, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/de/MangaHaus.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/de/MangaHaus.kt new file mode 100644 index 000000000..1c6ad80ac --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/de/MangaHaus.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.cupfox.de + +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.cupfox.CupFoxParser + +@MangaSourceParser("MANGAHAUS", "MangaHaus", "de") +internal class MangaHaus(context: MangaLoaderContext) : + CupFoxParser(context, MangaParserSource.MANGAHAUS, "www.mangahaus.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/fr/EnLigneManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/fr/EnLigneManga.kt new file mode 100644 index 000000000..c52229239 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/fr/EnLigneManga.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.cupfox.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.cupfox.CupFoxParser + +@MangaSourceParser("ENLIGNEMANGA", "EnLigneManga", "fr") +internal class EnLigneManga(context: MangaLoaderContext) : + CupFoxParser(context, MangaParserSource.ENLIGNEMANGA, "www.enlignemanga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/fr/FrManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/fr/FrManga.kt new file mode 100644 index 000000000..67b163ed3 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/fr/FrManga.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.cupfox.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.cupfox.CupFoxParser + +@MangaSourceParser("FRMANGA", "FrManga", "fr") +internal class FrManga(context: MangaLoaderContext) : + CupFoxParser(context, MangaParserSource.FRMANGA, "www.frmanga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/fr/SeineManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/fr/SeineManga.kt new file mode 100644 index 000000000..607d5676a --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/fr/SeineManga.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.cupfox.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.cupfox.CupFoxParser + +@MangaSourceParser("SEINEMANGA", "SeineManga", "fr") +internal class SeineManga(context: MangaLoaderContext) : + CupFoxParser(context, MangaParserSource.SEINEMANGA, "www.seinemanga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/ja/MangaKoinu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/ja/MangaKoinu.kt new file mode 100644 index 000000000..0fbb3d2fb --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/ja/MangaKoinu.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.cupfox.ja + +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.cupfox.CupFoxParser + +@MangaSourceParser("MANGAKOINU", "MangaKoinu", "ja") +internal class MangaKoinu(context: MangaLoaderContext) : + CupFoxParser(context, MangaParserSource.MANGAKOINU, "www.mangakoinu.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/vi/OioiVn.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/vi/OioiVn.kt new file mode 100644 index 000000000..ad61f7c49 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/vi/OioiVn.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.cupfox.vi + +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.cupfox.CupFoxParser + +@MangaSourceParser("OIOIVN", "OioiVn", "vi") +internal class OioiVn(context: MangaLoaderContext) : + CupFoxParser(context, MangaParserSource.OIOIVN, "oioivn.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/AsuraScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/AsuraScansParser.kt new file mode 100644 index 000000000..0fd9795cf --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/AsuraScansParser.kt @@ -0,0 +1,177 @@ +package org.koitharu.kotatsu.parsers.site.en + +import androidx.collection.ArrayMap +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock +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 org.koitharu.kotatsu.parsers.util.json.toJSONList +import java.text.SimpleDateFormat +import java.util.* + +@MangaSourceParser("ASURASCANS", "AsuraComic", "en") +internal class AsuraScansParser(context: MangaLoaderContext) : + PagedMangaParser(context, MangaParserSource.ASURASCANS, pageSize = 30) { + + override val availableSortOrders: Set = EnumSet.of( + SortOrder.RATING, + SortOrder.UPDATED, + SortOrder.NEWEST, + SortOrder.ALPHABETICAL_DESC, + SortOrder.ALPHABETICAL, + ) + + override val availableStates: Set = EnumSet.allOf(MangaState::class.java) + + override val configKeyDomain = ConfigKey.Domain("asuracomic.net") + + override val isMultipleTagsSupported = true + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + val url = buildString { + append("https://") + append(domain) + append("/series?page=") + append(page) + + when (filter) { + is MangaListFilter.Search -> { + append("&name=") + append(filter.query.urlEncoded()) + } + + is MangaListFilter.Advanced -> { + + if (filter.tags.isNotEmpty()) { + append("&genres=") + append(filter.tags.joinToString(separator = ",") { it.key }) + } + + filter.states.oneOrThrowIfMany()?.let { + append("&status=") + append( + when (it) { + MangaState.ONGOING -> "1" + MangaState.FINISHED -> "3" + MangaState.ABANDONED -> "4" + MangaState.PAUSED -> "2" + MangaState.UPCOMING -> "6" + }, + ) + } + + append("&types=-1&order=") + when (filter.sortOrder) { + SortOrder.RATING -> append("rating") + SortOrder.UPDATED -> append("update") + SortOrder.NEWEST -> append("latest") + SortOrder.ALPHABETICAL_DESC -> append("desc") + SortOrder.ALPHABETICAL -> append("asc") + else -> append("update") + } + } + + null -> append("&genres=&status=-1&order=update&types=-1") + } + } + val doc = webClient.httpGet(url).parseHtml() + return doc.select("div.grid > a[href]").map { a -> + val href = "/" + a.attrAsRelativeUrl("href") + Manga( + id = generateUid(href), + url = href, + publicUrl = href.toAbsoluteUrl(domain), + coverUrl = a.selectFirst("img")?.src().orEmpty(), + title = a.selectFirst("div.block > span.block")?.text().orEmpty(), + altTitle = null, + rating = a.selectFirst("div.block label.ml-1")?.text()?.toFloatOrNull()?.div(10f) ?: RATING_UNKNOWN, + tags = emptySet(), + author = null, + state = when (a.selectLastOrThrow("span.status").text()) { + "Ongoing" -> MangaState.ONGOING + "Completed" -> MangaState.FINISHED + "Hiatus" -> MangaState.PAUSED + "Dropped" -> MangaState.ABANDONED + "Coming Soon" -> MangaState.UPCOMING + else -> null + }, + source = source, + isNsfw = isNsfwSource, + ) + } + } + + private var tagCache: ArrayMap? = null + private val mutex = Mutex() + + override suspend fun getAvailableTags(): Set { + return getOrCreateTagMap().values.toSet() + } + + private suspend fun getOrCreateTagMap(): Map = mutex.withLock { + tagCache?.let { return@withLock it } + val tagMap = ArrayMap() + val json = + webClient.httpGet("https://gg.$domain/api/series/filters").parseJson().getJSONArray("genres").toJSONList() + for (el in json) { + if (el.getString("name").isEmpty()) continue + tagMap[el.getString("name")] = MangaTag( + key = el.getInt("id").toString(), + title = el.getString("name"), + source = source, + ) + } + tagCache = tagMap + return@withLock tagMap + } + + private val regexDate = """(\d+)(st|nd|rd|th)""".toRegex() + + override suspend fun getDetails(manga: Manga): Manga { + val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val tagMap = getOrCreateTagMap() + val selectTag = doc.select("div[class^=space] > div.flex > button.text-white") + val tags = selectTag.mapNotNullToSet { tagMap[it.text()] } + return manga.copy( + description = doc.selectFirst("span.font-medium.text-sm")?.text().orEmpty(), + tags = tags, + author = doc.selectFirst("div.grid > div:has(h3:eq(0):containsOwn(Author)) > h3:eq(1)")?.text(), + chapters = doc.select("div.scrollbar-thumb-themecolor > div.group").mapChapters(reversed = true) { i, div -> + val a = div.selectLastOrThrow("a") + val urlRelative = "/series/" + a.attrAsRelativeUrl("href") + val url = urlRelative.toAbsoluteUrl(domain) + val date = div.selectFirst("h3:eq(1)")!!.ownText() + val cleanDate = date.replace(regexDate, "$1") + MangaChapter( + id = generateUid(url), + name = div.selectFirstOrThrow("h3:eq(0)").text(), + number = i + 1f, + volume = 0, + url = url, + scanlator = null, + uploadDate = SimpleDateFormat("MMMM d yyyy", Locale.US) + .tryParse(cleanDate), + branch = null, + source = source, + ) + }, + ) + } + + override suspend fun getPages(chapter: MangaChapter): List { + val doc = webClient.httpGet(chapter.url.toAbsoluteUrl(domain)).parseHtml() + return doc.select("div > img[alt=chapter]").map { img -> + val urlPage = img.src()?.toRelativeUrl(domain) ?: img.parseFailed("Image src not found") + MangaPage( + id = generateUid(urlPage), + url = urlPage, + preview = null, + source = source, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/BeeToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/BeeToon.kt index 2f819f5f6..2e3d84d2e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/BeeToon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/BeeToon.kt @@ -11,7 +11,7 @@ import java.util.* @MangaSourceParser("BEETOON", "BeeToon.net", "en") internal class BeeToon(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.BEETOON, pageSize = 30) { + PagedMangaParser(context, MangaParserSource.BEETOON, pageSize = 30) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt index 586363369..246178f9b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/CloneMangaParser.kt @@ -10,7 +10,7 @@ import org.koitharu.kotatsu.parsers.util.* import java.util.* @MangaSourceParser("CLONEMANGA", "CloneManga", "en") -internal class CloneMangaParser(context: MangaLoaderContext) : MangaParser(context, MangaSource.CLONEMANGA) { +internal class CloneMangaParser(context: MangaLoaderContext) : MangaParser(context, MangaParserSource.CLONEMANGA) { override val availableSortOrders: Set = Collections.singleton( SortOrder.POPULARITY, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt index 11d246d16..fc46dbae3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ComicExtra.kt @@ -13,14 +13,14 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("COMICEXTRA", "ComicExtra", "en") -internal class ComicExtra(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.COMICEXTRA, 25) { +internal class ComicExtra(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.COMICEXTRA, 25) { override val availableSortOrders: Set = EnumSet.of(SortOrder.POPULARITY, SortOrder.UPDATED, SortOrder.NEWEST) override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED) - override val configKeyDomain = ConfigKey.Domain("comicextra.org") + override val configKeyDomain = ConfigKey.Domain("comixextra.com") override val isMultipleTagsSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/DynastyScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/DynastyScans.kt index e8d52f1ba..e57860138 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/DynastyScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/DynastyScans.kt @@ -19,7 +19,8 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("DYNASTYSCANS", "DynastyScans", "en") -internal class DynastyScans(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.DYNASTYSCANS, 117) { +internal class DynastyScans(context: MangaLoaderContext) : + PagedMangaParser(context, MangaParserSource.DYNASTYSCANS, 117) { override val availableSortOrders: Set = EnumSet.of(SortOrder.ALPHABETICAL) override val configKeyDomain = ConfigKey.Domain("dynasty-scans.com") @@ -38,8 +39,7 @@ internal class DynastyScans(context: MangaLoaderContext) : PagedMangaParser(cont append("/search?q=") append(filter.query.urlEncoded()) append("&") - append("classes[]".urlEncoded()) - append("=Serie&page=") + append("classes[]=Series&page=") append(page.toString()) } return parseMangaListQuery(webClient.httpGet(url).parseHtml()) @@ -154,6 +154,9 @@ internal class DynastyScans(context: MangaLoaderContext) : PagedMangaParser(cont val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() val chapters = getChapters(doc) val root = doc.requireElementById("main") + val licensedText = root.select("h4") + .find { it.ownText() == "This manga has been licensed" } + ?.nextElementSibling()?.html() return manga.copy( altTitle = null, state = when (root.select("h2.tag-title small").last()?.text()) { @@ -167,7 +170,7 @@ internal class DynastyScans(context: MangaLoaderContext) : PagedMangaParser(cont .orEmpty(), // It is needed if the manga was found via the search. tags = root.selectFirstOrThrow("div.tag-tags").parseTags(), author = null, - description = null, + description = licensedText, chapters = chapters, ) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/FlixScansOrg.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/FlixScansOrg.kt index 07629010e..4854ca3f3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/FlixScansOrg.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/FlixScansOrg.kt @@ -16,7 +16,8 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("FLIXSCANSORG", "FlixScans.org", "en") -internal class FlixScansOrg(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.FLIXSCANSORG, 18) { +internal class FlixScansOrg(context: MangaLoaderContext) : + PagedMangaParser(context, MangaParserSource.FLIXSCANSORG, 18) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED) override val availableStates: Set = EnumSet.allOf(MangaState::class.java) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaGeko.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaGeko.kt index a32127387..80b332a5d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaGeko.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaGeko.kt @@ -2,30 +2,31 @@ package org.koitharu.kotatsu.parsers.site.en import kotlinx.coroutines.async import kotlinx.coroutines.coroutineScope -import okhttp3.Headers import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.* -import org.koitharu.kotatsu.parsers.network.UserAgents import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("MANGAGEKO", "MangaGeko", "en") -internal class MangaGeko(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.MANGAGEKO, 30) { +internal class MangaGeko(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.MANGAGEKO, 30) { override val availableSortOrders: Set = EnumSet.of(SortOrder.POPULARITY, SortOrder.UPDATED, SortOrder.NEWEST) - override val configKeyDomain = ConfigKey.Domain("www.mgeko.com", "www.mangageko.com") + override val configKeyDomain = ConfigKey.Domain("www.mgeko.cc", "www.mgeko.com", "www.mangageko.com") override val isMultipleTagsSupported = false - override val headers: Headers = Headers.Builder() - .add("User-Agent", UserAgents.CHROME_DESKTOP) - .build() + private val userAgentKey = ConfigKey.UserAgent(context.getDefaultUserAgent()) + + override fun onCreateConfig(keys: MutableCollection>) { + super.onCreateConfig(keys) + keys.add(userAgentKey) + } override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaTownParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaTownParser.kt index 4353adca2..837367a66 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaTownParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaTownParser.kt @@ -1,6 +1,8 @@ package org.koitharu.kotatsu.parsers.site.en -import org.koitharu.kotatsu.parsers.* +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.* @@ -9,7 +11,8 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("MANGATOWN", "MangaTown", "en") -internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.MANGATOWN, 30) { +internal class MangaTownParser(context: MangaLoaderContext) : + PagedMangaParser(context, MangaParserSource.MANGATOWN, 30) { override val configKeyDomain = ConfigKey.Domain("www.mangatown.com") @@ -102,7 +105,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c id = generateUid(href), title = a.attr("title"), coverUrl = a.selectFirst("img")?.absUrl("src").orEmpty(), - source = MangaSource.MANGATOWN, + source = MangaParserSource.MANGATOWN, altTitle = null, rating = li.selectFirst("p.score")?.selectFirst("b") ?.ownText()?.toFloatOrNull()?.div(5f) ?: RATING_UNKNOWN, @@ -118,7 +121,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c MangaTag( title = x.attr("title").toTitleCase(), key = x.attr("href").substringAfter("/directory/0-").substringBefore("-0-"), - source = MangaSource.MANGATOWN, + source = MangaParserSource.MANGATOWN, ) }.orEmpty(), url = href, @@ -143,7 +146,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c MangaTag( title = a.attr("title").toTitleCase(), key = a.attr("href").substringAfter("/directory/0-").substringBefore("-0-"), - source = MangaSource.MANGATOWN, + source = MangaParserSource.MANGATOWN, ) }.orEmpty(), description = info?.getElementById("show")?.ownText(), @@ -156,7 +159,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c MangaChapter( id = generateUid(href), url = href, - source = MangaSource.MANGATOWN, + source = MangaParserSource.MANGATOWN, number = i + 1f, volume = 0, uploadDate = parseChapterDate( @@ -174,10 +177,10 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c override suspend fun getPages(chapter: MangaChapter): List { val fullUrl = chapter.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(fullUrl).parseHtml() - val root = doc.body().selectFirstOrThrow("div.page_select") - val isManga = root.select("select") + val root = doc.body().selectFirst("div.page_select") + val isManga = root?.select("select") - if (isManga.isEmpty()) {//Webtoon + if (isManga.isNullOrEmpty()) {//Webtoon val imgElements = doc.select("div#viewer.read_img img.image") return imgElements.map { val href = it.attr("src") @@ -185,7 +188,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c id = generateUid(href), url = href, preview = null, - source = MangaSource.MANGATOWN, + source = MangaParserSource.MANGATOWN, ) } @@ -199,7 +202,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c id = generateUid(href), url = href, preview = null, - source = MangaSource.MANGATOWN, + source = MangaParserSource.MANGATOWN, ) } } @@ -224,7 +227,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c val a = li.selectFirst("a") ?: return@mapNotNullToSet null val key = a.attr("href").substringAfter("/directory/0-").substringBefore("-0-") MangaTag( - source = MangaSource.MANGATOWN, + source = MangaParserSource.MANGATOWN, key = key, title = a.text().toTitleCase(), ) @@ -253,7 +256,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : PagedMangaParser(c MangaChapter( id = generateUid(href), url = href, - source = MangaSource.MANGATOWN, + source = MangaParserSource.MANGATOWN, number = i + 1f, volume = 0, uploadDate = parseChapterDate( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Mangaowl.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Mangaowl.kt index 3556c697b..c9e02c006 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Mangaowl.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Mangaowl.kt @@ -3,6 +3,7 @@ package org.koitharu.kotatsu.parsers.site.en import kotlinx.coroutines.coroutineScope import okhttp3.Headers 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.PagedMangaParser @@ -14,9 +15,10 @@ import org.koitharu.kotatsu.parsers.util.json.mapJSON import java.text.SimpleDateFormat import java.util.* +@Broken @MangaSourceParser("MANGAOWL", "MangaOwl.to", "en") internal class Mangaowl(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.MANGAOWL, pageSize = 24) { + PagedMangaParser(context, MangaParserSource.MANGAOWL, pageSize = 24) { override val availableSortOrders: Set = EnumSet.of( SortOrder.POPULARITY, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt index 5ddee824a..d69362934 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Manhwa18Parser.kt @@ -11,7 +11,7 @@ import java.util.* @MangaSourceParser("MANHWA18", "Manhwa18.net", "en", type = ContentType.HENTAI) class Manhwa18Parser(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.MANHWA18, pageSize = 18, searchPageSize = 18) { + PagedMangaParser(context, MangaParserSource.MANHWA18, pageSize = 18, searchPageSize = 18) { override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("manhwa18.net") @@ -122,7 +122,7 @@ class Manhwa18Parser(context: MangaLoaderContext) : author = null, largeCoverUrl = null, description = null, - source = MangaSource.MANHWA18, + source = MangaParserSource.MANHWA18, ) } } @@ -167,7 +167,7 @@ class Manhwa18Parser(context: MangaLoaderContext) : scanlator = null, uploadDate = uploadDate, branch = null, - source = MangaSource.MANHWA18, + source = MangaParserSource.MANHWA18, ) }, ) @@ -210,7 +210,7 @@ class Manhwa18Parser(context: MangaLoaderContext) : id = generateUid(url), url = url, preview = null, - source = MangaSource.MANHWA18, + source = MangaParserSource.MANHWA18, ) } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ManhwasMen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ManhwasMen.kt index e571fa470..f9ff1cb45 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ManhwasMen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ManhwasMen.kt @@ -12,7 +12,7 @@ import java.util.* @MangaSourceParser("MANHWASMEN", "ManhwasMen", "en", type = ContentType.HENTAI) class ManhwasMen(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.MANHWASMEN, pageSize = 30, searchPageSize = 30) { + PagedMangaParser(context, MangaParserSource.MANHWASMEN, pageSize = 30, searchPageSize = 30) { override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("manhwas.men") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Po2Scans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Po2Scans.kt index ccc3ceb33..cee1551eb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Po2Scans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Po2Scans.kt @@ -10,7 +10,7 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("PO2SCANS", "Po2Scans", "en") -internal class Po2Scans(context: MangaLoaderContext) : MangaParser(context, MangaSource.PO2SCANS) { +internal class Po2Scans(context: MangaLoaderContext) : MangaParser(context, MangaParserSource.PO2SCANS) { override val availableSortOrders: Set = EnumSet.of(SortOrder.ALPHABETICAL) override val configKeyDomain = ConfigKey.Domain("po2scans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Pururin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Pururin.kt index 7c88841b5..dd2c70b6f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Pururin.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/Pururin.kt @@ -15,7 +15,7 @@ import java.util.* @MangaSourceParser("PURURIN", "Pururin", "en", ContentType.HENTAI) internal class Pururin(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.PURURIN, pageSize = 20) { + PagedMangaParser(context, MangaParserSource.PURURIN, pageSize = 20) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.RATING, SortOrder.ALPHABETICAL) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ReaperComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ReaperComics.kt index 013ff8b7d..1ab95ea06 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ReaperComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/ReaperComics.kt @@ -1,13 +1,10 @@ package org.koitharu.kotatsu.parsers.site.en - import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.withContext import okhttp3.Headers -import okhttp3.MediaType.Companion.toMediaType import okhttp3.Request -import okhttp3.RequestBody import org.json.JSONArray import org.json.JSONObject import org.koitharu.kotatsu.parsers.MangaLoaderContext @@ -20,22 +17,18 @@ import org.koitharu.kotatsu.parsers.util.json.* import java.text.DateFormat import java.text.SimpleDateFormat import java.util.* -import kotlin.random.Random -private const val TOO_MANY_REQUESTS = 429 private const val MAX_RETRY_COUNT = 5 @MangaSourceParser("REAPERCOMICS", "ReaperComics", "en") internal class ReaperComics(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.REAPERCOMICS, pageSize = 20) { + PagedMangaParser(context, MangaParserSource.REAPERCOMICS, pageSize = 20) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.ALPHABETICAL, SortOrder.POPULARITY, SortOrder.NEWEST, SortOrder.ALPHABETICAL_DESC) override val configKeyDomain = ConfigKey.Domain("reaperscans.com") - private val userAgentKey = ConfigKey.UserAgent( - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36", - ) + private val userAgentKey = ConfigKey.UserAgent(context.getDefaultUserAgent()) private val baseHeaders: Headers get() = Headers.Builder().add("User-Agent", config[userAgentKey]).build() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TempleScanEsp.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TempleScanEsp.kt index 55fa2013c..ffe7be3aa 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TempleScanEsp.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TempleScanEsp.kt @@ -15,7 +15,7 @@ import java.util.* @MangaSourceParser("TEMPLESCANESP", "TempleScanEsp", "es", ContentType.HENTAI) internal class TempleScanEsp(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.TEMPLESCANESP, pageSize = 15) { + PagedMangaParser(context, MangaParserSource.TEMPLESCANESP, pageSize = 15) { override val availableSortOrders: Set = EnumSet.of(SortOrder.NEWEST, SortOrder.UPDATED) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt index 9a7cb14c5..8be6f7699 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/es/TuMangaOnlineParser.kt @@ -16,7 +16,7 @@ import java.util.* @MangaSourceParser("TUMANGAONLINE", "TuMangaOnline", "es") class TuMangaOnlineParser(context: MangaLoaderContext) : PagedMangaParser( context, - source = MangaSource.TUMANGAONLINE, + source = MangaParserSource.TUMANGAONLINE, pageSize = 24, ) { @@ -147,7 +147,8 @@ class TuMangaOnlineParser(context: MangaLoaderContext) : PagedMangaParser( return MangaChapter( id = generateUid(href), name = "One Shot", - number = 1, + number = 1f, + volume = 0, url = href, scanlator = element.select("div.col-md-6.text-truncate").text(), branch = null, @@ -163,7 +164,8 @@ class TuMangaOnlineParser(context: MangaLoaderContext) : PagedMangaParser( return MangaChapter( id = generateUid(href), name = chName, - number = number + 1, + number = number + 1f, + volume = 0, url = href, scanlator = element.select("div.col-md-6.text-truncate").text(), branch = null, @@ -205,6 +207,9 @@ class TuMangaOnlineParser(context: MangaLoaderContext) : PagedMangaParser( private suspend fun redirectToReadingPage(document: Document): Document { val script1 = document.selectFirst("script:containsData(uniqid)") val script2 = document.selectFirst("script:containsData(window.location.replace)") + val script3 = document.selectFirst("script:containsData(redirectUrl)") + val script4 = document.selectFirst("input#redir") + val script5 = document.selectFirst("script:containsData(window.opener):containsData(location.replace)") val redirectHeaders = Headers.Builder().set("Referer", document.baseUri()).build() @@ -226,15 +231,52 @@ class TuMangaOnlineParser(context: MangaLoaderContext) : PagedMangaParser( if (script2 != null) { val data = script2.data() - val regexRedirect = """window\.location\.replace\('(.+)'\)""".toRegex() - val url = regexRedirect.find(data)!!.groupValues[1] + val regexRedirect = """window\.location\.replace\(['"](.+)['"]\)""".toRegex() + val url = regexRedirect.find(data)?.groupValues?.get(1)?.unescapeUrl() + + if (url != null) { + return redirectToReadingPage(webClient.httpGet(url, redirectHeaders).parseHtml()) + } + } + + if (script3 != null) { + val data = script3.data() + val regexRedirect = """redirectUrl\s*=\s*'(.+)'""".toRegex() + val url = regexRedirect.find(data)?.groupValues?.get(1)?.unescapeUrl() + + if (url != null) { + return redirectToReadingPage(webClient.httpGet(url, redirectHeaders).parseHtml()) + } + } + + if (script4 != null) { + val url = script4.attr("value").unescapeUrl() return redirectToReadingPage(webClient.httpGet(url, redirectHeaders).parseHtml()) } + if (script5 != null) { + val data = script5.data() + val regexRedirect = """;[^.]location\.replace\(['"](.+)['"]\)""".toRegex() + val url = regexRedirect.find(data)?.groupValues?.get(1)?.unescapeUrl() + + if (url != null) { + return redirectToReadingPage(webClient.httpGet(url, redirectHeaders).parseHtml()) + } + } + return document } + private fun String.unescapeUrl(): String { + return if (this.startsWith("http:\\/\\/") || this.startsWith("https:\\/\\/")) { + this.replace("\\/", "/") + } else { + this + } + } + + override suspend fun getAvailableTags(): Set { val doc = webClient.httpGet("https://$domain/library", headers).parseHtml() val elements = doc.body().select("div#books-genders > div > div") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/FmreaderParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/FmreaderParser.kt index 581e1ce5f..b2a1b72d1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/FmreaderParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/FmreaderParser.kt @@ -14,7 +14,7 @@ import java.util.* internal abstract class FmreaderParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 20, ) : PagedMangaParser(context, source, pageSize) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/en/Manhwa18Com.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/en/Manhwa18Com.kt index 79420961c..d6044a8c6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/en/Manhwa18Com.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/en/Manhwa18Com.kt @@ -12,7 +12,7 @@ import java.text.SimpleDateFormat @MangaSourceParser("MANHWA18COM", "Manhwa18.com", "en", ContentType.HENTAI) internal class Manhwa18Com(context: MangaLoaderContext) : - FmreaderParser(context, MangaSource.MANHWA18COM, "manhwa18.com") { + FmreaderParser(context, MangaParserSource.MANHWA18COM, "manhwa18.com") { override val listUrl = "/tim-kiem" override val selectState = "div.info-item:contains(Status) span.info-value " diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/es/OlimpoScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/es/OlimpoScans.kt index d81619bdb..e519f50de 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/es/OlimpoScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/es/OlimpoScans.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("OLIMPOSCANS", "OlimpoScans", "es") internal class OlimpoScans(context: MangaLoaderContext) : - FmreaderParser(context, MangaSource.OLIMPOSCANS, "olimposcans.com") { + FmreaderParser(context, MangaParserSource.OLIMPOSCANS, "leerolimpo.com") { override val selectState = "ul.manga-info li:contains(Estado) a" override val selectAlt = "ul.manga-info li:contains(Otros nombres)" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/Klz9.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/Klz9.kt index 4255761be..39892edb9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/Klz9.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/Klz9.kt @@ -11,7 +11,7 @@ import java.text.SimpleDateFormat @MangaSourceParser("KLZ9", "Klz9", "ja") internal class Klz9(context: MangaLoaderContext) : - FmreaderParser(context, MangaSource.KLZ9, "klz9.com") { + FmreaderParser(context, MangaParserSource.KLZ9, "klz9.com") { override val selectDesc = "div.row:contains(Description)" override val selectState = "ul.manga-info li:contains(Status) a" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/WeLoveManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/WeLoveManga.kt index 98aac571b..86bdc0645 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/WeLoveManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/WeLoveManga.kt @@ -5,14 +5,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.fmreader.FmreaderParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat @MangaSourceParser("WELOVEMANGA", "WeLoveManga", "ja") internal class WeLoveManga(context: MangaLoaderContext) : - FmreaderParser(context, MangaSource.WELOVEMANGA, "welovemanga.one") { + FmreaderParser(context, MangaParserSource.WELOVEMANGA, "welovemanga.one") { override suspend fun getChapters(doc: Document): List { val mid = doc.selectFirstOrThrow("div.cmt input").attr("value") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/Weloma.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/Weloma.kt index b15bf8c91..b3a7869ba 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/Weloma.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fmreader/ja/Weloma.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.fmreader.ja import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.fmreader.FmreaderParser @MangaSourceParser("WELOMA", "Weloma", "ja") internal class Weloma(context: MangaLoaderContext) : - FmreaderParser(context, MangaSource.WELOMA, "weloma.art") + FmreaderParser(context, MangaParserSource.WELOMA, "weloma.art") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/FoolSlideParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/FoolSlideParser.kt index 7c6b12ecb..25e59e419 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/FoolSlideParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/FoolSlideParser.kt @@ -13,7 +13,7 @@ import java.util.* internal abstract class FoolSlideParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 25, ) : PagedMangaParser(context, source, pageSize) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/Deathtollscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/Deathtollscans.kt index d54fc6212..32f2f1c22 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/Deathtollscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/Deathtollscans.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.foolslide.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.foolslide.FoolSlideParser @MangaSourceParser("DEATHTOLLSCANS", "DeathTollScans", "en") internal class Deathtollscans(context: MangaLoaderContext) : - FoolSlideParser(context, MangaSource.DEATHTOLLSCANS, "reader.deathtollscans.net", 26) + FoolSlideParser(context, MangaParserSource.DEATHTOLLSCANS, "reader.deathtollscans.net", 26) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/Mangatellers.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/Mangatellers.kt index b27e14a38..bddf4ac40 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/Mangatellers.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/Mangatellers.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.foolslide.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.foolslide.FoolSlideParser @MangaSourceParser("MANGATELLERS", "Mangatellers", "en") internal class Mangatellers(context: MangaLoaderContext) : - FoolSlideParser(context, MangaSource.MANGATELLERS, "reader.mangatellers.gr") { + FoolSlideParser(context, MangaParserSource.MANGATELLERS, "reader.mangatellers.gr") { override val pagination = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/ReaderEvilflowers.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/ReaderEvilflowers.kt index ecd1d289a..a21779f7d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/ReaderEvilflowers.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/ReaderEvilflowers.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.foolslide.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.foolslide.FoolSlideParser +@Broken @MangaSourceParser("READER_EVILFLOWERS", "Evil Flowers", "en") internal class ReaderEvilflowers(context: MangaLoaderContext) : - FoolSlideParser(context, MangaSource.READER_EVILFLOWERS, "reader.evilflowers.com") + FoolSlideParser(context, MangaParserSource.READER_EVILFLOWERS, "reader.evilflowers.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/Seinagi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/Seinagi.kt index 6bd2bcf8c..bce511164 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/Seinagi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/en/Seinagi.kt @@ -3,13 +3,14 @@ package org.koitharu.kotatsu.parsers.site.foolslide.en import kotlinx.coroutines.coroutineScope import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.foolslide.FoolSlideParser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("SEINAGI", "Seinagi", "en") internal class Seinagi(context: MangaLoaderContext) : - FoolSlideParser(context, MangaSource.SEINAGI, "reader.seinagi.org.es") { + FoolSlideParser(context, MangaParserSource.SEINAGI, "reader.seinagi.org.es") { override val pagination = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/es/MenudoFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/es/MenudoFansub.kt index f05eeec1d..be7218fcd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/es/MenudoFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/es/MenudoFansub.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.foolslide.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.foolslide.FoolSlideParser @MangaSourceParser("MENUDO_FANSUB", "Menudo Fansub", "es") internal class MenudoFansub(context: MangaLoaderContext) : - FoolSlideParser(context, MangaSource.MENUDO_FANSUB, "www.menudo-fansub.com", 25) { + FoolSlideParser(context, MangaParserSource.MENUDO_FANSUB, "www.menudo-fansub.com", 25) { override val searchUrl = "slide/search/" override val listUrl = "slide/directory/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/es/Pzykosis666hFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/es/Pzykosis666hFansub.kt index 90802ac73..da9bc20f8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/es/Pzykosis666hFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/es/Pzykosis666hFansub.kt @@ -3,13 +3,15 @@ package org.koitharu.kotatsu.parsers.site.foolslide.es import kotlinx.coroutines.coroutineScope import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.foolslide.FoolSlideParser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("PZYKOSIS666HFANSUB", "Pzykosis666h Fansub", "es", ContentType.HENTAI) internal class Pzykosis666hFansub(context: MangaLoaderContext) : - FoolSlideParser(context, MangaSource.PZYKOSIS666HFANSUB, "lector.pzykosis666hfansub.com") { + FoolSlideParser(context, MangaParserSource.PZYKOSIS666HFANSUB, "lector.pzykosis666hfansub.com") { override suspend fun getDetails(manga: Manga): Manga = coroutineScope { val fullUrl = manga.url.toAbsoluteUrl(domain) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/es/SeinagiAdulto.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/es/SeinagiAdulto.kt index 261a6fbae..bfa7741c3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/es/SeinagiAdulto.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/es/SeinagiAdulto.kt @@ -5,17 +5,13 @@ 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.Manga -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.foolslide.FoolSlideParser -import org.koitharu.kotatsu.parsers.util.domain -import org.koitharu.kotatsu.parsers.util.parseHtml -import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow -import org.koitharu.kotatsu.parsers.util.src -import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("SEINAGIADULTO", "Seinagi Adulto", "es", ContentType.HENTAI) internal class SeinagiAdulto(context: MangaLoaderContext) : - FoolSlideParser(context, MangaSource.SEINAGIADULTO, "adulto.seinagi.org.es") { + FoolSlideParser(context, MangaParserSource.SEINAGIADULTO, "adulto.seinagi.org.es") { override suspend fun getDetails(manga: Manga): Manga = coroutineScope { val fullUrl = manga.url.toAbsoluteUrl(domain) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/fr/HniScantrad.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/fr/HniScantrad.kt index d8a5f3ef4..0eae608d5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/fr/HniScantrad.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/fr/HniScantrad.kt @@ -2,13 +2,14 @@ package org.koitharu.kotatsu.parsers.site.foolslide.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.foolslide.FoolSlideParser // The source has changed template so for the moment it is dead. @MangaSourceParser("HNISCANTRAD", "HniScantrad", "fr") internal class HniScantrad(context: MangaLoaderContext) : - FoolSlideParser(context, MangaSource.HNISCANTRAD, "hni-scantrad.net") { + FoolSlideParser(context, MangaParserSource.HNISCANTRAD, "hni-scantrad.net") { + override val pagination = false override val searchUrl = "lel/search/" override val listUrl = "lel/directory/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/it/PowerManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/it/PowerManga.kt index 39f6844d9..eeca13a35 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/it/PowerManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/it/PowerManga.kt @@ -1,12 +1,14 @@ package org.koitharu.kotatsu.parsers.site.foolslide.it +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.foolslide.FoolSlideParser +@Broken @MangaSourceParser("POWERMANGA", "PowerManga", "it") internal class PowerManga(context: MangaLoaderContext) : - FoolSlideParser(context, MangaSource.POWERMANGA, "reader.powermanga.org") { + FoolSlideParser(context, MangaParserSource.POWERMANGA, "reader.powermanga.org") { override val pagination = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/it/Ramareader.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/it/Ramareader.kt index cc0a6906a..8b146607f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/it/Ramareader.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/it/Ramareader.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.foolslide.it import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.foolslide.FoolSlideParser @MangaSourceParser("RAMAREADER", "RamaReader", "it") internal class Ramareader(context: MangaLoaderContext) : - FoolSlideParser(context, MangaSource.RAMAREADER, "www.ramareader.it") { + FoolSlideParser(context, MangaParserSource.RAMAREADER, "www.ramareader.it") { override val searchUrl = "read/search/" override val listUrl = "read/directory/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/it/ReadNifteam.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/it/ReadNifteam.kt index 5aee24f1c..413759b69 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/it/ReadNifteam.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/foolslide/it/ReadNifteam.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.foolslide.it import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.foolslide.FoolSlideParser @MangaSourceParser("READNIFTEAM", "ReadNifTeam", "it") internal class ReadNifteam(context: MangaLoaderContext) : - FoolSlideParser(context, MangaSource.READNIFTEAM, "read-nifteam.info") { + FoolSlideParser(context, MangaParserSource.READNIFTEAM, "read-nifteam.info") { override val searchUrl = "slide/search/" override val listUrl = "slide/directory/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt index f747b227c..45104ff8d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/BentomangaParser.kt @@ -18,7 +18,8 @@ import java.util.* @Broken @MangaSourceParser("BENTOMANGA", "BentoManga", "fr") -internal class BentomangaParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.BENTOMANGA, 10) { +internal class BentomangaParser(context: MangaLoaderContext) : + PagedMangaParser(context, MangaParserSource.BENTOMANGA, 10) { override val availableSortOrders: Set = EnumSet.of( SortOrder.UPDATED, @@ -228,7 +229,8 @@ internal class BentomangaParser(context: MangaLoaderContext) : PagedMangaParser( MangaChapter( id = generateUid(href), name = if (name != null && name != title) "$title: $name" else title, - number = href.substringAfterLast('/').toIntOrNull() ?: 0, + number = href.substringAfterLast('/').toFloatOrNull() ?: 0f, + volume = 0, url = href, scanlator = div.selectFirst(".team_link-name")?.textOrNull(), uploadDate = div.selectFirst(".component-chapter-date") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/FuryoSociety.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/FuryoSociety.kt index 676a5a2f2..9f5ce6831 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/FuryoSociety.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/FuryoSociety.kt @@ -17,7 +17,7 @@ import java.util.* @MangaSourceParser("FURYOSOCIETY", "FuryoSociety", "fr") internal class FuryoSociety(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.FURYOSOCIETY, 0) { + PagedMangaParser(context, MangaParserSource.FURYOSOCIETY, 0) { override val availableSortOrders: Set = EnumSet.of(SortOrder.ALPHABETICAL, SortOrder.UPDATED) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LegacyScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LegacyScansParser.kt index 053181263..165c66370 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LegacyScansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LegacyScansParser.kt @@ -13,7 +13,7 @@ import java.util.* @MangaSourceParser("LEGACY_SCANS", "LegacyScans", "fr") internal class LegacyScansParser(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.LEGACY_SCANS, 18) { + PagedMangaParser(context, MangaParserSource.LEGACY_SCANS, 18) { override val availableSortOrders: Set = EnumSet.of(SortOrder.POPULARITY) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt index 9b68da1f2..09c51c232 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LireScan.kt @@ -1,6 +1,5 @@ package org.koitharu.kotatsu.parsers.site.fr - import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser @@ -11,7 +10,7 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("LIRESCAN", "LireScan", "fr") -internal class LireScan(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.LIRESCAN, 20) { +internal class LireScan(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.LIRESCAN, 20) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LugnicaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LugnicaScans.kt index 0cb1eebc7..5df1d608e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LugnicaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/LugnicaScans.kt @@ -16,7 +16,8 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("LUGNICASCANS", "LugnicaScans", "fr") -internal class LugnicaScans(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.LUGNICASCANS, 10) { +internal class LugnicaScans(context: MangaLoaderContext) : + PagedMangaParser(context, MangaParserSource.LUGNICASCANS, 10) { override val availableSortOrders: Set = EnumSet.of( SortOrder.ALPHABETICAL, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/MangaMana.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/MangaMana.kt new file mode 100644 index 000000000..c16b76436 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/MangaMana.kt @@ -0,0 +1,336 @@ +package org.koitharu.kotatsu.parsers.site.fr + +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll +import kotlinx.coroutines.coroutineScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.withContext +import okhttp3.Headers +import okhttp3.Request +import okhttp3.RequestBody +import okhttp3.RequestBody.Companion.toRequestBody +import org.json.JSONArray +import org.jsoup.Jsoup +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +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 org.koitharu.kotatsu.parsers.util.json.getIntOrDefault +import org.koitharu.kotatsu.parsers.util.json.mapJSON +import java.text.SimpleDateFormat +import java.util.* + +@MangaSourceParser("MANGAMANA", "MangaMana", "fr") +internal class MangaMana(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.MANGAMANA, 25) { + + override val availableSortOrders: Set = + EnumSet.of( + SortOrder.UPDATED, + SortOrder.RATING, + SortOrder.ALPHABETICAL, + SortOrder.ALPHABETICAL_DESC, + SortOrder.NEWEST, + ) + + override val availableStates: Set = + EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.ABANDONED) + + override val configKeyDomain = ConfigKey.Domain("www.manga-mana.com") + + override val isMultipleTagsSupported = false + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + + val postData = buildString { + append("page=") + append(page) + when (filter) { + is MangaListFilter.Search -> { + if (page > 1) { + return emptyList() + } + val domainCdn = "cdn" + domain.removePrefix("www") + val json = webClient.httpGet("https://$domain/search-live?q=${filter.query}").parseJsonArray() + return json.mapJSON { jo -> + val slug = jo.getString("slug") ?: throw Exception("Missing Slug") + val url = "https://$domain/m/$slug" + val img = "https://$domainCdn/uploads/manga/$slug/cover/cover_thumb.jpg" + Manga( + id = generateUid(url), + title = jo.getString("name").orEmpty(), + coverUrl = img, + altTitle = jo.getString("otherNames").orEmpty(), + author = null, + isNsfw = when (jo.getIntOrDefault("caution", 0)) { + 0 -> false + 2 -> true + else -> false + }, + rating = RATING_UNKNOWN, + url = url, + description = jo.getString("summary_old").orEmpty(), + publicUrl = url, + tags = emptySet(), + state = when (jo.getIntOrDefault("status_id_fr", 4)) { + 1 -> MangaState.ONGOING + 2 -> MangaState.FINISHED + 3 -> MangaState.ABANDONED + else -> null + }, + source = source, + ) + } + + } + + is MangaListFilter.Advanced -> { + + if (filter.sortOrder == SortOrder.UPDATED) { + + if (filter.tags.isNotEmpty() or filter.states.isNotEmpty()) { + throw IllegalArgumentException("Le filtrage par « tri par : mis à jour » avec les genres ou les statuts n'est pas pris en charge par cette source.") + } + + val doc = webClient.httpGet("https://$domain/?page=$page").parseHtml() + return doc.select("div.row div.col_home").map { div -> + val href = div.selectFirstOrThrow("h4 a").attrAsRelativeUrl("href") + val isNsfw = div.selectFirst("img[data-adult]")?.attr("data-adult")?.isNotEmpty() ?: false + val img = if (isNsfw) { + div.selectFirst("img")?.attr("data-adult") + } else { + div.selectFirst("img")?.attr("data-src")?.replace(" ", "") + } + Manga( + id = generateUid(href), + title = div.select("h4").text(), + altTitle = null, + url = href, + publicUrl = href.toAbsoluteUrl(domain), + rating = RATING_UNKNOWN, + isNsfw = isNsfw, + coverUrl = img.orEmpty(), + description = null, + tags = emptySet(), + state = null, + author = null, + source = source, + ) + } + } else { + filter.tags.oneOrThrowIfMany()?.let { + append("&category=") + append(it.key) + } + + filter.states.oneOrThrowIfMany()?.let { + append("&status=") + append( + when (it) { + MangaState.ONGOING -> "1" + MangaState.FINISHED -> "2" + MangaState.ABANDONED -> "3" + else -> "" + }, + ) + } + + append("&sort_by=") + when (filter.sortOrder) { + SortOrder.RATING -> append("score&sort_dir=desc") + SortOrder.NEWEST -> append("updated_at&sort_dir=desc") + SortOrder.ALPHABETICAL -> append("name&sort_dir=asc") + SortOrder.ALPHABETICAL_DESC -> append("name&sort_dir=desc") + else -> append("updated_at&sort_dir=desc") + } + } + } + + null -> append("&sort_by=updated_at&sort_dir=desc") + } + } + + val url = "https://$domain/liste-mangas" + val token = webClient.httpGet(url).parseHtml().selectFirstOrThrow("meta[name=csrf-token]").attr("content") + val headers = Headers.Builder().add("X-CSRF-TOKEN", token).add("X-Requested-With", "XMLHttpRequest") + .add("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8").build() + val doc = makeRequest(url, postData.toRequestBody(), headers) + + return doc.select("div.p-2 div.col").map { div -> + val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href") + val isNsfw = div.selectFirst("img[data-adult]")?.attr("data-adult")?.isNotEmpty() ?: false + val img = if (isNsfw) { + div.selectFirst("img")?.attr("data-adult") + } else { + div.selectFirst("img")?.attr("data-src")?.replace(" ", "") + } + Manga( + id = generateUid(href), + title = div.select("h2.fs-6").text(), + altTitle = doc.selectFirst(".mangalist_item_othernames")?.text().orEmpty(), + url = href, + publicUrl = href.toAbsoluteUrl(domain), + rating = div.getElementById("avgrating")?.ownText()?.toFloat()?.div(5f) ?: RATING_UNKNOWN, + isNsfw = isNsfw, + coverUrl = img.orEmpty(), + description = div.selectFirst(".mangalist_item_description")?.text().orEmpty(), + tags = div.select("div.mb-1 a").mapNotNullToSet { + val key = it.attr("href").substringAfterLast('=') + MangaTag( + key = key, + title = it.text(), + source = source, + ) + }, + state = null, + author = null, + source = source, + ) + } + } + + + private suspend fun makeRequest(url: String, payload: RequestBody, headers: Headers): Document { + var retryCount = 0 + val backoffDelay = 2000L // Initial delay (milliseconds) + val request = Request.Builder().url(url).post(payload).headers(headers).build() + while (true) { + try { + return Jsoup.parse(context.httpClient.newCall(request).execute().parseJson().getString("html")) + + } catch (e: Exception) { + // Log or handle the exception as needed + if (++retryCount <= 5) { + withContext(Dispatchers.Default) { + delay(backoffDelay) + } + } else { + throw e + } + } + } + } + + override suspend fun getDetails(manga: Manga): Manga = coroutineScope { + val mangaUrl = manga.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(mangaUrl).parseHtml() + val maxPageChapterSelect = doc.select("ul.pagination a.page-link") + var maxPageChapter = 1 + if (!maxPageChapterSelect.isNullOrEmpty()) { + maxPageChapterSelect.map { + val i = it.attr("href").substringAfterLast("=").toInt() + if (i > maxPageChapter) { + maxPageChapter = i + } + } + } + manga.copy( + state = when (doc.select("div.show_details div.d-flex:contains(Statut) span").text()) { + "En Cours" -> MangaState.ONGOING + "Terminé" -> MangaState.FINISHED + "Abandonné" -> MangaState.ABANDONED + else -> null + }, + author = doc.selectFirst("div.show_details span[itemprop=author]")?.text().orEmpty(), + description = doc.selectFirst("dd[itemprop=description]")?.text(), + rating = doc.getElementById("avgrating")?.ownText()?.toFloat()?.div(5f) ?: RATING_UNKNOWN, + tags = doc.select("ul.list-unstyled li a.category").mapNotNullToSet { + val key = it.attr("href").substringAfterLast('=') + MangaTag( + key = key, + title = it.text(), + source = source, + ) + }, + chapters = run { + if (maxPageChapter == 1) { + parseChapters(doc) + } else { + coroutineScope { + val result = ArrayList(parseChapters(doc)) + result.ensureCapacity(result.size * maxPageChapter) + (2..maxPageChapter).map { i -> + async { + loadChapters(mangaUrl, i) + } + }.awaitAll() + .flattenTo(result) + result + } + } + }.reversed(), + ) + } + + + private suspend fun loadChapters(baseUrl: String, page: Int): List { + return parseChapters(webClient.httpGet("$baseUrl?page=$page").parseHtml().body()) + } + + private val dateFormat = SimpleDateFormat("d MMM yyyy", sourceLocale) + + private fun parseChapters(doc: Element): List { + return doc.select("ul.list-unstyled li a.chapter_link") + .mapChapters { i, a -> + val href = a.attrAsRelativeUrl("href") + val name = a.selectFirst(".chapter div")?.html()?.substringBefore("<") ?: "Chapitre $i" + val dateText = a.selectFirst(".small")?.text() + val chapterN = href.substringAfterLast('/').replace("-", ".").replace("[^0-9.]".toRegex(), "").toFloat() + MangaChapter( + id = generateUid(href), + name = name, + number = chapterN, + volume = 0, + url = href, + scanlator = null, + uploadDate = dateFormat.tryParse(dateText), + branch = null, + source = source, + ) + } + } + + override suspend fun getPages(chapter: MangaChapter): List { + val chapterUrl = chapter.url.toAbsoluteUrl(domain) + val docs = webClient.httpGet(chapterUrl).parseHtml() + + val cdn = docs.selectFirstOrThrow("script:containsData(var cdn = )").data().substringAfterLast("var cdn = \"") + .substringBefore('"') + val domainCdn = cdn + domain.removePrefix("www") + val slugManga = chapterUrl.substringAfter("/m/").substringBeforeLast('/') + val slugChapter = chapterUrl.substringAfterLast('/') + + val script = docs.selectFirstOrThrow("script:containsData(var pages =)") + val json = JSONArray(script.data().substringAfter("pages = ").substringBefore("; var next_chapter")) + val pages = ArrayList(json.length()) + for (i in 0 until json.length()) { + val img = json.getJSONObject(i).getString("image") + val v = json.getJSONObject(i).getInt("version") + val url = "https://$domainCdn/uploads/manga/$slugManga/chapters_fr/$slugChapter/$img?$v" + pages.add( + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ), + ) + } + return pages + } + + override suspend fun getAvailableTags(): Set { + val doc = webClient.httpGet("https://$domain/liste-mangas").parseHtml() + return doc.select("select.selectpicker option").drop(1).mapNotNullToSet { + MangaTag( + key = it.attr("value"), + title = it.text(), + source = source, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScansMangasMe.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScansMangasMe.kt index f2bd90d06..6f106e348 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScansMangasMe.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScansMangasMe.kt @@ -15,7 +15,7 @@ import java.util.* @MangaSourceParser("SCANS_MANGAS_ME", "ScansMangas.me", "fr") internal class ScansMangasMe(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.SCANS_MANGAS_ME, 0) { + PagedMangaParser(context, MangaParserSource.SCANS_MANGAS_ME, 0) { override val availableSortOrders: Set = EnumSet.of( SortOrder.ALPHABETICAL, @@ -132,7 +132,7 @@ internal class ScansMangasMe(context: MangaLoaderContext) : } private fun getChapters(doc: Document): List { - return doc.body().requireElementById("chapter_list").select("li").mapChapters(reversed = true) { i, li -> + return doc.body().requireElementById("chapter_list").select("li").mapChapters(reversed = true) { _, li -> val a = li.selectFirstOrThrow("a") val href = a.attrAsRelativeUrl("href") MangaChapter( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt index 6661c2203..f46b20eb3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/ScantradUnion.kt @@ -13,7 +13,8 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("SCANTRADUNION", "ScantradUnion", "fr") -internal class ScantradUnion(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.SCANTRADUNION, 10) { +internal class ScantradUnion(context: MangaLoaderContext) : + PagedMangaParser(context, MangaParserSource.SCANTRADUNION, 10) { override val availableSortOrders: Set = EnumSet.of( SortOrder.ALPHABETICAL, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/GalleryAdultsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/GalleryAdultsParser.kt index e4b70d0b8..a9e23f6cb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/GalleryAdultsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/GalleryAdultsParser.kt @@ -16,7 +16,7 @@ import java.util.* internal abstract class GalleryAdultsParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 20, ) : PagedMangaParser(context, source, pageSize) { @@ -158,7 +158,8 @@ internal abstract class GalleryAdultsParser( MangaChapter( id = manga.id, name = manga.title, - number = 1, + number = 1f, + volume = 0, url = urlChapters, scanlator = null, uploadDate = 0, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/AsmHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/AsmHentai.kt index b4e4b7716..4219efb24 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/AsmHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/AsmHentai.kt @@ -4,7 +4,7 @@ import org.jsoup.nodes.Element 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.galleryadults.GalleryAdultsParser import org.koitharu.kotatsu.parsers.util.mapToSet @@ -13,7 +13,7 @@ import java.util.* @MangaSourceParser("ASMHENTAI", "AsmHentai", type = ContentType.HENTAI) internal class AsmHentai(context: MangaLoaderContext) : - GalleryAdultsParser(context, MangaSource.ASMHENTAI, "asmhentai.com") { + GalleryAdultsParser(context, MangaParserSource.ASMHENTAI, "asmhentai.com") { override val selectGallery = ".preview_item" override val selectGalleryLink = ".image a" override val selectGalleryImg = ".image img" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/DoujinDesuUk.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/DoujinDesuUk.kt index cc06c5542..03c8ce2a7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/DoujinDesuUk.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/DoujinDesuUk.kt @@ -10,7 +10,7 @@ import java.util.* @MangaSourceParser("DOUJINDESUUK", "DoujinDesu.uk", type = ContentType.HENTAI) internal class DoujinDesuUk(context: MangaLoaderContext) : - GalleryAdultsParser(context, MangaSource.DOUJINDESUUK, "doujindesu.uk", 25) { + GalleryAdultsParser(context, MangaParserSource.DOUJINDESUUK, "doujindesu.uk", 25) { override val selectGallery = ".gallery" override val selectGalleryLink = "a" override val selectGalleryTitle = ".caption" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/Hentai3.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/Hentai3.kt index 832a689b4..aed6ed583 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/Hentai3.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/Hentai3.kt @@ -10,7 +10,7 @@ import java.util.* @MangaSourceParser("HENTAI3", "3Hentai", type = ContentType.HENTAI) internal class Hentai3(context: MangaLoaderContext) : - GalleryAdultsParser(context, MangaSource.HENTAI3, "3hentai.net", pageSize = 30) { + GalleryAdultsParser(context, MangaParserSource.HENTAI3, "3hentai.net", pageSize = 30) { override val selectGallery = ".doujin " override val selectGalleryLink = "a" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiEnvy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiEnvy.kt index ef469c05e..d71a21f02 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiEnvy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiEnvy.kt @@ -13,7 +13,7 @@ import java.util.* @MangaSourceParser("HENTAIENVY", "HentaiEnvy", type = ContentType.HENTAI) internal class HentaiEnvy(context: MangaLoaderContext) : - GalleryAdultsParser(context, MangaSource.HENTAIENVY, "hentaienvy.com", pageSize = 24) { + GalleryAdultsParser(context, MangaParserSource.HENTAIENVY, "hentaienvy.com", pageSize = 24) { override val selectGalleryLink = "a" override val selectGalleryTitle = "div.title" override val selectTags = ".tags_items" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiEra.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiEra.kt index dccc423c9..af2565c5b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiEra.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiEra.kt @@ -10,7 +10,7 @@ import java.util.* @MangaSourceParser("HENTAIERA", "HentaiEra", type = ContentType.HENTAI) internal class HentaiEra(context: MangaLoaderContext) : - GalleryAdultsParser(context, MangaSource.HENTAIERA, "hentaiera.com", 25) { + GalleryAdultsParser(context, MangaParserSource.HENTAIERA, "hentaiera.com", 25) { override val selectTags = ".tags_section" override val selectTag = ".galleries_info li:contains(Tags) div.info_tags" override val selectAuthor = ".galleries_info li:contains(Artists) span.item_name" @@ -131,7 +131,8 @@ internal class HentaiEra(context: MangaLoaderContext) : MangaChapter( id = manga.id, name = manga.title, - number = 1, + number = 1f, + volume = 0, url = urlChapters, scanlator = null, uploadDate = 0, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiForce.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiForce.kt index 5fec4f3e5..5b22bdacf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiForce.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiForce.kt @@ -10,7 +10,7 @@ import java.util.* @MangaSourceParser("HENTAIFORCE", "HentaiForce", type = ContentType.HENTAI) internal class HentaiForce(context: MangaLoaderContext) : - GalleryAdultsParser(context, MangaSource.HENTAIFORCE, "hentaiforce.net", pageSize = 30) { + GalleryAdultsParser(context, MangaParserSource.HENTAIFORCE, "hentaiforce.net", pageSize = 30) { override val selectGallery = ".gallery" override val selectGalleryLink = "a.gallery-thumb" override val pathTagUrl = "/tags/popular/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiFox.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiFox.kt index 45972561d..e61d9b901 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiFox.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiFox.kt @@ -11,7 +11,7 @@ import java.util.* @MangaSourceParser("HENTAIFOX", "HentaiFox", type = ContentType.HENTAI) internal class HentaiFox(context: MangaLoaderContext) : - GalleryAdultsParser(context, MangaSource.HENTAIFOX, "hentaifox.com") { + GalleryAdultsParser(context, MangaParserSource.HENTAIFOX, "hentaifox.com") { override val selectGallery = ".lc_galleries .thumb, .related_galleries .thumb" override val pathTagUrl = "/tags/popular/pag/" override val selectTags = ".list_tags" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiRox.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiRox.kt index 16d5864a1..cbe1f5be7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiRox.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/HentaiRox.kt @@ -4,7 +4,7 @@ import org.jsoup.nodes.Element 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.galleryadults.GalleryAdultsParser import org.koitharu.kotatsu.parsers.util.mapToSet @@ -13,7 +13,7 @@ import java.util.* @MangaSourceParser("HENTAIROX", "HentaiRox", type = ContentType.HENTAI) internal class HentaiRox(context: MangaLoaderContext) : - GalleryAdultsParser(context, MangaSource.HENTAIROX, "hentairox.com") { + GalleryAdultsParser(context, MangaParserSource.HENTAIROX, "hentairox.com") { override val selectGalleryImg = ".inner_thumb img" override val selectTags = ".gtags" override val selectTag = "li:contains(Tags:)" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/NHentaiParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/NHentaiParser.kt index b9860795b..9edfb7c93 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/NHentaiParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/galleryadults/all/NHentaiParser.kt @@ -14,7 +14,7 @@ import java.util.* @MangaSourceParser("NHENTAI", "NHentai.net", type = ContentType.HENTAI) internal class NHentaiParser(context: MangaLoaderContext) : - GalleryAdultsParser(context, MangaSource.NHENTAI, "nhentai.net", 25) { + GalleryAdultsParser(context, MangaParserSource.NHENTAI, "nhentai.net", 25) { override val selectGallery = "div.index-container:not(.index-popular) .gallery, #related-container .gallery" override val selectGalleryLink = "a" override val selectGalleryTitle = ".caption" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/GattsuParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/GattsuParser.kt index 80bb6a6b2..9fb5d11a1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/GattsuParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/GattsuParser.kt @@ -11,7 +11,7 @@ import java.util.* internal abstract class GattsuParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 20, ) : PagedMangaParser(context, source, pageSize) { @@ -115,7 +115,8 @@ internal abstract class GattsuParser( MangaChapter( id = manga.id, name = manga.title, - number = 1, + number = 1f, + volume = 0, url = urlChapter, scanlator = null, uploadDate = 0, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/HentaiSeason.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/HentaiSeason.kt index 5589ea89a..04bd383d4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/HentaiSeason.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/HentaiSeason.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.gattsu.pt 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.gattsu.GattsuParser @MangaSourceParser("HENTAISEASON", "HentaiSeason", "pt", ContentType.HENTAI) internal class HentaiSeason(context: MangaLoaderContext) : - GattsuParser(context, MangaSource.HENTAISEASON, "hentaiseason.com") + GattsuParser(context, MangaParserSource.HENTAISEASON, "hentaiseason.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/HentaiTokyo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/HentaiTokyo.kt index febe8c2f7..b05a80670 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/HentaiTokyo.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/HentaiTokyo.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.gattsu.pt 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.gattsu.GattsuParser @MangaSourceParser("HENTAITOKYO", "HentaiTokyo", "pt", ContentType.HENTAI) internal class HentaiTokyo(context: MangaLoaderContext) : - GattsuParser(context, MangaSource.HENTAITOKYO, "hentaitokyo.net") { + GattsuParser(context, MangaParserSource.HENTAITOKYO, "hentaitokyo.net") { override val tagUrl = "tags" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/MundoHentaiOficial.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/MundoHentaiOficial.kt index e187ec7aa..4f1c354c3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/MundoHentaiOficial.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/MundoHentaiOficial.kt @@ -5,18 +5,14 @@ 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.Manga -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN import org.koitharu.kotatsu.parsers.site.gattsu.GattsuParser -import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrl -import org.koitharu.kotatsu.parsers.util.domain -import org.koitharu.kotatsu.parsers.util.generateUid -import org.koitharu.kotatsu.parsers.util.selectLastOrThrow -import org.koitharu.kotatsu.parsers.util.src +import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("MUNDOHENTAIOFICIAL", "MundoHentaiOficial", "pt", ContentType.HENTAI) internal class MundoHentaiOficial(context: MangaLoaderContext) : - GattsuParser(context, MangaSource.MUNDOHENTAIOFICIAL, "mundohentaioficial.com") { + GattsuParser(context, MangaParserSource.MUNDOHENTAIOFICIAL, "mundohentaioficial.com") { override val tagUrl = "tags" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/UniversoHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/UniversoHentai.kt index f728442d2..a7a52ee80 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/UniversoHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/gattsu/pt/UniversoHentai.kt @@ -3,17 +3,13 @@ package org.koitharu.kotatsu.parsers.site.gattsu.pt import org.jsoup.nodes.Element 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.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaPage -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.gattsu.GattsuParser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("UNIVERSOHENTAI", "UniversoHentai", "pt", ContentType.HENTAI) internal class UniversoHentai(context: MangaLoaderContext) : - GattsuParser(context, MangaSource.UNIVERSOHENTAI, "universohentai.com") { + GattsuParser(context, MangaParserSource.UNIVERSOHENTAI, "universohentai.com") { override val tagPrefix = "category" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/GuyaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/GuyaParser.kt index 66f59eef5..9a4943d2f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/GuyaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/GuyaParser.kt @@ -10,7 +10,7 @@ import java.util.* internal abstract class GuyaParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 0, ) : PagedMangaParser(context, source, pageSize) { @@ -91,7 +91,8 @@ internal abstract class GuyaParser( MangaChapter( id = generateUid(url), name = chapter.getString("title"), - number = i, + number = i.toFloat(), + volume = 0, url = url, scanlator = null, uploadDate = 0, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/all/MahouShoujobu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/all/MahouShoujobu.kt index bfbdf7624..77b9ca056 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/all/MahouShoujobu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/all/MahouShoujobu.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.guya.all import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.guya.GuyaParser @MangaSourceParser("MAHOUSHOUJOBU", "MahouShoujobu") internal class MahouShoujobu(context: MangaLoaderContext) : - GuyaParser(context, MangaSource.MAHOUSHOUJOBU, "mahoushoujobu.com") + GuyaParser(context, MangaParserSource.MAHOUSHOUJOBU, "mahoushoujobu.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/en/Danke.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/en/Danke.kt index 80fe6fdab..a49cf2f54 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/en/Danke.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/en/Danke.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.guya.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.guya.GuyaParser @MangaSourceParser("DANKE", "DankeFursLesen", "en") internal class Danke(context: MangaLoaderContext) : - GuyaParser(context, MangaSource.DANKE, "danke.moe") + GuyaParser(context, MangaParserSource.DANKE, "danke.moe") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/en/GuyaCubari.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/en/GuyaCubari.kt index 6dff7ee69..28cc6293e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/en/GuyaCubari.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/en/GuyaCubari.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.guya.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.guya.GuyaParser @MangaSourceParser("GUYACUBARI", "GuyaCubari", "en") internal class GuyaCubari(context: MangaLoaderContext) : - GuyaParser(context, MangaSource.GUYACUBARI, "guya.cubari.moe") + GuyaParser(context, MangaParserSource.GUYACUBARI, "guya.cubari.moe") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/en/Hachirumi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/en/Hachirumi.kt index 42625374a..42f3a05a6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/en/Hachirumi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/guya/en/Hachirumi.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.guya.en 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.guya.GuyaParser @MangaSourceParser("HACHIRUMI", "Hachirumi", "en", ContentType.HENTAI) internal class Hachirumi(context: MangaLoaderContext) : - GuyaParser(context, MangaSource.HACHIRUMI, "hachirumi.com") + GuyaParser(context, MangaParserSource.HACHIRUMI, "hachirumi.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/HeanCms.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/HeanCms.kt index 415dd4279..4968b05bc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/HeanCms.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/HeanCms.kt @@ -11,7 +11,7 @@ import java.util.* internal abstract class HeanCms( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 20, ) : PagedMangaParser(context, source, pageSize) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/en/OmegaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/en/OmegaScans.kt index 14ab57535..2869155ca 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/en/OmegaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/en/OmegaScans.kt @@ -14,7 +14,8 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("OMEGASCANS", "OmegaScans", "en", ContentType.HENTAI) -internal class OmegaScans(context: MangaLoaderContext) : HeanCms(context, MangaSource.OMEGASCANS, "omegascans.org") { +internal class OmegaScans(context: MangaLoaderContext) : + HeanCms(context, MangaParserSource.OMEGASCANS, "omegascans.org") { override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { val url = buildString { append("https://api.") @@ -106,7 +107,7 @@ internal class OmegaScans(context: MangaLoaderContext) : HeanCms(context, MangaS val dateFormat = SimpleDateFormat(datePattern, Locale.ENGLISH) val chaptersJsonArray = json.getJSONArray("data") - var totalChapters = json.getJSONObject("meta").getInt("total") + var totalChapters = json.getJSONObject("meta").getInt("total").toFloat() val chapters = chaptersJsonArray.mapJSON { j -> val slug = j.getJSONObject("series").getString("series_slug") val chapterUrl = "https://$domain/$pathManga/$slug/${j.getString("chapter_slug")}" @@ -116,6 +117,7 @@ internal class OmegaScans(context: MangaLoaderContext) : HeanCms(context, MangaS url = chapterUrl, name = j.getString("chapter_name"), number = totalChapters--, + volume = 0, branch = null, uploadDate = dateFormat.tryParse(date), scanlator = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/en/TempleScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/en/TempleScan.kt index 8fc5adbee..627f5b1c8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/en/TempleScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/en/TempleScan.kt @@ -2,13 +2,13 @@ package org.koitharu.kotatsu.parsers.site.heancms.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.heancms.HeanCms import org.koitharu.kotatsu.parsers.util.domain @MangaSourceParser("TEMPLESCAN", "TempleScan", "en") internal class TempleScan(context: MangaLoaderContext) : - HeanCms(context, MangaSource.TEMPLESCAN, "templescan.net") { + HeanCms(context, MangaParserSource.TEMPLESCAN, "templescan.net") { override val pathManga = "comic" override val apiPath: String diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/es/YugenMangasEs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/es/YugenMangasEs.kt index 8e37063de..e3d48ef9a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/es/YugenMangasEs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/es/YugenMangasEs.kt @@ -1,15 +1,17 @@ package org.koitharu.kotatsu.parsers.site.heancms.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.* import org.koitharu.kotatsu.parsers.site.heancms.HeanCms -import org.koitharu.kotatsu.parsers.util.json.mapJSON import org.koitharu.kotatsu.parsers.util.* +import org.koitharu.kotatsu.parsers.util.json.mapJSON +@Broken // Not dead but changed template and url visualikigai.com @MangaSourceParser("YUGEN_MANGAS_ES", "YugenMangas.lat", "es", ContentType.HENTAI) internal class YugenMangasEs(context: MangaLoaderContext) : - HeanCms(context, MangaSource.YUGEN_MANGAS_ES, "yugenmangas.lat") { + HeanCms(context, MangaParserSource.YUGEN_MANGAS_ES, "yugenmangas.lat") { private val domainAlt = "yugenmangas.net" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/fr/PerfScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/fr/PerfScan.kt index 6688d165f..d09c8349b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/fr/PerfScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/fr/PerfScan.kt @@ -3,34 +3,16 @@ package org.koitharu.kotatsu.parsers.site.heancms.fr import org.json.JSONArray import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.Manga -import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaListFilter -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.model.MangaState -import org.koitharu.kotatsu.parsers.model.MangaTag -import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN -import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.heancms.HeanCms -import org.koitharu.kotatsu.parsers.util.domain -import org.koitharu.kotatsu.parsers.util.json.getFloatOrDefault -import org.koitharu.kotatsu.parsers.util.json.getStringOrNull -import org.koitharu.kotatsu.parsers.util.json.mapJSON -import org.koitharu.kotatsu.parsers.util.json.mapJSONToSet -import org.koitharu.kotatsu.parsers.util.json.unescapeJson -import org.koitharu.kotatsu.parsers.util.oneOrThrowIfMany -import org.koitharu.kotatsu.parsers.util.parseHtml -import org.koitharu.kotatsu.parsers.util.parseJson -import org.koitharu.kotatsu.parsers.util.toRelativeUrl -import org.koitharu.kotatsu.parsers.util.toTitleCase -import org.koitharu.kotatsu.parsers.util.tryParse -import org.koitharu.kotatsu.parsers.util.urlEncoded +import org.koitharu.kotatsu.parsers.util.* +import org.koitharu.kotatsu.parsers.util.json.* import java.text.SimpleDateFormat -import java.util.Locale +import java.util.* @MangaSourceParser("PERF_SCAN", "PerfScan", "fr") internal class PerfScan(context: MangaLoaderContext) : - HeanCms(context, MangaSource.PERF_SCAN, "perf-scan.fr") { + HeanCms(context, MangaParserSource.PERF_SCAN, "perf-scan.fr") { override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { val url = buildString { @@ -125,7 +107,7 @@ internal class PerfScan(context: MangaLoaderContext) : val dateFormat = SimpleDateFormat(datePattern, Locale.ENGLISH) val chaptersJsonArray = json.getJSONArray("data") - var totalChapters = json.getJSONObject("meta").getInt("total") + var totalChapters = json.getJSONObject("meta").getInt("total").toFloat() val chapters = chaptersJsonArray.mapJSON { j -> val slug = j.getJSONObject("series").getString("series_slug") val chapterUrl = "https://$domain/$pathManga/$slug/${j.getString("chapter_slug")}" @@ -135,6 +117,7 @@ internal class PerfScan(context: MangaLoaderContext) : url = chapterUrl, name = j.getString("chapter_name"), number = totalChapters--, + volume = 0, branch = null, uploadDate = dateFormat.tryParse(date), scanlator = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/pt/ModeScanlator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/pt/ModeScanlator.kt index d1a1b7643..69c46421a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/pt/ModeScanlator.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancms/pt/ModeScanlator.kt @@ -13,12 +13,13 @@ import java.util.* @MangaSourceParser("MODESCANLATOR", "ModeScanlator", "pt") internal class ModeScanlator( context: MangaLoaderContext, -) : HeanCms(context, MangaSource.MODESCANLATOR, "modescanlator.com") { +) : HeanCms(context, MangaParserSource.MODESCANLATOR, "site.modescanlator.net") { + private val domainNoSite = domain.removePrefix("site.") override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { val url = buildString { append("https://api.") - append(domain) + append(domainNoSite) append("/query?adult=true&query_string=") when (filter) { is MangaListFilter.Search -> { @@ -70,7 +71,7 @@ internal class ModeScanlator( val cover = if (j.getString("thumbnail").contains('/')) { j.getString("thumbnail") } else { - "https://api.$domain/${j.getString("thumbnail")}" + "https://api.$domainNoSite/${j.getString("thumbnail")}" } Manga( id = j.getLong("id"), @@ -100,7 +101,7 @@ internal class ModeScanlator( override suspend fun getDetails(manga: Manga): Manga { val url = buildString { append("https://api.") - append(domain) + append(domainNoSite) append("/chapter/query?perPage=9999&series_id=") append(manga.id) } @@ -108,7 +109,7 @@ internal class ModeScanlator( val dateFormat = SimpleDateFormat(datePattern, Locale.ENGLISH) val chaptersJsonArray = json.getJSONArray("data") - var totalChapters = json.getJSONObject("meta").getInt("total") + var totalChapters = json.getJSONObject("meta").getInt("total").toFloat() val chapters = chaptersJsonArray.mapJSON { j -> val slug = j.getJSONObject("series").getString("series_slug") val chapterUrl = "https://$domain/$pathManga/$slug/${j.getString("chapter_slug")}" @@ -118,6 +119,7 @@ internal class ModeScanlator( url = chapterUrl, name = j.getString("chapter_name"), number = totalChapters--, + volume = 0, branch = null, uploadDate = dateFormat.tryParse(date), scanlator = null, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/HeanCmsAlt.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/HeanCmsAlt.kt index f2318dbf1..838d44ed8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/HeanCmsAlt.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/HeanCmsAlt.kt @@ -14,7 +14,7 @@ import java.util.* internal abstract class HeanCmsAlt( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 18, ) : PagedMangaParser(context, source, pageSize) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/Brakeout.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/Brakeout.kt index 7a0e781d2..572ddecb3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/Brakeout.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/Brakeout.kt @@ -4,20 +4,14 @@ import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.heancmsalt.HeanCmsAlt -import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl -import org.koitharu.kotatsu.parsers.util.domain -import org.koitharu.kotatsu.parsers.util.generateUid -import org.koitharu.kotatsu.parsers.util.mapChapters -import org.koitharu.kotatsu.parsers.util.parseHtml -import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow -import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat @MangaSourceParser("BRAKEOUT", "Brakeout", "es") internal class Brakeout(context: MangaLoaderContext) : - HeanCmsAlt(context, MangaSource.BRAKEOUT, "brakeout.xyz", 10) { + HeanCmsAlt(context, MangaParserSource.BRAKEOUT, "brakeout.xyz", 10) { override val selectManga = "div.grid.grid-cols-2 figure" override val selectMangaTitle = "figcaption" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/CerberuSeries.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/CerberuSeries.kt index 13648f5db..d17e0d188 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/CerberuSeries.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/CerberuSeries.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.heancmsalt.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.heancmsalt.HeanCmsAlt @MangaSourceParser("LEGIONSCANS", "CerberusSeries", "es") internal class CerberuSeries(context: MangaLoaderContext) : - HeanCmsAlt(context, MangaSource.LEGIONSCANS, "cerberuseries.xyz") + HeanCmsAlt(context, MangaParserSource.LEGIONSCANS, "cerberuseries.xyz") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/MangaEsp.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/MangaEsp.kt index 62f933dab..3dec2abd5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/MangaEsp.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/heancmsalt/es/MangaEsp.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.heancmsalt.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.heancmsalt.HeanCmsAlt @MangaSourceParser("MANGAESP", "MangaEsp", "es") internal class MangaEsp(context: MangaLoaderContext) : - HeanCmsAlt(context, MangaSource.MANGAESP, "mangaesp.net", 15) { + HeanCmsAlt(context, MangaParserSource.MANGAESP, "mangaesp.net", 15) { override val listUrl = "/comic" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/DoujinDesuParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/DoujinDesuParser.kt index 4dfa52e13..2c95a59a9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/DoujinDesuParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/DoujinDesuParser.kt @@ -11,7 +11,8 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("DOUJINDESU", "DoujinDesu.tv", "id") -class DoujinDesuParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.DOUJINDESU, pageSize = 18) { +class DoujinDesuParser(context: MangaLoaderContext) : + PagedMangaParser(context, MangaParserSource.DOUJINDESU, pageSize = 18) { override val configKeyDomain: ConfigKey.Domain get() = ConfigKey.Domain("doujindesu.tv") @@ -126,7 +127,8 @@ class DoujinDesuParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaChapter( id = generateUid(url), name = titleTag.text(), - number = index + 1, + number = index + 1f, + volume = 0, url = url, scanlator = null, uploadDate = chapterDateFormat.tryParse(element.select(".epsleft > .date").text()), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/mangaworld/MangaWorld.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/mangaworld/MangaWorld.kt index e9d2632f2..6d8a155cf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/mangaworld/MangaWorld.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/mangaworld/MangaWorld.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.it.mangaworld import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource @MangaSourceParser("MANGAWORLD", "MangaWorld", "it") internal class MangaWorld( context: MangaLoaderContext, -) : MangaWorldParser(context, MangaSource.MANGAWORLD,"mangaworld.ac") +) : MangaWorldParser(context, MangaParserSource.MANGAWORLD, "mangaworld.ac") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/mangaworld/MangaWorldAdult.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/mangaworld/MangaWorldAdult.kt index 5713c483d..3fc1cd407 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/mangaworld/MangaWorldAdult.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/mangaworld/MangaWorldAdult.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.it.mangaworld import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.MangaParserSource @MangaSourceParser("MANGAWORLDADULT", "MangaWorldAdult", "it") internal class MangaWorldAdult( context: MangaLoaderContext, -) : MangaWorldParser(context, MangaSource.MANGAWORLDADULT, "mangaworldadult.net") +) : MangaWorldParser(context, MangaParserSource.MANGAWORLDADULT, "mangaworldadult.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/mangaworld/MangaWorldParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/mangaworld/MangaWorldParser.kt index 45be8dbd2..7fbfe235b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/mangaworld/MangaWorldParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/it/mangaworld/MangaWorldParser.kt @@ -10,20 +10,27 @@ import java.text.SimpleDateFormat import java.util.* abstract class MangaWorldParser( - context: MangaLoaderContext, - source: MangaSource, - domain: String, - pageSize: Int = 16 + context: MangaLoaderContext, + source: MangaParserSource, + domain: String, + pageSize: Int = 16, ) : PagedMangaParser(context, source, pageSize) { override val availableSortOrders: Set = - EnumSet.of(SortOrder.POPULARITY, SortOrder.ALPHABETICAL, SortOrder.NEWEST, SortOrder.ALPHABETICAL_DESC, SortOrder.UPDATED) + EnumSet.of( + SortOrder.POPULARITY, + SortOrder.ALPHABETICAL, + SortOrder.NEWEST, + SortOrder.ALPHABETICAL_DESC, + SortOrder.UPDATED, + ) override val defaultSortOrder: SortOrder get() = SortOrder.ALPHABETICAL override val configKeyDomain = ConfigKey.Domain(domain) - override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.ABANDONED, MangaState.PAUSED) + override val availableStates: Set = + EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.ABANDONED, MangaState.PAUSED) override val isMultipleTagsSupported = true @@ -43,7 +50,9 @@ abstract class MangaWorldParser( } is MangaListFilter.Advanced -> { - if(filter.tags.isEmpty() && filter.states.isEmpty() && filter.sortOrder == SortOrder.UPDATED) return parseMangaList(webClient.httpGet("https://$domain/?page=$page").parseHtml()) + if (filter.tags.isEmpty() && filter.states.isEmpty() && filter.sortOrder == SortOrder.UPDATED) return parseMangaList( + webClient.httpGet("https://$domain/?page=$page").parseHtml(), + ) if (filter.tags.isNotEmpty()) { filter.tags.joinTo(this, "&") { it.key.substringAfter("archive?") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ja/NicovideoSeigaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ja/NicovideoSeigaParser.kt index f12c8d0fa..6b0dc7b53 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ja/NicovideoSeigaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ja/NicovideoSeigaParser.kt @@ -14,7 +14,7 @@ private const val STATUS_FINISHED = "完結" @MangaSourceParser("NICOVIDEO_SEIGA", "NicoVideo Seiga", "ja") class NicovideoSeigaParser(context: MangaLoaderContext) : - MangaParser(context, MangaSource.NICOVIDEO_SEIGA), + MangaParser(context, MangaParserSource.NICOVIDEO_SEIGA), MangaParserAuthProvider { override val headers: Headers = Headers.Builder() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/KeyoappParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/KeyoappParser.kt new file mode 100644 index 000000000..e5f08ddc0 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/KeyoappParser.kt @@ -0,0 +1,307 @@ +package org.koitharu.kotatsu.parsers.site.keyoapp + +import androidx.collection.scatterSetOf +import kotlinx.coroutines.coroutineScope +import org.jsoup.nodes.Document +import org.jsoup.nodes.Element +import org.koitharu.kotatsu.parsers.MangaLoaderContext +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.* + +internal abstract class KeyoappParser( + context: MangaLoaderContext, + source: MangaParserSource, + domain: String, + pageSize: Int = 24, +) : PagedMangaParser(context, source, pageSize) { + + override val configKeyDomain = ConfigKey.Domain(domain) + + private val userAgentKey = ConfigKey.UserAgent(context.getDefaultUserAgent()) + + override fun onCreateConfig(keys: MutableCollection>) { + super.onCreateConfig(keys) + keys.add(userAgentKey) + } + + override val isMultipleTagsSupported = false + + override val availableSortOrders: Set = EnumSet.of( + SortOrder.UPDATED, + SortOrder.NEWEST, + ) + + protected open val listUrl = "series/" + protected open val datePattern = "MMM d, yyyy" + + + @JvmField + protected val ongoing = scatterSetOf( + "ongoing", + ) + + @JvmField + protected val finished = scatterSetOf( + "completed", + ) + + @JvmField + protected val paused = scatterSetOf( + "paused", + ) + + @JvmField + protected val upcoming = scatterSetOf( + "dropped", + ) + + init { + paginator.firstPage = 1 + searchPaginator.firstPage = 1 + } + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + + var query = "" + var tag = "" + + if (page > 1) { + return emptyList() + } + + val url = urlBuilder().apply { + + when (filter) { + is MangaListFilter.Search -> { + addPathSegment("series") + query = filter.query + } + + is MangaListFilter.Advanced -> { + + if (filter.tags.isNotEmpty()) { + filter.tags.oneOrThrowIfMany()?.let { + tag = it.title + } + } + + when (filter.sortOrder) { + SortOrder.UPDATED -> addPathSegment("latest") + SortOrder.NEWEST -> addPathSegment("series") + else -> addPathSegment("latest") + } + + } + + null -> addPathSegment("latest") + } + }.build() + + return parseMangaList(webClient.httpGet(url).parseHtml(), tag, query) + } + + + protected open fun parseMangaList(doc: Document, tag: String, query: String): List { + + val manga = ArrayList() + + doc.select("#searched_series_page button").ifEmpty { + doc.select("div.grid > div.group") + }.map { div -> + + val title = div.selectFirstOrThrow("h3").text().orEmpty() + if (query.isNotEmpty() && title.contains(query, ignoreCase = true)) { + manga.add(addManga(div)) + } + + // Not all tags are present in UPDATED + val tags = div.attr("tags") ?: div.select("div.gap-1 a").joinToString() + if (tag.isNotEmpty() && tags.contains(tag, ignoreCase = true)) { + manga.add(addManga(div)) + } + + if (query.isEmpty() && tag.isEmpty()) { + manga.add(addManga(div)) + } + + } + + return manga + } + + + private fun addManga(div: Element): Manga { + val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href") + val cover = div.selectFirst("div.h-full") ?: div.selectFirst("a") + return Manga( + id = generateUid(href), + url = href, + publicUrl = href.toAbsoluteUrl(div.host ?: domain), + coverUrl = cover?.styleValueOrNull("background-image")?.cssUrl().orEmpty(), + title = div.selectFirstOrThrow("h3").text().orEmpty(), + altTitle = null, + rating = RATING_UNKNOWN, + tags = div.select("div.gap-1 a").mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").substringAfterLast('='), + title = a.text().toTitleCase(), + source = source, + ) + }, + author = null, + state = null, + source = source, + isNsfw = isNsfwSource, + ) + } + + private fun String.cssUrl(): String? { + val fromIndex = indexOf("url(") + if (fromIndex == -1) { + return null + } + val toIndex = indexOf(')', startIndex = fromIndex) + return if (toIndex == -1) { + null + } else { + substring(fromIndex + 4, toIndex).trim() + } + } + + + override suspend fun getAvailableTags(): Set { + val doc = webClient.httpGet("https://$domain/$listUrl").parseHtml() + return doc.requireElementById("series_tags_page").select("button").mapNotNullToSet { button -> + val key = button.attr("tag") ?: return@mapNotNullToSet null + val name = button.text().toTitleCase(sourceLocale) + MangaTag( + key = key, + title = name, + source = source, + ) + } + } + + protected open val selectDesc = "div.grid > div.overflow-hidden > p" + protected open val selectState = "div[alt=Status]" + protected open val selectTag = "div.grid:has(>h1) > div > a" + protected open val selectAuthor = "div[alt=Author]" + protected open val selectChapter = "#chapters > a:not(:has(.text-sm span:matches(Upcoming)))" + + override suspend fun getDetails(manga: Manga): Manga = coroutineScope { + val fullUrl = manga.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + manga.copy( + tags = doc.body().select(selectTag).mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").substringAfterLast('='), + title = a.text().toTitleCase(), + source = source, + ) + }, + description = doc.selectFirstOrThrow(selectDesc).html(), + state = when ( + doc.selectFirstOrThrow(selectState).text().lowercase() + ) { + in ongoing -> MangaState.ONGOING + in finished -> MangaState.FINISHED + in paused -> MangaState.PAUSED + in upcoming -> MangaState.UPCOMING + else -> null + }, + chapters = doc.select(selectChapter) + .mapChapters(reversed = true) { i, a -> + val href = a.attrAsRelativeUrl("href") + val name = a.selectFirstOrThrow("span.truncate").text() + val dateText = a.selectLast("div.text-xs.w-fit")?.text() ?: "0" + MangaChapter( + id = generateUid(href), + name = name, + number = i + 1f, + volume = 0, + url = href, + scanlator = null, + uploadDate = parseChapterDate( + dateFormat, + dateText, + ), + branch = null, + source = source, + ) + }, + ) + } + + protected open val selectPage = "#pages > img" + + override suspend fun getPages(chapter: MangaChapter): List { + val fullUrl = chapter.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + return doc.select(selectPage).map { img -> + val url = img.src()?.toRelativeUrl(domain) ?: img.parseFailed("Image src not found") + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } + + protected fun parseChapterDate(dateFormat: DateFormat, date: String?): Long { + val d = date?.lowercase() ?: return 0 + return when { + d.endsWith(" ago") -> parseRelativeDate(date) + + d.startsWith("year") -> Calendar.getInstance().apply { + add(Calendar.DAY_OF_MONTH, -1) + set(Calendar.HOUR_OF_DAY, 0) + set(Calendar.MINUTE, 0) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + + d.startsWith("today") -> Calendar.getInstance().apply { + set(Calendar.HOUR_OF_DAY, 0) + set(Calendar.MINUTE, 0) + set(Calendar.SECOND, 0) + set(Calendar.MILLISECOND, 0) + }.timeInMillis + + date.contains(Regex("""\d(st|nd|rd|th)""")) -> date.split(" ").map { + if (it.contains(Regex("""\d\D\D"""))) { + it.replace(Regex("""\D"""), "") + } else { + it + } + }.let { dateFormat.tryParse(it.joinToString(" ")) } + + 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("month", "months").anyWordIn(date) -> cal.apply { add(Calendar.MONTH, -number) }.timeInMillis + + WordSet("year").anyWordIn(date) -> cal.apply { add(Calendar.YEAR, -number) }.timeInMillis + else -> 0 + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/EzManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/EzManga.kt new file mode 100644 index 000000000..aa4de090e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/EzManga.kt @@ -0,0 +1,10 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser + +@MangaSourceParser("EZMANGA", "EzManga", "en") +internal class EzManga(context: MangaLoaderContext) : + KeyoappParser(context, MangaParserSource.EZMANGA, "ezmanga.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/KewnScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/KewnScans.kt new file mode 100644 index 000000000..2d6f28c84 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/KewnScans.kt @@ -0,0 +1,10 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser + +@MangaSourceParser("KEWNSCANS", "KewnScans", "en") +internal class KewnScans(context: MangaLoaderContext) : + KeyoappParser(context, MangaParserSource.KEWNSCANS, "kewnscans.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/LaidBackScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/LaidBackScans.kt new file mode 100644 index 000000000..d924bb23c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/LaidBackScans.kt @@ -0,0 +1,10 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser + +@MangaSourceParser("LAIDBACKSCANS", "LaidBackScans", "en") +internal class LaidBackScans(context: MangaLoaderContext) : + KeyoappParser(context, MangaParserSource.LAIDBACKSCANS, "laidbackscans.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/NecroScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/NecroScans.kt new file mode 100644 index 000000000..2cd4767a8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/en/NecroScans.kt @@ -0,0 +1,10 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.keyoapp.KeyoappParser + +@MangaSourceParser("NECROSCANS", "NecroScans", "en") +internal class NecroScans(context: MangaLoaderContext) : + KeyoappParser(context, MangaParserSource.NECROSCANS, "necroscans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/AnteikuScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/AnteikuScan.kt new file mode 100644 index 000000000..808be40c1 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/AnteikuScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.keyoapp.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.keyoapp.KeyoappParser + +@MangaSourceParser("ANTEIKUSCAN", "AnteikuScan", "fr") +internal class AnteikuScan(context: MangaLoaderContext) : + KeyoappParser(context, MangaParserSource.ANTEIKUSCAN, "anteikuscan.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/Astrames.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/Astrames.kt new file mode 100644 index 000000000..32e971807 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/Astrames.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.keyoapp.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.keyoapp.KeyoappParser + +@MangaSourceParser("ASTRAMES", "Astrames", "fr") +internal class Astrames(context: MangaLoaderContext) : + KeyoappParser(context, MangaParserSource.ASTRAMES, "astrames.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/EdScanlation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/EdScanlation.kt new file mode 100644 index 000000000..d3c457314 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/EdScanlation.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.keyoapp.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.keyoapp.KeyoappParser + +@MangaSourceParser("EDSCANLATION", "EdScanlation", "fr") +internal class EdScanlation(context: MangaLoaderContext) : + KeyoappParser(context, MangaParserSource.EDSCANLATION, "edscanlation.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/StarboundScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/StarboundScans.kt new file mode 100644 index 000000000..f56af7dff --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/fr/StarboundScans.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.keyoapp.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.keyoapp.KeyoappParser + +@MangaSourceParser("STARBOUNDSCANS", "StarboundScans", "fr") +internal class StarboundScans(context: MangaLoaderContext) : + KeyoappParser(context, MangaParserSource.STARBOUNDSCANS, "starboundscans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/likemanga/LikeMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/likemanga/LikeMangaParser.kt index 1a8047b5f..9db6de119 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/likemanga/LikeMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/likemanga/LikeMangaParser.kt @@ -17,7 +17,7 @@ import java.util.* internal abstract class LikeMangaParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 36, ) : PagedMangaParser(context, source, pageSize) { @@ -219,7 +219,8 @@ internal abstract class LikeMangaParser( MangaChapter( id = generateUid(url), name = li.selectFirstOrThrow("a").text(), - number = chapNum.toInt(), + number = chapNum.toFloat(), + volume = 0, url = url, scanlator = null, uploadDate = parseChapterDate( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/likemanga/en/LikeManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/likemanga/en/LikeManga.kt index e47ebce91..dab783e53 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/likemanga/en/LikeManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/likemanga/en/LikeManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.likemanga.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.likemanga.LikeMangaParser @MangaSourceParser("LIKEMANGA", "LikeManga", "en") internal class LikeManga(context: MangaLoaderContext) : - LikeMangaParser(context, MangaSource.LIKEMANGA, "likemanga.io") + LikeMangaParser(context, MangaParserSource.LIKEMANGA, "likemanga.io") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt index f811530ff..87612cb67 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/MadaraParser.kt @@ -7,8 +7,11 @@ import org.json.JSONObject import org.jsoup.nodes.Document import org.jsoup.nodes.Element import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaParserAuthProvider import org.koitharu.kotatsu.parsers.PagedMangaParser import org.koitharu.kotatsu.parsers.config.ConfigKey +import org.koitharu.kotatsu.parsers.exception.AuthRequiredException +import org.koitharu.kotatsu.parsers.exception.ParseException import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.util.* import java.text.DateFormat @@ -17,14 +20,42 @@ import java.util.* internal abstract class MadaraParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 12, -) : PagedMangaParser(context, source, pageSize) { +) : PagedMangaParser(context, source, pageSize), MangaParserAuthProvider { override val configKeyDomain = ConfigKey.Domain(domain) + private val userAgentKey = ConfigKey.UserAgent(context.getDefaultUserAgent()) + override fun onCreateConfig(keys: MutableCollection>) { + super.onCreateConfig(keys) + keys.add(userAgentKey) + } + + override val authUrl: String + get() = "https://${domain}" + + override val isAuthorized: Boolean + get() { + return context.cookieJar.getCookies(domain).any { + it.name.contains("wordpress_logged_in") + } + } + + override suspend fun getUsername(): String { + val body = webClient.httpGet("https://${domain}/").parseHtml().body() + return body.selectFirst(".c-user_name")?.text() + ?: run { + throw if (body.selectFirst("#loginform") != null) { + AuthRequiredException(source) + } else { + body.parseFailed("Cannot find username") + } + } + } + override val isMultipleTagsSupported = false override val availableSortOrders: Set = EnumSet.of( @@ -333,7 +364,7 @@ internal abstract class MadaraParser( publicUrl = href.toAbsoluteUrl(div.host ?: domain), coverUrl = div.selectFirst("img")?.src().orEmpty(), title = (summary?.selectFirst("h3") ?: summary?.selectFirst("h4") - ?: div.selectFirst(".manga-name"))?.text().orEmpty(), + ?: div.selectFirst(".manga-name") ?: div.selectFirst(".post-title"))?.text().orEmpty(), altTitle = null, rating = div.selectFirst("span.total_votes")?.ownText()?.toFloatOrNull()?.div(5f) ?: -1f, tags = summary?.selectFirst(".mg_genres")?.select("a")?.mapNotNullToSet { a -> @@ -551,7 +582,8 @@ internal abstract class MadaraParser( val doc = webClient.httpGet(fullUrl).parseHtml() val chapterProtector = doc.getElementById("chapter-protector-data") if (chapterProtector == null) { - val root = doc.body().selectFirstOrThrow(selectBodyPage) + val root = doc.body().selectFirst(selectBodyPage) + ?: throw ParseException("No image found, try to log in", fullUrl) return root.select(selectPage).map { div -> val img = div.selectFirstOrThrow("img") val url = img.src()?.toRelativeUrl(domain) ?: div.parseFailed("Image src not found") @@ -563,7 +595,15 @@ internal abstract class MadaraParser( ) } } else { - val chapterProtectorHtml = chapterProtector.html() + + val chapterProtectorHtml = chapterProtector.attr("src") + .takeIf { it.startsWith("data:text/javascript;base64,") } + ?.substringAfter("data:text/javascript;base64,") + ?.let { + Base64.getDecoder().decode(it).decodeToString() + } + ?: chapterProtector.html() + val password = chapterProtectorHtml.substringAfter("wpmangaprotectornonce='").substringBefore("';") val chapterData = JSONObject( chapterProtectorHtml.substringAfter("chapter_data='").substringBefore("';").replace("\\/", "/"), @@ -651,11 +691,6 @@ internal abstract class MadaraParser( } } - override fun onCreateConfig(keys: MutableCollection>) { - super.onCreateConfig(keys) - keys.add(userAgentKey) - } - // Parses dates in this form: // 21 hours ago private fun parseRelativeDate(date: String): Long { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Ero18x.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Ero18x.kt index 9a06fd7e8..7963ba781 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Ero18x.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Ero18x.kt @@ -3,15 +3,21 @@ package org.koitharu.kotatsu.parsers.site.madara.all import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import org.koitharu.kotatsu.parsers.util.* +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow import java.text.SimpleDateFormat -import java.util.Locale +import java.util.* @MangaSourceParser("ERO18X", "Ero18x", "", ContentType.HENTAI) internal class Ero18x(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ERO18X, "ero18x.com", 10) { + MadaraParser(context, MangaParserSource.ERO18X, "ero18x.com", 10) { override val datePattern = "MM/dd" override val sourceLocale: Locale = Locale.ENGLISH override val withoutAjax = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Manga18Fx.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Manga18Fx.kt index 9f066899d..757a6590f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Manga18Fx.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Manga18Fx.kt @@ -9,7 +9,7 @@ import java.util.* @MangaSourceParser("MANGA18FX", "Manga18Fx", "", ContentType.HENTAI) internal class Manga18Fx(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA18FX, "manga18fx.com") { + MadaraParser(context, MangaParserSource.MANGA18FX, "manga18fx.com") { override val sourceLocale: Locale = Locale.ENGLISH override val datePattern = "dd MMM yy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/MangaCrazy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/MangaCrazy.kt index e170dc753..fa31a8867 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/MangaCrazy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/MangaCrazy.kt @@ -3,12 +3,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import java.util.Locale +import java.util.* @MangaSourceParser("MANGACRAZY", "MangaCrazy", "", ContentType.HENTAI) internal class MangaCrazy(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGACRAZY, "mangacrazy.net") { + MadaraParser(context, MangaParserSource.MANGACRAZY, "mangacrazy.net") { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/MangaTop.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/MangaTop.kt index 14c74b928..f347a932e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/MangaTop.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/MangaTop.kt @@ -1,15 +1,17 @@ package org.koitharu.kotatsu.parsers.site.madara.all +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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import java.util.* +@Broken @MangaSourceParser("MANGATOP", "MangaTop", "", ContentType.HENTAI) internal class MangaTop(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGATOP, "mangatop.site") { + MadaraParser(context, MangaParserSource.MANGATOP, "mangatop.site") { override val datePattern = "d MMMM yyyy" override val sourceLocale: Locale = Locale.ENGLISH override val stylePage = "" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Manhwa18Cc.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Manhwa18Cc.kt index d784353f9..0994d0597 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Manhwa18Cc.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/Manhwa18Cc.kt @@ -5,12 +5,11 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* -import java.util.HashSet -import java.util.Locale +import java.util.* @MangaSourceParser("MANHWA18CC", "Manhwa18.cc", "", ContentType.HENTAI) internal class Manhwa18Cc(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWA18CC, "manhwa18.cc", 24) { + MadaraParser(context, MangaParserSource.MANHWA18CC, "manhwa18.cc", 24) { override val datePattern = "dd MMM yyyy" override val sourceLocale: Locale = Locale.ENGLISH override val listUrl = "webtoons/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/ManhwaRaw.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/ManhwaRaw.kt index 1ee299a8c..ee37c30cd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/ManhwaRaw.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/ManhwaRaw.kt @@ -6,7 +6,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull import org.koitharu.kotatsu.parsers.util.generateUid @@ -16,7 +16,7 @@ import java.text.SimpleDateFormat @MangaSourceParser("MANHWARAW", "ManhwaRaw", "", ContentType.HENTAI) internal class ManhwaRaw(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWARAW, "manhwa-raw.com", 10) { + MadaraParser(context, MangaParserSource.MANHWARAW, "manhwa-raw.com", 10) { override val datePattern = "MM/dd" override val withoutAjax = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/ManyToonClub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/ManyToonClub.kt index 43e73628e..acfd17df4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/ManyToonClub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/all/ManyToonClub.kt @@ -3,13 +3,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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import java.util.Locale +import java.util.* @MangaSourceParser("MANYTOON_CLUB", "ManyToon.club", "", ContentType.HENTAI) internal class ManyToonClub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANYTOON_CLUB, "manytoon.club") { + MadaraParser(context, MangaParserSource.MANYTOON_CLUB, "manytoon.club") { override val postReq = true override val listUrl = "manhwa-raw/" override val tagPrefix = "manhwa-raw-genre/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ArabToons.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ArabToons.kt index 616787187..2421dfca7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ArabToons.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ArabToons.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.ar 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ARABTOONS", "ArabToons", "ar", ContentType.HENTAI) internal class ArabToons(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ARABTOONS, "arabtoons.net") { + MadaraParser(context, MangaParserSource.ARABTOONS, "arabtoons.net") { override val datePattern = "dd-MM-yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Asq.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Asq.kt index 1c6986699..341880d11 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Asq.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Asq.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ASQORG", "3Asq", "ar") internal class Asq(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ASQORG, "3asq.org") { + MadaraParser(context, MangaParserSource.ASQORG, "3asq.org") { override val datePattern = "d MMMM، yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/AzoraMoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/AzoraMoon.kt index 531d372ea..f3cd19b90 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/AzoraMoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/AzoraMoon.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("AZORAMOON", "AzoraMoon", "ar") internal class AzoraMoon(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.AZORAMOON, "azoramoon.com", pageSize = 10) { + MadaraParser(context, MangaParserSource.AZORAMOON, "azoramoon.com", pageSize = 10) { override val tagPrefix = "series-genre/" override val listUrl = "series/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ComicArab.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ComicArab.kt index 20122a201..45fc18654 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ComicArab.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ComicArab.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("COMICARAB", "ComicArab", "ar") internal class ComicArab(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.COMICARAB, "comicarab.com", pageSize = 24) { + MadaraParser(context, MangaParserSource.COMICARAB, "comicarab.com", pageSize = 24) { override val datePattern = "d MMMM، yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/CrowScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/CrowScans.kt new file mode 100644 index 000000000..cb5a20534 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/CrowScans.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.ar + +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("CROWSCANS", "Hadess", "ar") +internal class CrowScans(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.CROWSCANS, "www.hadess.xyz") { + override val datePattern = "dd MMMM، yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/GateManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/GateManga.kt index cfc9a59c7..7dc2cd10c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/GateManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/GateManga.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("GATEMANGA", "GateManga", "ar") internal class GateManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.GATEMANGA, "gatemanga.com") { + MadaraParser(context, MangaParserSource.GATEMANGA, "gatemanga.com") { override val postReq = true override val datePattern = "d MMMM، yyyy" override val listUrl = "ar/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Gmanga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Gmanga.kt index b9a00eeb1..90da2ec89 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Gmanga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Gmanga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("GMANGA", "Gmanga", "ar") internal class Gmanga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.GMANGA, "gmanga.site") + MadaraParser(context, MangaParserSource.GMANGA, "gmanga.site") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekManga.kt index af0368f63..5fa44186c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGALEK", "LekManga", "ar") -internal class MangaLek(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGALEK, "lekmanga.net", pageSize = 10) +internal class LekManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGALEK, "lekmanga.net", pageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekMangaCom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekMangaCom.kt index 38a10da0a..a6b65aac1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekMangaCom.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekMangaCom.kt @@ -4,19 +4,14 @@ import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull -import org.koitharu.kotatsu.parsers.util.domain -import org.koitharu.kotatsu.parsers.util.generateUid -import org.koitharu.kotatsu.parsers.util.mapChapters -import org.koitharu.kotatsu.parsers.util.parseFailed -import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat @MangaSourceParser("LEKMANGACOM", "LekMangaCom", "ar") internal class LekMangaCom(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LEKMANGACOM, "lekmanga.com") { + MadaraParser(context, MangaParserSource.LEKMANGACOM, "lekmanga.com") { override val listUrl = "lekmanga/" override val postReq = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekMangaOrg.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekMangaOrg.kt index 445212bab..f2f0c0d77 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekMangaOrg.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LekMangaOrg.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LEKMANGAORG", "LekManga.org", "ar") internal class LekMangaOrg(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LEKMANGAORG, "lekmanga.org", pageSize = 10) { + MadaraParser(context, MangaParserSource.LEKMANGAORG, "lekmanga.org", pageSize = 10) { override val listUrl = "readcomics/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LikeMangaNet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LikeMangaNet.kt index 85d9c1e4f..1c83869c4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LikeMangaNet.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/LikeMangaNet.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LIKEMANGANET", "Like-Manga.net", "ar") -internal class MangaLikeNet(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LIKEMANGANET, "like-manga.net", pageSize = 10) +internal class LikeMangaNet(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.LIKEMANGANET, "like-manga.net", pageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLeko.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLeko.kt index 92962e892..b082ab817 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLeko.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLeko.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGALEKO", "Manga-Leko.org", "ar") internal class MangaLeko(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGALEKO, "manga-leko.org", pageSize = 10) + MadaraParser(context, MangaParserSource.MANGALEKO, "manga-leko.org", pageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLinkNet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLinkNet.kt index 7fff70af8..a87f303e7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLinkNet.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLinkNet.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGALINKNET", "Link-Manga.com", "ar") internal class MangaLinkNet(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGALINKNET, "link-manga.com", pageSize = 10) + MadaraParser(context, MangaParserSource.MANGALINKNET, "link-manga.com", pageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLionz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLionz.kt index d0986c9b1..9d5fe4692 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLionz.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaLionz.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGALIONZ", "Manga-Lionz", "ar") internal class MangaLionz(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGALIONZ, "manga-lionz.com", pageSize = 10) + MadaraParser(context, MangaParserSource.MANGALIONZ, "manga-lionz.com", pageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaPeak.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaPeak.kt new file mode 100644 index 000000000..3511435b3 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaPeak.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.ar + +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("MANGAPEAK", "MangaPeak", "ar") +internal class MangaPeak(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGAPEAK, "mangapeak.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaRose.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaRose.kt index 97ab9bcdf..d644ee71f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaRose.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaRose.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAROSE", "MangaRose", "ar") internal class MangaRose(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAROSE, "mangarose.net", pageSize = 20) + MadaraParser(context, MangaParserSource.MANGAROSE, "mangarose.net", pageSize = 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaStarz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaStarz.kt index e46dae854..aaaeb5aeb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaStarz.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaStarz.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGASTARZ", "Manga-Starz", "ar") internal class MangaStarz(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGASTARZ, "manga-starz.com", pageSize = 10) { + MadaraParser(context, MangaParserSource.MANGASTARZ, "manga-starz.com", pageSize = 10) { override val datePattern = "d MMMM، yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaTime.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaTime.kt index a86074f51..828498648 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaTime.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/MangaTime.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGATIME", "MangaTime", "ar") internal class MangaTime(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGATIME, "mangatime.us") { + MadaraParser(context, MangaParserSource.MANGATIME, "mangatime.us") { override val datePattern = "d MMMM، yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Mangarbic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Mangarbic.kt index a3b0f0bb1..3c19c072e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Mangarbic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Mangarbic.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGARBIC", "MangaArabic", "ar") internal class Mangarbic(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGARBIC, "mangarabic.com") { + MadaraParser(context, MangaParserSource.MANGARBIC, "mangarabic.com") { override val postReq = true override val datePattern = "yyyy/MM/dd" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Mangaspark.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Mangaspark.kt index 0cfcac115..afabfff80 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Mangaspark.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Mangaspark.kt @@ -1,13 +1,15 @@ package org.koitharu.kotatsu.parsers.site.madara.ar +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGASPARK", "Manga-Spark", "ar") internal class Mangaspark(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGASPARK, "manga-spark.com", pageSize = 10) { + MadaraParser(context, MangaParserSource.MANGASPARK, "manga-spark.com", pageSize = 10) { override val postReq = true override val datePattern = "d MMMM، yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Manhatic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Manhatic.kt index 6ec8ab742..bf80f8615 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Manhatic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Manhatic.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.ar 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import java.util.* @MangaSourceParser("MANHATIC", "Manhatic", "ar", ContentType.HENTAI) internal class Manhatic(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHATIC, "manhatic.com") { + MadaraParser(context, MangaParserSource.MANHATIC, "manhatic.com") { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/NijiTranslations.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/NijiTranslations.kt index 3f4e9af13..dbd451b39 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/NijiTranslations.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/NijiTranslations.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NIJITRANSLATIONS", "Niji Translations", "ar") internal class NijiTranslations(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NIJITRANSLATIONS, "niji-translations.com") { + MadaraParser(context, MangaParserSource.NIJITRANSLATIONS, "niji-translations.com") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Novelstown.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Novelstown.kt index 633875d3a..73e6af7ff 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Novelstown.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Novelstown.kt @@ -1,12 +1,14 @@ package org.koitharu.kotatsu.parsers.site.madara.ar +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("NOVELSTOWN", "NovelsTown", "ar") internal class Novelstown(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NOVELSTOWN, "novelstown.com") { + MadaraParser(context, MangaParserSource.NOVELSTOWN, "novelstown.com") { override val datePattern = "d MMMM، yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Olaoe.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Olaoe.kt index f8ddc69e0..e37030545 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Olaoe.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/Olaoe.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("OLAOE", "Olaoe", "ar") internal class Olaoe(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.OLAOE, "olaoe.cyou") { + MadaraParser(context, MangaParserSource.OLAOE, "olaoe.cyou") { override val datePattern = "dd-MM-yyyy" override val tagPrefix = "/شوجو" override val listUrl = "works/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/RocksManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/RocksManga.kt index c8636810c..ec7eba39b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/RocksManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/RocksManga.kt @@ -1,10 +1,49 @@ package org.koitharu.kotatsu.parsers.site.madara.ar +import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.parseFailed +import java.text.SimpleDateFormat @MangaSourceParser("ROCKSMANGA", "RocksManga", "ar") internal class RocksManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ROCKSMANGA, "rocks-manga.com") + MadaraParser(context, MangaParserSource.ROCKSMANGA, "rocks-manga.com") { + override val selectChapter = "ul#chapter-list li.chapter-item" + override val datePattern = "d MMMM yyyy" + override val selectDate = ".ch-post-time" + override val selectBodyPage = "div.reading-content" + override val selectPage = "img" + override val selectDesc = ".story" + + override suspend fun loadChapters(mangaUrl: String, document: Document): List { + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + return document.select(selectChapter).mapChapters(reversed = true) { i, li -> + val a = li.selectFirst("a") + val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") + val link = href + stylePage + val dateText = li.selectFirst("a.c-new-tag")?.attr("title") ?: li.selectFirst(selectDate)?.text() + val name = a.selectFirst(".ch-title")?.text() ?: a.ownText() + MangaChapter( + id = generateUid(href), + url = link, + name = name, + number = i + 1f, + volume = 0, + branch = null, + uploadDate = parseChapterDate( + dateFormat, + dateText, + ), + scanlator = null, + source = source, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ShadowxManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ShadowxManga.kt index 70f7a747e..41ae48330 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ShadowxManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/ShadowxManga.kt @@ -1,12 +1,14 @@ package org.koitharu.kotatsu.parsers.site.madara.ar +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("SHADOWXMANGA", "ShadowXManga", "ar") internal class ShadowxManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SHADOWXMANGA, "www.shadowxmanga.com") { + MadaraParser(context, MangaParserSource.SHADOWXMANGA, "www.shadowxmanga.com") { override val datePattern = "yyyy/MM/dd" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/WebtoonEmpire.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/WebtoonEmpire.kt index 1a2e61cc8..be0696cc2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/WebtoonEmpire.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ar/WebtoonEmpire.kt @@ -1,13 +1,15 @@ package org.koitharu.kotatsu.parsers.site.madara.ar +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("WEBTOONEMPIRE", "WebtoonEmpire", "ar") internal class WebtoonEmpire(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.WEBTOONEMPIRE, "webtoonsempireron.com", pageSize = 10) { + MadaraParser(context, MangaParserSource.WEBTOONEMPIRE, "webtoonsempireron.com", pageSize = 10) { override val listUrl = "webtoon/" override val datePattern = "d MMMM، yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/de/MangaLesen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/de/MangaLesen.kt index c740cf073..efdfc1073 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/de/MangaLesen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/de/MangaLesen.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.madara.de +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGALESEN", "MangaLesen", "de") internal class MangaLesen(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGALESEN, "mangalesen.net") + MadaraParser(context, MangaParserSource.MANGALESEN, "mangalesen.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AdultWebtoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AdultWebtoon.kt index 4e88df6ce..a31197c9b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AdultWebtoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AdultWebtoon.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ADULT_WEBTOON", "AdultWebtoon", "en", ContentType.HENTAI) internal class AdultWebtoon(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ADULT_WEBTOON, "adultwebtoon.com") { + MadaraParser(context, MangaParserSource.ADULT_WEBTOON, "adultwebtoon.com") { override val tagPrefix = "adult-webtoon-genre/" override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AllPornComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AllPornComic.kt index 7da847e13..778cf6443 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AllPornComic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AllPornComic.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ALLPORN_COMIC", "AllPornComic", "en", ContentType.HENTAI) internal class AllPornComic(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ALLPORN_COMIC, "allporncomic.com", pageSize = 24) { + MadaraParser(context, MangaParserSource.ALLPORN_COMIC, "allporncomic.com", pageSize = 24) { override val tagPrefix = "porncomic-genre/" override val datePattern = "MMMM dd, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AnshScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AnshScans.kt index fb7f57d2d..6327ae361 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AnshScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AnshScans.kt @@ -3,13 +3,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @Broken @MangaSourceParser("ANSHSCANS", "AnshScans", "en") internal class AnshScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ANSHSCANS, "anshscans.org", 10) { + MadaraParser(context, MangaParserSource.ANSHSCANS, "anshscans.org", 10) { override val tagPrefix = "genre/" override val datePattern = "MMMM dd, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AquaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AquaManga.kt index c3cc0a3aa..288e23c3b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AquaManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AquaManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("AQUAMANGA", "AquaManga", "en") internal class AquaManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.AQUAMANGA, "aquareader.net", 20) + MadaraParser(context, MangaParserSource.AQUAMANGA, "aquareader.net", 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ArcaneScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ArcaneScans.kt index b99e4dc6a..5223d700f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ArcaneScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ArcaneScans.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ARCANESCANS", "ArcaneScans", "en") internal class ArcaneScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ARCANESCANS, "arcanescans.com", 10) + MadaraParser(context, MangaParserSource.ARCANESCANS, "arcanescans.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AryaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AryaScans.kt new file mode 100644 index 000000000..1012ee2c7 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AryaScans.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ARYASCANS", "AryaScans", "en") +internal class AryaScans(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ARYASCANS, "aryascans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansGg.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansGg.kt new file mode 100644 index 000000000..a8b1906da --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansGg.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ASURASCANSGG", "AsuraScansGg", "en") +internal class AsuraScansGg(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ASURASCANSGG, "asurascansgg.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansUs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansUs.kt index c0b7016bd..12e2def88 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansUs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/AsuraScansUs.kt @@ -2,9 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ASURASCANS_US", "AsuraScans.us", "en") internal class AsuraScansUs(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ASURASCANS_US, "asurascans.us") + MadaraParser(context, MangaParserSource.ASURASCANS_US, "asurascans.us") { + override val listUrl = "comics/" + override val tagPrefix = "read-en-us-genre/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Babelwuxia.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Babelwuxia.kt index f6551ba36..d7704f97b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Babelwuxia.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Babelwuxia.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("BABELWUXIA", "Babelwuxia", "en") internal class Babelwuxia(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BABELWUXIA, "babelwuxia.com") + MadaraParser(context, MangaParserSource.BABELWUXIA, "babelwuxia.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BananaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BananaManga.kt index ca24cf070..38c68ffb4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BananaManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BananaManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("BANANA_MANGA", "BananaManga", "en") internal class BananaManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BANANA_MANGA, "bananamanga.net", 20) + MadaraParser(context, MangaParserSource.BANANA_MANGA, "bananamanga.net", 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BestManhuaCom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BestManhuaCom.kt index 873935df5..e07045bc1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BestManhuaCom.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BestManhuaCom.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("BESTMANHUACOM", "BestManhua.com", "en") internal class BestManhuaCom(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BESTMANHUACOM, "bestmanhua.com", 10) { + MadaraParser(context, MangaParserSource.BESTMANHUACOM, "bestmanhua.com", 10) { override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BibiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BibiManga.kt index d59263976..c4bd2ae55 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BibiManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BibiManga.kt @@ -1,12 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("BIBIMANGA", "BibiManga", "en", ContentType.HENTAI) -internal class BibiManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.BIBIMANGA, "bibimanga.com") { +internal class BibiManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.BIBIMANGA, "bibimanga.com") { override val datePattern = "MMMM dd, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BoysLove.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BoysLove.kt index b0cdb999a..3b8a0a581 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BoysLove.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/BoysLove.kt @@ -1,14 +1,16 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("BOYS_LOVE", "BoysLove", "en", ContentType.HENTAI) internal class BoysLove(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BOYS_LOVE, "boyslove.me", 20) { + MadaraParser(context, MangaParserSource.BOYS_LOVE, "boyslove.me", 20) { override val tagPrefix = "boyslove-genre/" override val listUrl = "boyslove/" override val postReq = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt new file mode 100644 index 000000000..07dd077cc --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoComic.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("COCOMIC", "CoComic", "en", ContentType.HENTAI) +internal class CoComic(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.COCOMIC, "cocomic.co") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoffeeManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoffeeManga.kt index 2376762a2..40afb5b03 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoffeeManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CoffeeManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("COFFEE_MANGA", "CoffeeManga", "en") internal class CoffeeManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.COFFEE_MANGA, "coffeemanga.io") + MadaraParser(context, MangaParserSource.COFFEE_MANGA, "coffeemanga.io") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ColoredManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ColoredManga.kt index 873a120c9..88455c204 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ColoredManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ColoredManga.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("COLORED_MANGA", "ColoredManga", "en") internal class ColoredManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.COLORED_MANGA, "coloredmanga.com") { + MadaraParser(context, MangaParserSource.COLORED_MANGA, "coloredmanga.net") { override val datePattern = "dd-MMM" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ComicsValley.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ComicsValley.kt index 974f08d2b..50707f55d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ComicsValley.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ComicsValley.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("COMICSVALLEY", "ComicsValley", "en", ContentType.HENTAI) internal class ComicsValley(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.COMICSVALLEY, "comicsvalley.com") { + MadaraParser(context, MangaParserSource.COMICSVALLEY, "comicsvalley.com") { override val listUrl = "adult-comics/" override val tagPrefix = "comic-genre/" override val datePattern = "dd/MM/yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Comiz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Comiz.kt index 906979b78..a5ce43543 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Comiz.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Comiz.kt @@ -3,8 +3,8 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("COMIZ", "Comiz", "en", ContentType.HENTAI) -internal class Comiz(context: MangaLoaderContext) : MadaraParser(context, MangaSource.COMIZ, "v2.comiz.net", 10) +internal class Comiz(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.COMIZ, "v2.comiz.net", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CreepyScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CreepyScans.kt index 403ad7627..675c771c6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CreepyScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/CreepyScans.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("CREEPYSCANS", "CreepyScans", "en") internal class CreepyScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.CREEPYSCANS, "creepyscans.com") { + MadaraParser(context, MangaParserSource.CREEPYSCANS, "creepyscans.com") { override val stylePage = "" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScan.kt index bb9520084..fe30391da 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScan.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("DARKSCAN", "Dark-Scan", "en") internal class DarkScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.DARKSCAN, "dark-scan.com") + MadaraParser(context, MangaParserSource.DARKSCAN, "dark-scan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScans.kt index 3d860d180..c988c13e0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DarkScans.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("DARK_SCANS", "DarkScans", "en") internal class DarkScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.DARK_SCANS, "darkscans.com", 18) { + MadaraParser(context, MangaParserSource.DARK_SCANS, "darkscans.net", 18) { override val listUrl = "mangas/" override val tagPrefix = "mangas-genre/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DecadenceScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DecadenceScans.kt index 764bdc623..225d4c1a9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DecadenceScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DecadenceScans.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("DECADENCESCANS", "DecadenceScans", "en", ContentType.HENTAI) internal class DecadenceScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.DECADENCESCANS, "reader.decadencescans.com", 10) + MadaraParser(context, MangaParserSource.DECADENCESCANS, "reader.decadencescans.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DragonTea.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DragonTea.kt index bef578109..cb8ecd8c6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DragonTea.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DragonTea.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("DRAGONTEA", "DragonTea", "en") internal class DragonTea(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.DRAGONTEA, "dragontea.ink") { + MadaraParser(context, MangaParserSource.DRAGONTEA, "dragontea.ink") { override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DuckManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DuckManga.kt index 9839720d3..565b36a03 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DuckManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/DuckManga.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("DUCKMANGA", "DuckManga", "en", ContentType.HENTAI) internal class DuckManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.DUCKMANGA, "duckmanga.com", 20) + MadaraParser(context, MangaParserSource.DUCKMANGA, "duckmanga.com", 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/EliteManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/EliteManga.kt index df35f85d7..5c919e83a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/EliteManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/EliteManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ELITEMANGA", "EliteManga", "en") internal class EliteManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ELITEMANGA, "www.redmanga.org") + MadaraParser(context, MangaParserSource.ELITEMANGA, "www.redmanga.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FactManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FactManga.kt index 1bddea493..2a12a92f7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FactManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FactManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("FACTMANGA", "FactManga", "en") internal class FactManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.FACTMANGA, "factmanga.com") + MadaraParser(context, MangaParserSource.FACTMANGA, "factmanga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FireScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FireScans.kt index 38b5bc13b..168e4b51a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FireScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FireScans.kt @@ -10,7 +10,7 @@ import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("FIRESCANS", "FireScans", "en") internal class FireScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.FIRESCANS, "firescans.xyz", 10) { + MadaraParser(context, MangaParserSource.FIRESCANS, "firescans.xyz", 10) { override fun parseMangaList(doc: Document): List { return doc.select("div.row.c-tabs-item__content").ifEmpty { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeComicOnline.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeComicOnline.kt index efcc96dcb..bb4b127d0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeComicOnline.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeComicOnline.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("FREECOMICONLINE", "FreeComicOnline", "en", ContentType.HENTAI) internal class FreeComicOnline(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.FREECOMICONLINE, "freecomiconline.me") { + MadaraParser(context, MangaParserSource.FREECOMICONLINE, "freecomiconline.me") { override val postReq = true override val listUrl = "comic/" override val tagPrefix = "comic-genre/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeManga.kt index bb887174b..22888edb5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeManga.kt @@ -2,10 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("FREEMANGA", "FreeManga", "en") -internal class FreeManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.FREEMANGA, "freemanga.me") { +internal class FreeManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.FREEMANGA, "freemanga.me") { override val datePattern = "MMMM dd, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeMangaTop.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeMangaTop.kt index c103b195d..4141ff2ab 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeMangaTop.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeMangaTop.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("FREEMANGATOP", "FreeMangaTop", "en") internal class FreeMangaTop(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.FREEMANGATOP, "freemangatop.com") { + MadaraParser(context, MangaParserSource.FREEMANGATOP, "freemangatop.com") { override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeWebtoonCoins.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeWebtoonCoins.kt index 704795cb1..2d5c18edf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeWebtoonCoins.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/FreeWebtoonCoins.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("FREEWEBTOONCOINS", "FreeWebtoonCoins", "en") internal class FreeWebtoonCoins(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.FREEWEBTOONCOINS, "freewebtooncoins.com") { + MadaraParser(context, MangaParserSource.FREEWEBTOONCOINS, "freewebtooncoins.com") { override val tagPrefix = "webtoon-genre/" override val listUrl = "webtoon/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GdScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GdScans.kt index 2ed02980a..6fb98f0b0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GdScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GdScans.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("GDSCANS", "GdScans", "en") internal class GdScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.GDSCANS, "gdscans.com", 10) { + MadaraParser(context, MangaParserSource.GDSCANS, "gdscans.com", 10) { override val tagPrefix = "webtoon-genre/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GedeComix.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GedeComix.kt new file mode 100644 index 000000000..04865b7e8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GedeComix.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("GEDECOMIX", "GedeComix", "en", ContentType.HENTAI) +internal class GedeComix(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.GEDECOMIX, "gedecomix.com", 18) { + override val tagPrefix = "comics-tag/" + override val listUrl = "porncomic/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GoodGirls.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GoodGirls.kt index 381ccb65c..a2536dc2f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GoodGirls.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GoodGirls.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("GOODGIRLS", "GoodGirls", "en") internal class GoodGirls(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.GOODGIRLS, "goodgirls.moe", 10) { + MadaraParser(context, MangaParserSource.GOODGIRLS, "goodgirls.moe", 10) { override val selectDesc = "div.post-content_item:contains(Synopsis) div.summary-content" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GourmetScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GourmetScans.kt index 8d5a2ef17..8b3a44888 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GourmetScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/GourmetScans.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("GOURMETSCANS", "GourmetScans", "en") internal class GourmetScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.GOURMETSCANS, "gourmetsupremacy.com") { + MadaraParser(context, MangaParserSource.GOURMETSCANS, "gourmetsupremacy.com") { override val listUrl = "project/" override val tagPrefix = "genre/" override val stylePage = "" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Grabber.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Grabber.kt index d416da6a2..00c8d071b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Grabber.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Grabber.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("GRABBER", "Grabber", "en", ContentType.COMICS) internal class Grabber(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.GRABBER, "grabber.zone", 20) { + MadaraParser(context, MangaParserSource.GRABBER, "grabber.zone", 20) { override val tagPrefix = "type/" override val listUrl = "comics/" override val datePattern = "dd.MM.yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HariManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HariManga.kt index 5eeb41753..5e8bff776 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HariManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HariManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HARIMANGA", "HariManga", "en") internal class HariManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HARIMANGA, "harimanga.com", pageSize = 10) + MadaraParser(context, MangaParserSource.HARIMANGA, "harimanga.com", pageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentai3z.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentai3z.kt index 280a74ec5..a6e4e7e63 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentai3z.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentai3z.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HENTAI3Z", "Hentai3z", "en", ContentType.HENTAI) internal class Hentai3z(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HENTAI3Z, "manga18h.xyz", pageSize = 20) { + MadaraParser(context, MangaParserSource.HENTAI3Z, "manga18h.xyz", pageSize = 20) { override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentai4Free.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentai4Free.kt index 154359f77..ef709b98b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentai4Free.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentai4Free.kt @@ -9,7 +9,7 @@ import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("HENTAI_4FREE", "Hentai4Free", "en", ContentType.HENTAI) internal class Hentai4Free(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HENTAI_4FREE, "hentai4free.net", pageSize = 24) { + MadaraParser(context, MangaParserSource.HENTAI_4FREE, "hentai4free.net", pageSize = 24) { override val tagPrefix = "hentai-tag/" override val listUrl = "" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaiManga.kt index 08c155f91..6f40805da 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaiManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaiManga.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HENTAIMANGA", "HentaiManga", "en", ContentType.HENTAI) internal class HentaiManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HENTAIMANGA, "hentaimanga.me", 36) { + MadaraParser(context, MangaParserSource.HENTAIMANGA, "hentaimanga.me", 36) { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaiWebtoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaiWebtoon.kt index cc5997313..770b42876 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaiWebtoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaiWebtoon.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HENTAIWEBTOON", "HentaiWebtoon", "en", ContentType.HENTAI) internal class HentaiWebtoon(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HENTAIWEBTOON, "hentaiwebtoon.com") { + MadaraParser(context, MangaParserSource.HENTAIWEBTOON, "hentaiwebtoon.com") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaixComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaixComic.kt index bd4c2877e..6d38b9e40 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaixComic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaixComic.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HENTAIXCOMIC", "Hentai x Comic", "en", ContentType.HENTAI) internal class HentaixComic(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HENTAIXCOMIC, "hentaixcomic.com", 16) { + MadaraParser(context, MangaParserSource.HENTAIXCOMIC, "hentaixcomic.com", 16) { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaixYuri.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaixYuri.kt index 2968cd7b7..b9d8b0d76 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaixYuri.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HentaixYuri.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("HENTAIXYURI", "Hentai x Yuri", "en", ContentType.HENTAI) +@MangaSourceParser("HENTAIXYURI", "HentaiXYuri", "en", ContentType.HENTAI) internal class HentaixYuri(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HENTAIXYURI, "hentaixyuri.com", 16) { + MadaraParser(context, MangaParserSource.HENTAIXYURI, "hentaixyuri.com", 16) { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentaixdickgirl.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentaixdickgirl.kt index 3676ab24c..7ff70f2e4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentaixdickgirl.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Hentaixdickgirl.kt @@ -6,14 +6,14 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat @MangaSourceParser("HENTAIXDICKGIRL", "Hentai x Dickgirl", "en", ContentType.HENTAI) internal class Hentaixdickgirl(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HENTAIXDICKGIRL, "hentaixdickgirl.com", 16) { + MadaraParser(context, MangaParserSource.HENTAIXDICKGIRL, "hentaixdickgirl.com", 16) { override val postReq = true override suspend fun getChapters(manga: Manga, doc: Document): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HiperDex.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HiperDex.kt index bd5b7a47e..8f3104359 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HiperDex.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HiperDex.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("HIPERDEX", "HiperDex", "en", ContentType.HENTAI) internal class HiperDex(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HIPERDEX, "hiperdex.com", 36) + MadaraParser(context, MangaParserSource.HIPERDEX, "hiperdex.com", 36) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HunLight.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HunLight.kt new file mode 100644 index 000000000..0a5902868 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HunLight.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("HUNLIGHT", "HunLight", "en") +internal class HunLight(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.HUNLIGHT, "hunlight.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HuntersScanEn.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HuntersScanEn.kt index cd2fd3227..b83188820 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HuntersScanEn.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/HuntersScanEn.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HUNTERSSCANEN", "EnHuntersScan", "en") internal class HuntersScanEn(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HUNTERSSCANEN, "en.huntersscan.xyz") { + MadaraParser(context, MangaParserSource.HUNTERSSCANEN, "en.huntersscan.xyz") { override val withoutAjax = true override val datePattern = "MM/dd/yyyy" override val tagPrefix = "series-genre/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ImmortalUpdates.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ImmortalUpdates.kt index 668d94cb5..b78962c54 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ImmortalUpdates.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ImmortalUpdates.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("IMMORTALUPDATES", "Immortal Updates", "en") internal class ImmortalUpdates(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.IMMORTALUPDATES, "immortalupdates.com") { + MadaraParser(context, MangaParserSource.IMMORTALUPDATES, "immortalupdates.com") { override val listUrl = "mangas/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/InstaManhwa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/InstaManhwa.kt index 8ad77e572..21544a052 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/InstaManhwa.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/InstaManhwa.kt @@ -7,11 +7,11 @@ import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat -import java.util.EnumSet +import java.util.* @MangaSourceParser("INSTAMANHWA", "InstaManhwa", "en", ContentType.HENTAI) internal class InstaManhwa(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.INSTAMANHWA, "www.instamanhwa.com", 15) { + MadaraParser(context, MangaParserSource.INSTAMANHWA, "www.instamanhwa.com", 15) { override val tagPrefix = "genre/" override val listUrl = "latest/" override val postReq = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScan.kt index 3c54c490a..02201592b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScan.kt @@ -11,7 +11,7 @@ import java.util.* @MangaSourceParser("ISEKAISCAN", "IsekaiScan.top", "en") internal class IsekaiScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ISEKAISCAN, "isekaiscan.top", 16) { + MadaraParser(context, MangaParserSource.ISEKAISCAN, "isekaiscan.top", 16) { override val tagPrefix = "mangas/" override val listUrl = "latest-manga/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScanEuParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScanEuParser.kt index faa031175..0c9e1d935 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScanEuParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/IsekaiScanEuParser.kt @@ -6,9 +6,9 @@ import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* -@MangaSourceParser("ISEKAISCAN_EU", "IsekaiScan.to", "en") +@MangaSourceParser("ISEKAISCAN_EU", "ParagonScans", "en") internal class IsekaiScanEuParser(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ISEKAISCAN_EU, "paragonscans.com") { + MadaraParser(context, MangaParserSource.ISEKAISCAN_EU, "paragonscans.com") { override val datePattern = "MM/dd/yyyy" override val withoutAjax = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Itsyourightmanhua.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Itsyourightmanhua.kt index f94715f17..98a2fd43e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Itsyourightmanhua.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Itsyourightmanhua.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ITSYOURIGHTMANHUA", "ItsYouRightManhua", "en") internal class Itsyourightmanhua(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ITSYOURIGHTMANHUA, "itsyourightmanhua.com", 10) + MadaraParser(context, MangaParserSource.ITSYOURIGHTMANHUA, "itsyourightmanhua.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/JiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/JiManga.kt index fe316e425..91a065b5a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/JiManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/JiManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("JIMANGA", "S2Manga.io", "en") internal class JiManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.JIMANGA, "s2manga.io") + MadaraParser(context, MangaParserSource.JIMANGA, "s2manga.io") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KissManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KissManga.kt index 9e4112f48..a1aa18789 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KissManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KissManga.kt @@ -2,11 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("KISSMANGA", "KissManga", "en") -internal class KissManga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.KISSMANGA, "kissmanga.in") { +internal class KissManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.KISSMANGA, "kissmanga.in") { override val datePattern = "MMMM dd, yyyy" override val listUrl = "mangalist/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KsGroupScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KsGroupScans.kt index 63ee2dd64..4e414009e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KsGroupScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KsGroupScans.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("KSGROUPSCANS", "KsGroupScans", "en") internal class KsGroupScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.KSGROUPSCANS, "ksgroupscans.com") + MadaraParser(context, MangaParserSource.KSGROUPSCANS, "ksgroupscans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KumaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KumaScans.kt index 68209c7f1..82eb204bf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KumaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KumaScans.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("KUMASCANS", "Retsu", "en") internal class KumaScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.KUMASCANS, "retsu.org") { + MadaraParser(context, MangaParserSource.KUMASCANS, "retsu.org") { override val tagPrefix = "genre/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KunManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KunManga.kt index 6b993c356..dc722c45a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KunManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/KunManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("KUNMANGA", "KunManga", "en") internal class KunManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.KUNMANGA, "kunmanga.com", 10) + MadaraParser(context, MangaParserSource.KUNMANGA, "kunmanga.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LeviatanScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LeviatanScans.kt index fa34b9fde..f6ab03ff3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LeviatanScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LeviatanScans.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LEVIATANSCANS", "LsComic", "en") internal class LeviatanScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LEVIATANSCANS, "lscomic.com", 10) + MadaraParser(context, MangaParserSource.LEVIATANSCANS, "lscomic.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LhTranslation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LhTranslation.kt index 202b61440..49c7c2925 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LhTranslation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LhTranslation.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LHTRANSLATION", "LhTranslation", "en") internal class LhTranslation(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LHTRANSLATION, "lhtranslation.net") + MadaraParser(context, MangaParserSource.LHTRANSLATION, "lhtranslation.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LilyManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LilyManga.kt index 793211c5c..4b74804a9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LilyManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LilyManga.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LILYMANGA", "LilyManga", "en", ContentType.HENTAI) internal class LilyManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LILYMANGA, "lilymanga.net") { + MadaraParser(context, MangaParserSource.LILYMANGA, "lilymanga.net") { override val tagPrefix = "ys-genre/" override val listUrl = "ys/" override val datePattern = "yyyy-MM-dd" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LoliconMobi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LoliconMobi.kt index 57c373d4f..8ec123067 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LoliconMobi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LoliconMobi.kt @@ -1,14 +1,16 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("LOLICONMOBI", "LoliconMobi", "en", ContentType.HENTAI) internal class LoliconMobi(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LOLICONMOBI, "lolicon.mobi") { + MadaraParser(context, MangaParserSource.LOLICONMOBI, "lolicon.mobi") { override val postReq = true override val tagPrefix = "lolicon-genre/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuffyManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuffyManga.kt index ae8fdd93a..724524563 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuffyManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuffyManga.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("LUFFYMANGA", "LuffyManga", "en") internal class LuffyManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LUFFYMANGA, "luffymanga.com", 10) + MadaraParser(context, MangaParserSource.LUFFYMANGA, "luffymanga.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuxManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuxManga.kt index 1c3a81554..800344f74 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuxManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/LuxManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LUXMANGA", "LuxManga", "en") internal class LuxManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LUXMANGA, "luxmanga.net") + MadaraParser(context, MangaParserSource.LUXMANGA, "luxmanga.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga1001.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga1001.kt index d09fd39cf..07c0d0990 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga1001.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga1001.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGA1001", "Manga1001", "en") internal class Manga1001(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA1001, "manga-1001.com", 10) + MadaraParser(context, MangaParserSource.MANGA1001, "manga-1001.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18Xyz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18Xyz.kt index 1ced914c2..4e9c97c7b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18Xyz.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18Xyz.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGA18XYZ", "Manga18.xyz", "en", ContentType.HENTAI) internal class Manga18Xyz(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA18XYZ, "manga18.xyz", 36) + MadaraParser(context, MangaParserSource.MANGA18XYZ, "manga18.xyz", 36) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18h.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18h.kt index fdcec31e5..b519596f9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18h.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18h.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGA18H", "Manga18h", "en", ContentType.HENTAI) internal class Manga18h(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA18H, "manga18h.xyz", 20) + MadaraParser(context, MangaParserSource.MANGA18H, "manga18h.xyz", 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18x.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18x.kt index 676f87271..fc4a23611 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18x.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga18x.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGA18X", "Manga18x", "en", ContentType.HENTAI) internal class Manga18x(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA18X, "manga18x.net", 24) + MadaraParser(context, MangaParserSource.MANGA18X, "manga18x.net", 24) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga1k.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga1k.kt index bf1edc592..8f96c34d2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga1k.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga1k.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGA1K", "Manga1k", "en", ContentType.HENTAI) internal class Manga1k(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA1K, "manga1k.com", 20) { + MadaraParser(context, MangaParserSource.MANGA1K, "manga1k.com", 20) { override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga1st.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga1st.kt index fae05d379..573844e28 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga1st.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga1st.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGA1ST", "Manga1st", "en") internal class Manga1st(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA1ST, "manga1st.online") { + MadaraParser(context, MangaParserSource.MANGA1ST, "manga1st.online") { override val datePattern = "d MMMM، yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga68.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga68.kt index 0e9b75acd..d2314a725 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga68.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manga68.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGA68", "Manga68", "en") internal class Manga68(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA68, "manga68.com") { + MadaraParser(context, MangaParserSource.MANGA68, "manga68.com") { override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaAction.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaAction.kt index 4dbaab623..5c2aabeef 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaAction.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaAction.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGAACTION", "MangaAction", "en") internal class MangaAction(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAACTION, "mangaaction.com") + MadaraParser(context, MangaParserSource.MANGAACTION, "mangaaction.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaBee.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaBee.kt index 1286488da..b6b897952 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaBee.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaBee.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGABEE", "MangaBee", "en", ContentType.HENTAI) internal class MangaBee(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGABEE, "mangabee.net") { + MadaraParser(context, MangaParserSource.MANGABEE, "mangabee.net") { override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaBob.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaBob.kt index b8c80b299..398f79285 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaBob.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaBob.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGABOB", "MangaBob", "en") internal class MangaBob(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGABOB, "mangabob.com") { + MadaraParser(context, MangaParserSource.MANGABOB, "mangabob.com") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaCultivator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaCultivator.kt index ee2a0b33e..891494404 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaCultivator.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaCultivator.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGACULTIVATOR", "MangaCultivator", "en") internal class MangaCultivator(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGACULTIVATOR, "mangacultivator.com", 10) + MadaraParser(context, MangaParserSource.MANGACULTIVATOR, "mangacultivator.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDass.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDass.kt index 443c3f0ca..c11d0530b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDass.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDass.kt @@ -12,7 +12,7 @@ import java.text.SimpleDateFormat @MangaSourceParser("MANGADASS", "MangaDass", "en", ContentType.HENTAI) internal class MangaDass(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGADASS, "mangadass.com", 20) { + MadaraParser(context, MangaParserSource.MANGADASS, "mangadass.com", 20) { override val datePattern = "dd MMM yyyy" override val withoutAjax = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDistrict.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDistrict.kt index 36a2e9c36..2d756b1ee 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDistrict.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDistrict.kt @@ -6,7 +6,7 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat @@ -14,7 +14,7 @@ import java.util.* @MangaSourceParser("MANGA_DISTRICT", "MangaDistrict", "en", ContentType.HENTAI) internal class MangaDistrict(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA_DISTRICT, "mangadistrict.com", pageSize = 30) { + MadaraParser(context, MangaParserSource.MANGA_DISTRICT, "mangadistrict.com", pageSize = 30) { override val tagPrefix = "publication-genre/" override val datePattern = "MMM dd,yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDna.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDna.kt index 1efcdef8c..8bfaf8a94 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDna.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaDna.kt @@ -12,7 +12,7 @@ import java.text.SimpleDateFormat @MangaSourceParser("MANGADNA", "MangaDna", "en", ContentType.HENTAI) internal class MangaDna(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGADNA, "mangadna.com", 20) { + MadaraParser(context, MangaParserSource.MANGADNA, "mangadna.com", 20) { override val datePattern = "dd MMM yyyy" override val withoutAjax = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaEclipse.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaEclipse.kt index ec138de69..7444d0d4c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaEclipse.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaEclipse.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAECLIPSE", "MangaEclipse", "en") internal class MangaEclipse(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAECLIPSE, "mangaeclipse.com") + MadaraParser(context, MangaParserSource.MANGAECLIPSE, "mangaeclipse.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaEffect.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaEffect.kt index 3dd415aec..319ccecf5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaEffect.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaEffect.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAEFFECT", "MangaEffect", "en") internal class MangaEffect(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAEFFECT, "mangaeffect.com") { + MadaraParser(context, MangaParserSource.MANGAEFFECT, "mangaeffect.com") { override val datePattern = "dd.MM.yyyy" override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFastNet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFastNet.kt index dd5e48446..7c1107a29 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFastNet.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFastNet.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAFASTNET", "MangaFast.net", "en") internal class MangaFastNet(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAFASTNET, "manhuafast.net") { + MadaraParser(context, MangaParserSource.MANGAFASTNET, "manhuafast.net") { override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaForFree.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaForFree.kt index 7804c87f6..1ac88b4a4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaForFree.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaForFree.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAFORFREE", "MangaForFree", "en", ContentType.HENTAI) internal class MangaForFree(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAFORFREE, "mangaforfree.com", 10) { + MadaraParser(context, MangaParserSource.MANGAFORFREE, "mangaforfree.com", 10) { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFoxFull.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFoxFull.kt index fc8db58c6..85568b9d5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFoxFull.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFoxFull.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAFOXFULL", "MangaFoxFull", "en") internal class MangaFoxFull(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAFOXFULL, "mangafoxfull.com") { + MadaraParser(context, MangaParserSource.MANGAFOXFULL, "mangafoxfull.com") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFreak.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFreak.kt index 448317e5d..2ced20dcf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFreak.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaFreak.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAFREAK", "MangaFreak", "en") internal class MangaFreak(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAFREAK, "mangafreak.online") { + MadaraParser(context, MangaParserSource.MANGAFREAK, "mangafreak.online") { override val postReq = true override val datePattern = "dd MMMM، yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt new file mode 100644 index 000000000..cd1e4f647 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHall.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGAHALL", "MangaHall", "en", ContentType.HENTAI) +internal class MangaHall(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGAHALL, "mangahall.net", 24) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHentai.kt index bf363e1ec..382feefd3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaHentai.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAHENTAI", "MangaHentai", "en", ContentType.HENTAI) internal class MangaHentai(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAHENTAI, "mangahentai.me", 20) { + MadaraParser(context, MangaParserSource.MANGAHENTAI, "mangahentai.me", 20) { override val tagPrefix = "manga-hentai-genre/" override val listUrl = "manga-hentai/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaKiss.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaKiss.kt index c8b40da02..5f3e6ceba 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaKiss.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaKiss.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAKISS", "MangaKiss", "en") internal class MangaKiss(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAKISS, "mangakiss.org", 10) + MadaraParser(context, MangaParserSource.MANGAKISS, "mangakiss.org", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaKomi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaKomi.kt index c62bc1591..5816311f8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaKomi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaKomi.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGA_KOMI", "MangaKomi", "en") internal class MangaKomi(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA_KOMI, "mangakomi.io", pageSize = 18) { + MadaraParser(context, MangaParserSource.MANGA_KOMI, "mangakomi.io", pageSize = 18) { override val datePattern = "MMMM dd, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaLeveling.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaLeveling.kt index fe9e08621..dd73977b9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaLeveling.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaLeveling.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGALEVELING", "MangaLeveling", "en") internal class MangaLeveling(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGALEVELING, "mangaleveling.com", 30) { + MadaraParser(context, MangaParserSource.MANGALEVELING, "mangaleveling.com", 30) { override val postReq = true override val tagPrefix = "comics-genre/" override val listUrl = "comics/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaManhua.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaManhua.kt index 6ce10d5e6..1a6b04da9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaManhua.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaManhua.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGA_MANHUA", "MangaManhua", "en") internal class MangaManhua(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA_MANHUA, "mangaonlineteam.com", pageSize = 10) + MadaraParser(context, MangaParserSource.MANGA_MANHUA, "mangaonlineteam.com", pageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaManiacs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaManiacs.kt index d32e66498..e21a25508 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaManiacs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaManiacs.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAMANIACS", "MangaManiacs", "en", ContentType.HENTAI) internal class MangaManiacs(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAMANIACS, "mangamaniacs.org", 10) + MadaraParser(context, MangaParserSource.MANGAMANIACS, "mangamaniacs.org", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOnlineTeam.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOnlineTeam.kt index fd968be71..9fab0554c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOnlineTeam.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOnlineTeam.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAONLINETEAM", "MangaOnlineTeam", "en") internal class MangaOnlineTeam(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAONLINETEAM, "mangaonlineteam.com", 10) + MadaraParser(context, MangaParserSource.MANGAONLINETEAM, "mangaonlineteam.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOwlBlog.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOwlBlog.kt index 97efac87f..4ec40353f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOwlBlog.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOwlBlog.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGAOWLBLOG", "MangaOwlnet.com", "en") internal class MangaOwlBlog(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAOWLBLOG, "mangaowlnet.com") + MadaraParser(context, MangaParserSource.MANGAOWLBLOG, "mangaowlnet.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOwlIo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOwlIo.kt index 7b538a0f5..43a44e07d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOwlIo.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOwlIo.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAOWL_IO", "MangaOwl.io", "en") internal class MangaOwlIo(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAOWL_IO, "mangaowl.io") { + MadaraParser(context, MangaParserSource.MANGAOWL_IO, "mangaowl.io") { override val listUrl = "mangaowl-all/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOwlUs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOwlUs.kt index 3611c6b0f..9bdd0bba7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOwlUs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaOwlUs.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGAOWL_US", "MangaOwlYaoi", "en", ContentType.HENTAI) internal class MangaOwlUs(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAOWL_US, "mangaowlyaoi.com") + MadaraParser(context, MangaParserSource.MANGAOWL_US, "mangaowlyaoi.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaPure.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaPure.kt index 336782c87..9a370f596 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaPure.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaPure.kt @@ -7,11 +7,11 @@ import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat -import java.util.EnumSet +import java.util.* @MangaSourceParser("MANGAPURE", "MangaPure", "en") internal class MangaPure(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAPURE, "mangapure.net") { + MadaraParser(context, MangaParserSource.MANGAPURE, "mangapure.net") { override val tagPrefix = "mangas/" override val listUrl = "latest-manga/" override val datePattern = "MMMM d, HH:mm" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaQueen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaQueen.kt index 30d441ac2..3e5c2e207 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaQueen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaQueen.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGA_QUEEN", "MangaQueen", "en") internal class MangaQueen(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA_QUEEN, "mangaqueen.com", 16) + MadaraParser(context, MangaParserSource.MANGA_QUEEN, "mangaqueen.com", 16) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRead.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRead.kt index c0e1e4e79..ec9423921 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRead.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRead.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAREAD", "MangaRead", "en") internal class MangaRead(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAREAD, "www.mangaread.org") { + MadaraParser(context, MangaParserSource.MANGAREAD, "www.mangaread.org") { override val tagPrefix = "genres/" override val datePattern = "dd.MM.yyyy" override val withoutAjax = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaReadCo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaReadCo.kt index 0399d5662..f9f2a2868 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaReadCo.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaReadCo.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAREADCO", "MangaRead.co", "en") internal class MangaReadCo(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAREADCO, "mangaread.co", 16) { + MadaraParser(context, MangaParserSource.MANGAREADCO, "mangaread.co", 16) { override val tagPrefix = "m-genre/" override val datePattern = "yyyy-MM-dd" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRock.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRock.kt index 89a6359f1..ee0ca528e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRock.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRock.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAROCK", "MangaRock", "en") internal class MangaRock(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAROCK, "mangarockteam.com") { + MadaraParser(context, MangaParserSource.MANGAROCK, "mangarockteam.com") { override val datePattern = "MMMM dd, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRockTeam.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRockTeam.kt index 249195c9c..cdfe1ba12 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRockTeam.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRockTeam.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAROCKTEAM", "MangaRock.team", "en") internal class MangaRockTeam(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAROCKTEAM, "mangarockteam.com") + MadaraParser(context, MangaParserSource.MANGAROCKTEAM, "mangarockteam.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRolls.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRolls.kt index a404bedc7..8cc358f07 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRolls.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRolls.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAROLLS", "MangaRolls", "en") internal class MangaRolls(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAROLLS, "mangarolls.net") + MadaraParser(context, MangaParserSource.MANGAROLLS, "mangarolls.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRosie.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRosie.kt index 43c943d08..9a39b9e4d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRosie.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRosie.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAROSIE", "Toon69", "en") internal class MangaRosie(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAROSIE, "toon69.com", pageSize = 16) { + MadaraParser(context, MangaParserSource.MANGAROSIE, "toon69.com", pageSize = 16) { override val datePattern = "MMMM dd, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRuby.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRuby.kt index 5f97f57a1..2cf91423b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRuby.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRuby.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGARUBY", "MangaRuby", "en") internal class MangaRuby(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGARUBY, "mangaruby.com", 10) + MadaraParser(context, MangaParserSource.MANGARUBY, "mangaruby.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRyu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRyu.kt index 2a2a08d20..e64d599d5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRyu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaRyu.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGARYU", "MangaRyu", "en", ContentType.HENTAI) internal class MangaRyu(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGARYU, "mangaryu.com", 10) + MadaraParser(context, MangaParserSource.MANGARYU, "mangaryu.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaSushi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaSushi.kt index 268e55a8b..03bf8274c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaSushi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaSushi.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGASUSHI", "MangaSushi", "en") internal class MangaSushi(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGASUSHI, "mangasushi.org") + MadaraParser(context, MangaParserSource.MANGASUSHI, "mangasushi.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxGg.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxGg.kt index fe54bce35..ede2623e3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxGg.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxGg.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGATX_GG", "MangaTx.gg", "en") internal class MangaTxGg(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGATX_GG, "mangatx.gg") + MadaraParser(context, MangaParserSource.MANGATX_GG, "mangatx.gg") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxTo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxTo.kt new file mode 100644 index 000000000..6fe799761 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxTo.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGATX_TO", "MangaTx.to", "en") +internal class MangaTxTo(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGATX_TO, "mangatx.to", 10) { + override val tagPrefix = "manhua-genre/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxUnofficial.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxUnofficial.kt index e7dd856da..bfacc059a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxUnofficial.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTxUnofficial.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGATXUNOFFICIAL", "MangaEmpress", "en") internal class MangaTxUnofficial(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGATXUNOFFICIAL, "mangaempress.com") + MadaraParser(context, MangaParserSource.MANGATXUNOFFICIAL, "mangaempress.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTyrant.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTyrant.kt index 1c5a489a0..941b70821 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTyrant.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaTyrant.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGATYRANT", "MangaTyrant", "en") internal class MangaTyrant(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGATYRANT, "mangatyrant.com") + MadaraParser(context, MangaParserSource.MANGATYRANT, "mangatyrant.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaWeebs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaWeebs.kt index 78044cf54..11a641ffb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaWeebs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaWeebs.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAWEEBS", "MangaWeebs", "en") internal class MangaWeebs(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAWEEBS, "mangaweebs.org", pageSize = 20) { + MadaraParser(context, MangaParserSource.MANGAWEEBS, "mangaweebs.org", pageSize = 20) { override val datePattern = "dd MMMM HH:mm" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaZin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaZin.kt new file mode 100644 index 000000000..56253d1d5 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaZin.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGAZIN", "MangaZin", "en") +internal class MangaZin(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGAZIN, "mangazin.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangaclash.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangaclash.kt index 948a2bc87..b9ac128b5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangaclash.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangaclash.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGACLASH", "MangaClash", "en") internal class Mangaclash(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGACLASH, "mangaclash.com", pageSize = 18) { + MadaraParser(context, MangaParserSource.MANGACLASH, "mangaclash.com", pageSize = 18) { override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangagg.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangagg.kt index ef5c7b821..ad88ee5c0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangagg.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangagg.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAGG", "MangaGg", "en") internal class Mangagg(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAGG, "mangagg.com") { + MadaraParser(context, MangaParserSource.MANGAGG, "mangagg.com") { override val tagPrefix = "genre/" override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaowlOne.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaowlOne.kt index b40f5b724..0d109281e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaowlOne.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MangaowlOne.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGAOWL_ONE", "MangaOwl.one", "en", ContentType.HENTAI) internal class MangaowlOne(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAOWL_ONE, "mangaowl.one") { + MadaraParser(context, MangaParserSource.MANGAOWL_ONE, "mangaowl.one") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangasy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangasy.kt index 4fe251cc8..48df7d251 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangasy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangasy.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGASY", "Mangasy", "en") internal class Mangasy(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGASY, "www.mangasy.com") { + MadaraParser(context, MangaParserSource.MANGASY, "www.mangasy.com") { override val tagPrefix = "manhua-genre/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangaus.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangaus.kt index 4649118e6..f5debf78d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangaus.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Mangaus.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGAUS", "Mangaus", "en") internal class Mangaus(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAUS, "mangaus.xyz") { + MadaraParser(context, MangaParserSource.MANGAUS, "mangaus.xyz") { override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhuaManhwa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhuaManhwa.kt index 251efd675..f3b625c76 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhuaManhwa.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhuaManhwa.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHUAMANHWA", "ManhuaManhwa", "en") internal class ManhuaManhwa(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHUAMANHWA, "manhuamanhwa.com") { + MadaraParser(context, MangaParserSource.MANHUAMANHWA, "manhuamanhwa.com") { override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhuaZone.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhuaZone.kt index 957da691a..41cd06b3d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhuaZone.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhuaZone.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHUAZONE", "ManhuaZone", "en") internal class ManhuaZone(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHUAZONE, "manhuazone.org") + MadaraParser(context, MangaParserSource.MANHUAZONE, "manhuazone.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhuaZonghe.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhuaZonghe.kt index 15a749ada..66171da90 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhuaZonghe.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhuaZonghe.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHUAZONGHE", "ManhuaZonghe", "en") internal class ManhuaZonghe(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHUAZONGHE, "www.manhuazonghe.com") { + MadaraParser(context, MangaParserSource.MANHUAZONGHE, "www.manhuazonghe.com") { override val tagPrefix = "genre/" override val listUrl = "manhua/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaes.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaes.kt index 7e7b38787..de656ace3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaes.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaes.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHUAES", "ManhuaEs", "en") internal class Manhuaes(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHUAES, "manhuaes.com") { + MadaraParser(context, MangaParserSource.MANHUAES, "manhuaes.com") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuafast.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuafast.kt index 9132cf79b..1c0b3a1f6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuafast.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuafast.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHUAFAST", "ManhuaFast", "en") internal class Manhuafast(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHUAFAST, "manhuafast.com") + MadaraParser(context, MangaParserSource.MANHUAFAST, "manhuafast.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaga.kt index daa8091e1..1986778d4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHUAGA", "ManhuaGa", "en") internal class Manhuaga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHUAGA, "manhuaga.com") + MadaraParser(context, MangaParserSource.MANHUAGA, "manhuaga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuahot.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuahot.kt index 80cf8fe98..bfe85725d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuahot.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuahot.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHUAHOT", "ManhuaHot", "en") internal class Manhuahot(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHUAHOT, "manhuahot.com", 10) + MadaraParser(context, MangaParserSource.MANHUAHOT, "manhuahot.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaplus.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaplus.kt index a4f3ed010..98e9ef15a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaplus.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaplus.kt @@ -5,13 +5,13 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.exception.ParseException import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaPage -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("MANHUAPLUS", "ManhuaPlus", "en") internal class Manhuaplus(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHUAPLUS, "manhuaplus.org") { + MadaraParser(context, MangaParserSource.MANHUAPLUS, "manhuaplus.com") { override val withoutAjax = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuasy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuasy.kt index 10691108e..9f3b67e69 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuasy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuasy.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANHUASY", "ManhuaSy", "en") internal class Manhuasy(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHUASY, "www.manhuasy.com") { + MadaraParser(context, MangaParserSource.MANHUASY, "www.manhuasy.com") { override val listUrl = "manhua/" override val tagPrefix = "manhua-genre/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaus.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaus.kt index 168e5a420..9d8d21bb4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaus.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuaus.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHUAUS", "ManhuaUs", "en") internal class Manhuaus(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHUAUS, "manhuaus.com") + MadaraParser(context, MangaParserSource.MANHUAUS, "manhuaus.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuauss.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuauss.kt index 2880265c0..6892f1e6a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuauss.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhuauss.kt @@ -1,12 +1,14 @@ 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.MangaSource +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, MangaSource.MANHUAUSS, "manhuauss.com") { + MadaraParser(context, MangaParserSource.MANHUAUSS, "manhuauss.com") { override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwa18App.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwa18App.kt index 09d6cf317..2d54dbc0b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwa18App.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwa18App.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANHWA18APP", "Manhwa18.app", "en", ContentType.HENTAI) internal class Manhwa18App(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWA18APP, "manhwa18.app") { + MadaraParser(context, MangaParserSource.MANHWA18APP, "manhwa18.app") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwa18Org.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwa18Org.kt index 1cadb31be..f6dcc7cff 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwa18Org.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwa18Org.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHWA18ORG", "Manhwa18.org", "en", ContentType.HENTAI) internal class Manhwa18Org(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWA18ORG, "manhwa18.org") { + MadaraParser(context, MangaParserSource.MANHWA18ORG, "manhwa18.org") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwa68.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwa68.kt index dcb398633..75079d189 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwa68.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwa68.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHWA68", "Manhwa68", "en", ContentType.HENTAI) internal class Manhwa68(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWA68, "manhwa68.com") + MadaraParser(context, MangaParserSource.MANHWA68, "manhwa68.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaClan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaClan.kt index e18133725..665f9d2d7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaClan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaClan.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHWACLAN", "ManhwaClan", "en") internal class ManhwaClan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWACLAN, "manhwaclan.com", pageSize = 10) { + MadaraParser(context, MangaParserSource.MANHWACLAN, "manhwaclan.com", pageSize = 10) { override val datePattern = "MMMM dd, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaFull.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaFull.kt index fcbb01d37..fe6c261f3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaFull.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaFull.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHWAFULL", "ManhwaFull", "en") internal class ManhwaFull(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWAFULL, "manhwafull.com") { + MadaraParser(context, MangaParserSource.MANHWAFULL, "manhwafull.com") { override val listUrl = "manga-all-manhwa/" override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaHentai.kt index 0bf2457fa..551b2092a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaHentai.kt @@ -1,14 +1,113 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import org.jsoup.nodes.Document 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.MangaSource +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.* +import java.text.SimpleDateFormat @MangaSourceParser("MANHWAHENTAI", "ManhwaHentai", "en", ContentType.HENTAI) internal class ManhwaHentai(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWAHENTAI, "manhwahentai.me", 20) { + MadaraParser(context, MangaParserSource.MANHWAHENTAI, "manhwahentai.me", 20) { override val tagPrefix = "webtoon-genre/" override val listUrl = "webtoon/" + override val withoutAjax = true + override val postReq = true + + override suspend fun getDetails(manga: Manga): Manga = coroutineScope { + val fullUrl = manga.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + val body = doc.body() + val chaptersDeferred = async { loadChapters(manga.url, doc) } + val desc = body.select(selectDesc).html() + val stateDiv = if (selectState.isEmpty()) { + (body.selectFirst("div.post-content_item:contains(Status)") + ?: body.selectFirst("div.post-content_item:contains(Statut)") + ?: body.selectFirst("div.post-content_item:contains(État)") + ?: body.selectFirst("div.post-content_item:contains(حالة العمل)") + ?: body.selectFirst("div.post-content_item:contains(Estado)") + ?: body.selectFirst("div.post-content_item:contains(สถานะ)") + ?: body.selectFirst("div.post-content_item:contains(Stato)") + ?: body.selectFirst("div.post-content_item:contains(Durum)") + ?: body.selectFirst("div.post-content_item:contains(Statüsü)") + ?: body.selectFirst("div.post-content_item:contains(Статус)") + ?: body.selectFirst("div.post-content_item:contains(状态)") + ?: body.selectFirst("div.post-content_item:contains(الحالة)"))?.selectLast("div.summary-content") + } else { + body.selectFirst(selectState) + } + + + val state = stateDiv?.let { + when (it.text()) { + in ongoing -> MangaState.ONGOING + in finished -> MangaState.FINISHED + in abandoned -> MangaState.ABANDONED + in paused -> MangaState.PAUSED + else -> null + } + } + + val alt = + doc.body().select(".post-content_item:contains(Alt) .summary-content").firstOrNull()?.tableValue()?.text() + ?.trim() ?: doc.body().select(".post-content_item:contains(Nomes alternativos: ) .summary-content") + .firstOrNull()?.tableValue()?.text()?.trim() + + manga.copy( + tags = doc.body().select(selectGenre).mapNotNullToSet { a -> + MangaTag( + key = a.attr("href").removeSuffix("/").substringAfterLast('/'), + title = a.text().toTitleCase(), + source = source, + ) + }, + description = desc, + altTitle = alt, + state = state, + chapters = chaptersDeferred.await(), + ) + } + + override suspend fun loadChapters(mangaUrl: String, document: Document): List { + val doc = if (postReq) { + val mangaId = document.select("div#manga-chapters-holder").attr("data-id") + val url = "https://$domain/wp-admin/admin-ajax.php" + val postData = "action=ajax_chap&post_id=$mangaId" + webClient.httpPost(url, postData).parseHtml() + } else { + val url = mangaUrl.toAbsoluteUrl(domain).removeSuffix('/') + "/ajax/chapters/" + webClient.httpPost(url, emptyMap()).parseHtml() + } + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + return doc.select(selectChapter).mapChapters(reversed = true) { i, li -> + val a = li.selectFirst("a") + val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") + val link = href + stylePage + val dateText = li.selectFirst("a.c-new-tag")?.attr("title") ?: li.selectFirst(selectDate)?.text() + val name = a.selectFirst("p")?.text() ?: a.ownText() + MangaChapter( + id = generateUid(href), + url = link, + name = name, + number = i + 1f, + volume = 0, + branch = null, + uploadDate = parseChapterDate( + dateFormat, + dateText, + ), + scanlator = null, + source = source, + ) + } + } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaHentaiTo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaHentaiTo.kt index 346740717..808784175 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaHentaiTo.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaHentaiTo.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHWAHENTAITO", "ManhwaHentai.to", "en", ContentType.HENTAI) internal class ManhwaHentaiTo(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWAHENTAITO, "manhwahentai.to", 10) { + MadaraParser(context, MangaParserSource.MANHWAHENTAITO, "manhwahentai.to", 10) { override val tagPrefix = "pornhwa-genre/" override val listUrl = "pornhwa/" override val datePattern = "d MMMM yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaManhua.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaManhua.kt index 1e5773691..3765d0117 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaManhua.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaManhua.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHWAMANHUA", "ManhwaManhua", "en") internal class ManhwaManhua(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWAMANHUA, "manhwamanhua.com") + MadaraParser(context, MangaParserSource.MANHWAMANHUA, "manhwamanhua.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaNew.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaNew.kt index 47bdd5700..f32517ec2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaNew.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaNew.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHWANEW", "ManhwaNew", "en") internal class ManhwaNew(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWANEW, "manhwanew.com") { + MadaraParser(context, MangaParserSource.MANHWANEW, "manhwanew.com") { override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaRawCom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaRawCom.kt index 66e2333d9..4d700a23f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaRawCom.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaRawCom.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHWARAW_COM", "ManhwaRaw.com", "en", ContentType.HENTAI) internal class ManhwaRawCom(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWARAW_COM, "manhwaraw.com") { + MadaraParser(context, MangaParserSource.MANHWARAW_COM, "manhwaraw.com") { override val postReq = true override val listUrl = "manhwa-raw/" override val tagPrefix = "manhwa-raw-genre/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaTop.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaTop.kt index 3484f3df1..eda11aa41 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaTop.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManhwaTop.kt @@ -4,14 +4,14 @@ import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat @MangaSourceParser("MANHWATOP", "ManhwaTop", "en") internal class ManhwaTop(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWATOP, "manhwatop.com") { + MadaraParser(context, MangaParserSource.MANHWATOP, "manhwatop.com") { override val postReq = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwaden.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwaden.kt index 21e838b87..1f50d481a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwaden.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwaden.kt @@ -5,13 +5,13 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaPage -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("MANHWADEN", "ManhwaDen", "en", ContentType.HENTAI) internal class Manhwaden(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWADEN, "www.manhwaden.com", 10) { + MadaraParser(context, MangaParserSource.MANHWADEN, "www.manhwaden.com", 10) { override val selectPage = "p img[src]" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwasco.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwasco.kt index 5a460adca..4c24fc116 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwasco.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwasco.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANHWASCO", "ManhwaSco", "en") internal class Manhwasco(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWASCO, "manhwasco.net") { + MadaraParser(context, MangaParserSource.MANHWASCO, "manhwasco.net") { override val selectGenre = "div.mg_genres a" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwaz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwaz.kt index 78129fc33..f8d092aca 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwaz.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Manhwaz.kt @@ -5,11 +5,11 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* -import java.util.EnumSet +import java.util.* @MangaSourceParser("MANHWAZ", "ManhwaZ", "en") internal class Manhwaz(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWAZ, "manhwaz.com", 40) { + MadaraParser(context, MangaParserSource.MANHWAZ, "manhwaz.com", 40) { override val listUrl = "genre/manhwa" override val tagPrefix = "genre/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManyComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManyComic.kt index 0b2c6e132..4c1fc66e7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManyComic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManyComic.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANYCOMIC", "ManyComic", "en", ContentType.HENTAI) internal class ManyComic(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANYCOMIC, "manycomic.com") { + MadaraParser(context, MangaParserSource.MANYCOMIC, "manycomic.com") { override val postReq = true override val tagPrefix = "comic-genre/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManyToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManyToon.kt index e9d6eaff2..af965a9be 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManyToon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManyToon.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANYTOON", "ManyToon", "en", ContentType.HENTAI) internal class ManyToon(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANYTOON, "manytoon.com", 20) { + MadaraParser(context, MangaParserSource.MANYTOON, "manytoon.com", 20) { override val listUrl = "comic/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManyToonMe.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManyToonMe.kt index fe144bdd7..f45fe034a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManyToonMe.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ManyToonMe.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANYTOONME", "ManyToon.me", "en", ContentType.HENTAI) internal class ManyToonMe(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANYTOONME, "manytoon.me", 20) { + MadaraParser(context, MangaParserSource.MANYTOONME, "manytoon.me", 20) { override val listUrl = "manhwa/" override val tagPrefix = "manhwa-genre/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MilfToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MilfToon.kt index 4e3640dff..fe4c66979 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MilfToon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MilfToon.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MILFTOON", "MilfToon", "en", ContentType.HENTAI) internal class MilfToon(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MILFTOON, "milftoon.xxx", 20) { + MadaraParser(context, MangaParserSource.MILFTOON, "milftoon.xxx", 20) { override val postReq = true override val datePattern = "d MMMM, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MmScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MmScans.kt index a4a8a3119..c39c264ff 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MmScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MmScans.kt @@ -1,14 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser - +@Broken @MangaSourceParser("MMSCANS", "MmScans", "en") internal class MmScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MMSCANS, "mm-scans.org") { + MadaraParser(context, MangaParserSource.MMSCANS, "mm-scans.org") { override val selectChapter = "li.chapter-li" override val selectDesc = "div.summary-text" override val withoutAjax = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MortalsGroove.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MortalsGroove.kt index 6ee8e0e44..5cd2d0fa2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MortalsGroove.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MortalsGroove.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MORTALSGROOVE", "Mortals Groove", "en") internal class MortalsGroove(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MORTALSGROOVE, "mortalsgroove.com") { + MadaraParser(context, MangaParserSource.MORTALSGROOVE, "mortalsgroove.com") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MurimScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MurimScan.kt index f6b862ea4..5b9e3e6b9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MurimScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/MurimScan.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MURIMSCAN", "MurimScan", "en") internal class MurimScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MURIMSCAN, "murimscan.run", 100) { + MadaraParser(context, MangaParserSource.MURIMSCAN, "murimscan.run", 100) { override val withoutAjax = true override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NeatManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NeatManga.kt index 338c2f49b..ab1c9a522 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NeatManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NeatManga.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NEATMANGA", "NeatManga", "en") internal class NeatManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NEATMANGA, "neatmangas.com", pageSize = 20) { + MadaraParser(context, MangaParserSource.NEATMANGA, "neatmangas.com", pageSize = 20) { override val datePattern = "dd MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NewManhua.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NewManhua.kt index 72d96198d..7da9e1a84 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NewManhua.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NewManhua.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NEWMANHUA", "NewManhua", "en") internal class NewManhua(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NEWMANHUA, "newmanhua.com", pageSize = 16) + MadaraParser(context, MangaParserSource.NEWMANHUA, "newmanhua.com", pageSize = 16) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NightComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NightComic.kt index 3ca23d5a2..1b736cd0f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NightComic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NightComic.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NIGHTCOMIC", "Night Comic", "en") internal class NightComic(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NIGHTCOMIC, "www.nightcomic.com") { + MadaraParser(context, MangaParserSource.NIGHTCOMIC, "www.nightcomic.com") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NitroManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NitroManga.kt index d60d434ac..d0b6dddb3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NitroManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NitroManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NITROMANGA", "NitroManga", "en") internal class NitroManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NITROMANGA, "nitromanga.com", pageSize = 18) + MadaraParser(context, MangaParserSource.NITROMANGA, "nitroscans.net", pageSize = 18) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Novelcrow.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Novelcrow.kt index 0cfa5107b..9d06a4868 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Novelcrow.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Novelcrow.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NOVELCROW", "NovelCrow", "en", ContentType.HENTAI) internal class Novelcrow(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NOVELCROW, "novelcrow.com", 24) { + MadaraParser(context, MangaParserSource.NOVELCROW, "novelcrow.com", 24) { override val tagPrefix = "comic-genre/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Novelmic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Novelmic.kt index 5a0dbedf6..d3f07d92b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Novelmic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Novelmic.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NOVELMIC", "NovelMic", "en") internal class Novelmic(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NOVELMIC, "novelmic.com", 20) { + MadaraParser(context, MangaParserSource.NOVELMIC, "novelmic.com", 20) { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NvManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NvManga.kt index a5d20296a..c8fc4b92f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NvManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/NvManga.kt @@ -1,13 +1,15 @@ 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.MangaSource +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, MangaSource.NVMANGA, "nvmanga.com") { + MadaraParser(context, MangaParserSource.NVMANGA, "nvmanga.com") { override val datePattern = "dd/MM/yyyy" override val tagPrefix = "genre/" override val listUrl = "webtoon/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/OnlyManhwa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/OnlyManhwa.kt index 4368de94c..0e33fa1a6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/OnlyManhwa.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/OnlyManhwa.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("ONLYMANHWA", "OnlyManhwa", "en") internal class OnlyManhwa(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ONLYMANHWA, "onlymanhwa.org") { + MadaraParser(context, MangaParserSource.ONLYMANHWA, "onlymanhwa.org") { override val listUrl = "manhwa/" override val datePattern = "d 'de' MMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Paragonscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Paragonscans.kt deleted file mode 100644 index 2abb29c9e..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Paragonscans.kt +++ /dev/null @@ -1,12 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.madara.en - -import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.site.madara.MadaraParser - -@MangaSourceParser("PARAGONSCANS", "ParagonScans", "en") -internal class Paragonscans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PARAGONSCANS, "paragonscans.com", pageSize = 50) { - override val datePattern = "MM/dd/yyyy" -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Paritehaber.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Paritehaber.kt index 2a561a90e..b31a4201f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Paritehaber.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Paritehaber.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("PARITEHABER", "Paritehaber", "en", ContentType.HENTAI) internal class Paritehaber(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PARITEHABER, "www.paritehaber.com", 10) + MadaraParser(context, MangaParserSource.PARITEHABER, "www.paritehaber.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PawManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PawManga.kt index 3774e6da2..35138f32b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PawManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PawManga.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("PAWMANGA", "PawManga", "en", ContentType.HENTAI) internal class PawManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PAWMANGA, "pawmanga.com", 10) + MadaraParser(context, MangaParserSource.PAWMANGA, "pawmanga.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PetrotechSociety.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PetrotechSociety.kt index 27387633c..66bde7ef0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PetrotechSociety.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PetrotechSociety.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("PETROTECHSOCIETY", "Petrotech Society", "en", ContentType.HENTAI) internal class PetrotechSociety(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PETROTECHSOCIETY, "www.petrotechsociety.org", pageSize = 10) { + MadaraParser(context, MangaParserSource.PETROTECHSOCIETY, "www.petrotechsociety.org", pageSize = 10) { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PianManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PianManga.kt index 22d99766f..644c8225c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PianManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PianManga.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("PIANMANGA", "PianManga", "en") internal class PianManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PIANMANGA, "pianmanga.me", pageSize = 10) { + MadaraParser(context, MangaParserSource.PIANMANGA, "pianmanga.me", pageSize = 10) { override val datePattern = "MMMM dd, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PlatinumScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PlatinumScans.kt index 159540583..b82477f59 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PlatinumScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PlatinumScans.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("PLATINUMSCANS", "PlatinumScans", "en") internal class PlatinumScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PLATINUMSCANS, "platinumscans.com", pageSize = 10) { + MadaraParser(context, MangaParserSource.PLATINUMSCANS, "platinumscans.com", pageSize = 10) { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PonyManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PonyManga.kt index b9a1fcfb1..de5b689c6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PonyManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PonyManga.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("PONYMANGA", "PonyManga", "en", ContentType.HENTAI) internal class PonyManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PONYMANGA, "ponymanga.com", 10) + MadaraParser(context, MangaParserSource.PONYMANGA, "ponymanga.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PornComixOnline.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PornComixOnline.kt index 46d3b76a7..c2f48b667 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PornComixOnline.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/PornComixOnline.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("PORNCOMIXONLINE", "PornComix Online", "en", ContentType.HENTAI) internal class PornComixOnline(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PORNCOMIXONLINE, "www.porncomixonline.net") { + MadaraParser(context, MangaParserSource.PORNCOMIXONLINE, "www.porncomixonline.net") { override val listUrl = "m-comic/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/RackusReads.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/RackusReads.kt index cd541746e..fc72435bb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/RackusReads.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/RackusReads.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("RACKUSREADS", "RackusReads", "en") internal class RackusReads(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.RACKUSREADS, "rackusreads.com", 20) { + MadaraParser(context, MangaParserSource.RACKUSREADS, "rackusreads.com", 20) { override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ReadFreeComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ReadFreeComics.kt index 9ad4b2429..247e265c5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ReadFreeComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ReadFreeComics.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("READFREECOMICS", "ReadFreeComics", "en") internal class ReadFreeComics(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.READFREECOMICS, "readfreecomics.com") { + MadaraParser(context, MangaParserSource.READFREECOMICS, "readfreecomics.com") { override val tagPrefix = "webtoon-comic-genre/" override val listUrl = "webtoon-comic/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ReadManhua.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ReadManhua.kt index ba1013baa..fa1ddf92d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ReadManhua.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ReadManhua.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("READMANHUA", "ReadManhua", "en", ContentType.HENTAI) internal class ReadManhua(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.READMANHUA, "readmanhua.net", 20) { + MadaraParser(context, MangaParserSource.READMANHUA, "readmanhua.net", 20) { override val postReq = true override val datePattern = "d MMM yy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ResetScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ResetScans.kt index f9f71bbf4..150710779 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ResetScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ResetScans.kt @@ -5,7 +5,7 @@ import org.jsoup.select.Elements import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat @@ -13,7 +13,7 @@ import java.util.Collections.emptyMap @MangaSourceParser("RESETSCANS", "ResetScans", "en") internal class ResetScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.RESETSCANS, "reset-scans.xyz", 18) { + MadaraParser(context, MangaParserSource.RESETSCANS, "reset-scans.co", 18) { override val datePattern = "MMM dd" override suspend fun loadChapters(mangaUrl: String, document: Document): List { @@ -27,7 +27,7 @@ internal class ResetScans(context: MangaLoaderContext) : webClient.httpPost(url, emptyMap()).parseHtml() } val dateFormat = SimpleDateFormat(datePattern, sourceLocale) - return doc.select(selectChapter).mapChapters(reversed = true) { i, li -> + return doc.select(selectChapter).mapChapters(reversed = true) { _, li -> val a = li.getElementsByTag("a").findWithText() val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") val link = href + stylePage diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Rio2MangaNet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Rio2MangaNet.kt index 78cd2c76a..95f7deebb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Rio2MangaNet.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Rio2MangaNet.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("RIO2MANGANET", "Rio2Manga.net", "en") internal class Rio2MangaNet(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.RIO2MANGANET, "rio2manga.net", 10) + MadaraParser(context, MangaParserSource.RIO2MANGANET, "rio2manga.net", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/S2Manga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/S2Manga.kt index c8c9e4096..081282283 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/S2Manga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/S2Manga.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("S2MANGA", "S2Manga", "en") internal class S2Manga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.S2MANGA, "www.s2manga.com") { + MadaraParser(context, MangaParserSource.S2MANGA, "s2manga.com") { override val datePattern = "MMMM dd, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Scansraw.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Scansraw.kt index facfc6ea3..f9c37d123 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Scansraw.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Scansraw.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SCANSRAW", "AquaScans.com", "en") internal class Scansraw(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SCANSRAW, "aquascans.com", 10) + MadaraParser(context, MangaParserSource.SCANSRAW, "aquascans.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SectScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SectScans.kt index 6f5e3ae49..f68974b31 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SectScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SectScans.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SECTSCANS", "SectScans", "en") internal class SectScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SECTSCANS, "sectscans.com") { + MadaraParser(context, MangaParserSource.SECTSCANS, "sectscans.com") { override val listUrl = "comics/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SetsuScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SetsuScans.kt index 6e9361137..fb1b5d6f0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SetsuScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SetsuScans.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SETSUSCANS", "SetsuScans", "en") internal class SetsuScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SETSUSCANS, "setsuscans.com") + MadaraParser(context, MangaParserSource.SETSUSCANS, "setsuscans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ShibaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ShibaManga.kt index 18f3c2e3d..a956ccb6a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ShibaManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ShibaManga.kt @@ -1,15 +1,18 @@ package org.koitharu.kotatsu.parsers.site.madara.en +import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("SHIBAMANGA", "ShibaManga", "en") internal class ShibaManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SHIBAMANGA, "shibamanga.com") { + MadaraParser(context, MangaParserSource.SHIBAMANGA, "shibamanga.com") { override val datePattern = "MM/dd/yyyy" override fun parseMangaList(doc: Document): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ShootingStarScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ShootingStarScans.kt index 1937b2759..c1889c05e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ShootingStarScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ShootingStarScans.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SHOOTINGSTARSCANS", "Shooting Star Scans", "en") internal class ShootingStarScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SHOOTINGSTARSCANS, "shootingstarscans.com") { + MadaraParser(context, MangaParserSource.SHOOTINGSTARSCANS, "shootingstarscans.com") { override val tagPrefix = "manga-tag/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SleepyTranslations.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SleepyTranslations.kt index 03b3e57ce..d683a16b5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SleepyTranslations.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SleepyTranslations.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SLEEPYTRANSLATIONS", "Sleepy Translations", "en") internal class SleepyTranslations(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SLEEPYTRANSLATIONS, "sleepytranslations.com", 16) { + MadaraParser(context, MangaParserSource.SLEEPYTRANSLATIONS, "sleepytranslations.com", 16) { override val listUrl = "series/" override val tagPrefix = "genre/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StkissMangaBlog.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StkissMangaBlog.kt index 310ed4093..107ecd3a5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StkissMangaBlog.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StkissMangaBlog.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("STKISSMANGABLOG", "1StKissManga.net", "en") internal class StkissMangaBlog(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.STKISSMANGABLOG, "1st-kissmanga.net", 20) + MadaraParser(context, MangaParserSource.STKISSMANGABLOG, "1st-kissmanga.net", 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StkissMangaCom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StkissMangaCom.kt index d1b143bbc..f11747cc7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StkissMangaCom.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StkissMangaCom.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("STKISSMANGA_COM", "1stKissManga.com", "en") internal class StkissMangaCom(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.STKISSMANGA_COM, "1stkiss-manga.com", 10) + MadaraParser(context, MangaParserSource.STKISSMANGA_COM, "1stkiss-manga.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StoneScape.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StoneScape.kt new file mode 100644 index 000000000..20f0551d9 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/StoneScape.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("STONESCAPE", "StoneScape", "en") +internal class StoneScape(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.STONESCAPE, "stonescape.xyz", 10) { + override val listUrl = "series/" + override val tagPrefix = "series-genre/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SumManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SumManga.kt index 37cae7f26..6c3a9d679 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SumManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/SumManga.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SUMMANGA", "SumManga", "en", ContentType.HENTAI) internal class SumManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SUMMANGA, "summanga.com") + MadaraParser(context, MangaParserSource.SUMMANGA, "summanga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TcbScansManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TcbScansManga.kt new file mode 100644 index 000000000..33f1f3b45 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TcbScansManga.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("TCBSCANSMANGA", "TcbScansManga", "en") +internal class TcbScansManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.TCBSCANSMANGA, "tcbscans-manga.com", 10) { + override val selectPage = "img" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TeenManhua.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TeenManhua.kt index 13b71d42b..d2f661d28 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TeenManhua.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TeenManhua.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("TEENMANHUA", "TeenManhua", "en") internal class TeenManhua(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TEENMANHUA, "teenmanhua.com") { + MadaraParser(context, MangaParserSource.TEENMANHUA, "teenmanhua.com") { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TheBlank.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TheBlank.kt index 38e44dfb9..51d953164 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TheBlank.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TheBlank.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("THEBLANK", "TheBlank", "en", ContentType.HENTAI) internal class TheBlank(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.THEBLANK, "theblank.net") { + MadaraParser(context, MangaParserSource.THEBLANK, "theblank.net") { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Theguildscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Theguildscans.kt index 19d2db24f..34a8e9bc7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Theguildscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Theguildscans.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("THEGUILDSCANS", "TheGuildScans", "en") internal class Theguildscans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.THEGUILDSCANS, "theguildscans.com") { + MadaraParser(context, MangaParserSource.THEGUILDSCANS, "theguildscans.com") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonChill.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonChill.kt index afa28aafe..3e0645fbf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonChill.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonChill.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TOONCHILL", "ToonChill", "en") internal class ToonChill(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TOONCHILL, "toonchill.com", 32) + MadaraParser(context, MangaParserSource.TOONCHILL, "toonchill.com", 32) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonGod.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonGod.kt index 2dae3155c..fa8b31d31 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonGod.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ToonGod.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TOONGOD", "ToonGod", "en", ContentType.HENTAI) internal class ToonGod(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TOONGOD, "www.toongod.org", 18) { + MadaraParser(context, MangaParserSource.TOONGOD, "www.toongod.org", 18) { override val listUrl = "webtoon/" override val tagPrefix = "webtoon-genre/" override val datePattern = "d MMM yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Toonily.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Toonily.kt index d3f74c206..157056f46 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Toonily.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Toonily.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TOONILY", "Toonily", "en") internal class Toonily(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TOONILY, "toonily.com", pageSize = 18) { + MadaraParser(context, MangaParserSource.TOONILY, "toonily.com", pageSize = 18) { override val listUrl = "webtoon/" override val tagPrefix = "webtoon-genre/" override val datePattern = "MMMM dd, yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Toonizy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Toonizy.kt index aa73d7b37..f129f8518 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Toonizy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Toonizy.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TOONIZY", "Toonizy", "en", ContentType.HENTAI) internal class Toonizy(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TOONIZY, "toonizy.com", 24) { + MadaraParser(context, MangaParserSource.TOONIZY, "toonizy.com", 24) { override val datePattern = "MMM d, yy" override val listUrl = "webtoon/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TopManhua.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TopManhua.kt index 0965e9d0f..b1768a5e1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TopManhua.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TopManhua.kt @@ -2,12 +2,13 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("TOPMANHUA", "TopManhua", "en") +@MangaSourceParser("TOPMANHUA", "ManhuaTop", "en") internal class TopManhua(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TOPMANHUA, "topmanhua.com") { + MadaraParser(context, MangaParserSource.TOPMANHUA, "manhuatop.org") { override val tagPrefix = "manhua-genre/" + override val listUrl = "manhua/" override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TopReadManhwa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TopReadManhwa.kt index febb9201d..af1e7b94e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TopReadManhwa.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TopReadManhwa.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TOPREADMANHWA", "TopReadManhwa", "en") internal class TopReadManhwa(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TOPREADMANHWA, "topreadmanhwa.com") { + MadaraParser(context, MangaParserSource.TOPREADMANHWA, "topreadmanhwa.com") { override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TreeManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TreeManga.kt index 4f3c4afda..992f7f32c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TreeManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/TreeManga.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TREE_MANGA", "TreeManga", "en") internal class TreeManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TREE_MANGA, "treemanga.com") { + MadaraParser(context, MangaParserSource.TREE_MANGA, "treemanga.com") { override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Tritinia.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Tritinia.kt index 86a8ea125..27aceadc1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Tritinia.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Tritinia.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TRITINIA", "Tritinia", "en") internal class Tritinia(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TRITINIA, "tritinia.org") + MadaraParser(context, MangaParserSource.TRITINIA, "tritinia.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/UToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/UToon.kt new file mode 100644 index 000000000..0b0491f3b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/UToon.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("UTOON", "UToon", "en") +internal class UToon(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.UTOON, "utoon.net") { + override val datePattern = "dd MMM" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebDexScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebDexScans.kt index e8f736226..1405587ae 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebDexScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebDexScans.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("WEBDEXSCANS", "WebDexScans", "en") internal class WebDexScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.WEBDEXSCANS, "webdexscans.com") + MadaraParser(context, MangaParserSource.WEBDEXSCANS, "webdexscans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Webtoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Webtoon.kt index 77c260446..cbf9b97c1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Webtoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Webtoon.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("WEBTOON", "Webtoon.uk", "en") internal class Webtoon(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.WEBTOON, "webtoon.uk", 20) { + MadaraParser(context, MangaParserSource.WEBTOON, "webtoon.uk", 20) { override val tagPrefix = "manhwa-genre/" override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebtoonScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebtoonScan.kt index 51bf62b49..c7f87fe7e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebtoonScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebtoonScan.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("WEBTOONSCAN", "WebtoonScan", "en", ContentType.HENTAI) internal class WebtoonScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.WEBTOONSCAN, "webtoonscan.com", 20) + MadaraParser(context, MangaParserSource.WEBTOONSCAN, "webtoonscan.com", 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebtoonXyz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebtoonXyz.kt index 5572e728c..987eaa9a5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebtoonXyz.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WebtoonXyz.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("WEBTOONXYZ", "Webtoon.xyz", "en", ContentType.HENTAI) internal class WebtoonXyz(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.WEBTOONXYZ, "www.webtoon.xyz", 20) { + MadaraParser(context, MangaParserSource.WEBTOONXYZ, "www.webtoon.xyz", 20) { override val tagPrefix = "webtoon-genre/" override val listUrl = "read/" override val datePattern = "d MMM yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WhaleManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WhaleManga.kt index 42afd6a32..8de6c32e2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WhaleManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/WhaleManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("WHALEMANGA", "WhaleManga", "en") internal class WhaleManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.WHALEMANGA, "whalemanga.com", 10) + MadaraParser(context, MangaParserSource.WHALEMANGA, "whalemanga.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Woopread.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Woopread.kt index 01ea7b87b..e97b9fcdd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Woopread.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Woopread.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("WOOPREAD", "Woopread", "en") internal class Woopread(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.WOOPREAD, "woopread.com", 10) { + MadaraParser(context, MangaParserSource.WOOPREAD, "woopread.com", 10) { override val listUrl = "series/" override val tagPrefix = "series-genres/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiHub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiHub.kt new file mode 100644 index 000000000..0f4b83e64 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiHub.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("YAOIHUB", "YaoiHub", "en", ContentType.HENTAI) +internal class YaoiHub(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.YAOIHUB, "yaoihub.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiMobi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiMobi.kt index d3d8e0cfb..16361fa4d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiMobi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiMobi.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("YAOIMOBI", "Yaoi.Mobi", "en", ContentType.HENTAI) internal class YaoiMobi(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.YAOIMOBI, "yaoi.mobi") { + MadaraParser(context, MangaParserSource.YAOIMOBI, "yaoi.mobi") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiScan.kt index f8694d066..ea29c04c7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/YaoiScan.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("YAOISCAN", "YaoiScan", "en", ContentType.HENTAI) internal class YaoiScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.YAOISCAN, "yaoiscan.com", 20) + MadaraParser(context, MangaParserSource.YAOISCAN, "yaoiscan.com", 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZandynoFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZandynoFansub.kt index 56e6e4087..0997c387d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZandynoFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZandynoFansub.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ZANDYNOFANSUB", "Zandyno Fansub", "en") internal class ZandynoFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ZANDYNOFANSUB, "zandynofansub.aishiteru.org", 20) { + MadaraParser(context, MangaParserSource.ZANDYNOFANSUB, "zandynofansub.aishiteru.org", 20) { override val listUrl = "series/" override val datePattern = "dd.MM.yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinChanManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinChanManga.kt new file mode 100644 index 000000000..8997cedee --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinChanManga.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ZINCHANMANGA", "ZinChanManga", "en", ContentType.HENTAI) +internal class ZinChanManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ZINCHANMANGA, "zinchanmanga.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCc.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCc.kt new file mode 100644 index 000000000..4fc6708f1 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCc.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ZINMANGA_CC", "ZinManga.cc", "en") +internal class ZinMangaCc(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ZINMANGA_CC, "zinmanga.cc") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCom.kt new file mode 100644 index 000000000..b48a34f6b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaCom.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ZIN_MANGA_COM", "Zin-Manga.com", "en") +internal class ZinMangaCom(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ZIN_MANGA_COM, "zin-manga.com") { + override val selectPage = "img" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaMS.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaMS.kt new file mode 100644 index 000000000..b743cbb00 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/ZinMangaMS.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.en + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ZINMANGA_MS", "ZinManga.ms", "en") +internal class ZinMangaMS(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ZINMANGA_MS, "zinmanga.ms") { + override val listUrl = "manga-1/" + override val tagPrefix = "manga-genre-1/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Zinmanga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Zinmanga.kt index c240eb403..5dbc77473 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Zinmanga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/en/Zinmanga.kt @@ -2,11 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("ZINMANGA", "ZinManga", "en") -internal class Zinmanga(context: MangaLoaderContext) : MadaraParser(context, MangaSource.ZINMANGA, "zinmanga.net") { +@MangaSourceParser("ZINMANGA", "ZinManga.net", "en") +internal class Zinmanga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ZINMANGA, "zinmanga.net") { override val datePattern = "MM/dd/yyyy" override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ApollComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ApollComics.kt index 995b8c0b3..e6876f1ac 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ApollComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ApollComics.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("APOLL_COMICS", "ApollComics", "es") internal class ApollComics(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.APOLL_COMICS, "apollcomics.com", 10) + MadaraParser(context, MangaParserSource.APOLL_COMICS, "apollcomics.es", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/AtlantisScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/AtlantisScan.kt index 8fb7eccc0..432fd9492 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/AtlantisScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/AtlantisScan.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("ATLANTISSCAN", "AtlantisScan", "es") internal class AtlantisScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ATLANTISSCAN, "scansatlanticos.com", pageSize = 50) { + MadaraParser(context, MangaParserSource.ATLANTISSCAN, "scansatlanticos.com", pageSize = 50) { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/BarManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/BarManga.kt index 0ea5505f3..7754f5a23 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/BarManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/BarManga.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("BARMANGA", "BarManga", "es") internal class BarManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BARMANGA, "barmanga.com") { + MadaraParser(context, MangaParserSource.BARMANGA, "barmanga.com") { override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Bokugents.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Bokugents.kt index 7120cda96..2d84a54ad 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Bokugents.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Bokugents.kt @@ -2,10 +2,10 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("BOKUGENTS", "Bokugents", "es") internal class Bokugents(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BOKUGENTS, "bokugents.com") + MadaraParser(context, MangaParserSource.BOKUGENTS, "bokugents.com") // For this source need to enable the option to ignore SSL errors diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Cocorip.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Cocorip.kt index 0922afe77..22c728f87 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Cocorip.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Cocorip.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("COCORIP", "Cocorip", "es") internal class Cocorip(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.COCORIP, "cocorip.net", 16) { + MadaraParser(context, MangaParserSource.COCORIP, "cocorip.net", 16) { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Copypastescan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Copypastescan.kt index 8b9edb4a1..12c3cf40f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Copypastescan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Copypastescan.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("COPYPASTESCAN", "CopyPasteScan", "es") internal class Copypastescan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.COPYPASTESCAN, "copypastescan.xyz", 10) { + MadaraParser(context, MangaParserSource.COPYPASTESCAN, "copypastescan.xyz", 10) { override val datePattern = "d MMMM, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Daprob.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Daprob.kt index 0a24fa428..cda599a9e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Daprob.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Daprob.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("DAPROB", "Daprob", "es") internal class Daprob(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.DAPROB, "daprob.com") { + MadaraParser(context, MangaParserSource.DAPROB, "daprob.com") { override val datePattern = "d 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DoujinHentaiNet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DoujinHentaiNet.kt index 6e769aca6..353e9d64b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DoujinHentaiNet.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DoujinHentaiNet.kt @@ -5,14 +5,14 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaPage -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* -import java.util.Locale +import java.util.* @MangaSourceParser("DOUJIN_HENTAI_NET", "DoujinHentai.net", "es", ContentType.HENTAI) internal class DoujinHentaiNet(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.DOUJIN_HENTAI_NET, "doujinhentai.net", 18) { + MadaraParser(context, MangaParserSource.DOUJIN_HENTAI_NET, "doujinhentai.net", 18) { override val datePattern = "dd MMM. yyyy" override val sourceLocale: Locale = Locale.ENGLISH diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DoujinShell.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DoujinShell.kt new file mode 100644 index 000000000..b023e5dee --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DoujinShell.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("DOUJINSHELL", "DoujinShell", "es", ContentType.HENTAI) +internal class DoujinShell(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.DOUJINSHELL, "www.doujinshell.com", 10) { + override val datePattern = "dd MMMM, yyyy" + override val listUrl = "/doujin" + override val tagPrefix = "/doujin-genero" + override val selectPage = "img:not(.aligncenter)" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DragonTranslationParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DragonTranslationParser.kt index e15dccfa7..b50f133d4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DragonTranslationParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/DragonTranslationParser.kt @@ -2,19 +2,14 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.ContentRating -import org.koitharu.kotatsu.parsers.model.Manga -import org.koitharu.kotatsu.parsers.model.MangaListFilter -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.model.MangaState -import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* import java.util.* @MangaSourceParser("DRAGONTRANSLATION", "Dragon Translation", "es") internal class DragonTranslationParser(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.DRAGONTRANSLATION, "dragontranslation.net", 30) { + MadaraParser(context, MangaParserSource.DRAGONTRANSLATION, "dragontranslation.net", 30) { override val selectPage = "div#chapter_imgs img" override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED) override val availableStates: Set = emptySet() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/EmperorScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/EmperorScan.kt index f8f589d29..72e248e57 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/EmperorScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/EmperorScan.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("EMPERORSCAN", "EmperorScan", "es") internal class EmperorScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.EMPERORSCAN, "emperorscan.com") + MadaraParser(context, MangaParserSource.EMPERORSCAN, "emperor-scan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HadesNoFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HadesNoFansub.kt index fff0fdbb1..d72abd5d1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HadesNoFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HadesNoFansub.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HADESNOFANSUB", "HadesNoFansub", "es") internal class HadesNoFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HADESNOFANSUB, "hadesnofansub.com", 10) { + MadaraParser(context, MangaParserSource.HADESNOFANSUB, "hadesnofansub.com", 10) { override val datePattern: String = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HaremScann.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HaremScann.kt new file mode 100644 index 000000000..7645372a4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HaremScann.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("HAREMSCANN", "HaremScann", "es") +internal class HaremScann(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.HAREMSCANN, "haremscann.es") { + override val postReq = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HerenScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HerenScan.kt index 539f96b1f..134a8322e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HerenScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HerenScan.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HERENSCAN", "HerenScan", "es") internal class HerenScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HERENSCAN, "herenscan.com") { + MadaraParser(context, MangaParserSource.HERENSCAN, "herenscan.com") { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HouseMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HouseMangas.kt index 82596c669..90f0043bf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HouseMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/HouseMangas.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HOUSEMANGAS", "HouseMangas", "es") internal class HouseMangas(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HOUSEMANGAS, "housemangas.com") + MadaraParser(context, MangaParserSource.HOUSEMANGAS, "housemangas.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Infrafandub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Infrafandub.kt index 16bfa7bb0..440772270 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Infrafandub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Infrafandub.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("INFRAFANDUB", "InfraFandub", "es") internal class Infrafandub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.INFRAFANDUB, "infrafandub.com", 10) { + MadaraParser(context, MangaParserSource.INFRAFANDUB, "infrafandub.com", 10) { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/InmoralNoFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/InmoralNoFansub.kt new file mode 100644 index 000000000..484787e3f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/InmoralNoFansub.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("INMORALNOFANSUB", "InmoralNoFansub", "es") +internal class InmoralNoFansub(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.INMORALNOFANSUB, "inmoralnofansub.xyz") { + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/JeazTwoBlueScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/JeazTwoBlueScans.kt new file mode 100644 index 000000000..a64a44f6b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/JeazTwoBlueScans.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("JEAZTWOBLUESCANS", "JeazTwoBlueScans", "es") +internal class JeazTwoBlueScans(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.JEAZTWOBLUESCANS, "jeaz.twobluescans.com") { + override val datePattern = "d MMMM, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Jobsibe.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Jobsibe.kt new file mode 100644 index 000000000..b7cdb2c87 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Jobsibe.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("JOBSIBE", "Jobsibe", "es") +internal class Jobsibe(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.JOBSIBE, "jobsibe.com") { + override val datePattern = "dd/MM" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Kenhuav2Scan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Kenhuav2Scan.kt index 302b46d2b..9dba1ce90 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Kenhuav2Scan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Kenhuav2Scan.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("KENHUAV2SCANK", "Kenhuav2Scan", "es") internal class Kenhuav2Scan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.KENHUAV2SCANK, "kenhuav2scan.com") + MadaraParser(context, MangaParserSource.KENHUAV2SCANK, "kenhuav2scan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KnightnoScanlation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KnightnoScanlation.kt index 26facc806..9b245018b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KnightnoScanlation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KnightnoScanlation.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("KNIGHTNOSCANLATION", "Knightno Scanlation", "es") +@MangaSourceParser("KNIGHTNOSCANLATION", "TwoBlueScans", "es") internal class KnightnoScanlation(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.KNIGHTNOSCANLATION, "knightnoscanlation.com") { + MadaraParser(context, MangaParserSource.KNIGHTNOSCANLATION, "kns.twobluescans.com") { override val listUrl = "sr/" override val tagPrefix = "generos/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KoinoboriScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KoinoboriScan.kt index a60e028e6..64a1ddc19 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KoinoboriScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/KoinoboriScan.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("KOINOBORISCAN", "KoinoboriScan", "es") internal class KoinoboriScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.KOINOBORISCAN, "koinoboriscan.com") { + MadaraParser(context, MangaParserSource.KOINOBORISCAN, "koinoboriscan.com") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LectorManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LectorManga.kt index cad3a6df5..0d1c07095 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LectorManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LectorManga.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LECTORMANGA", "LectorManga", "es") internal class LectorManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LECTORMANGA, "www.lectormanga.lat") { + MadaraParser(context, MangaParserSource.LECTORMANGA, "www.lectormanga.lat") { override val listUrl = "biblioteca/" override val tagPrefix = "comics-genero/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Lectorunitoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Lectorunitoon.kt index ed3ab8207..868043c60 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Lectorunitoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Lectorunitoon.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("LECTORUNITOON", "LectoruniToon", "es") internal class Lectorunitoon(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LECTORUNITOON, "lectorunitoon.com", 10) { + MadaraParser(context, MangaParserSource.LECTORUNITOON, "lectorunitoon.com", 10) { override val tagPrefix = "generos/" override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Lectorunm.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Lectorunm.kt index 76dfcbbdd..1954bb45a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Lectorunm.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Lectorunm.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LECTORUNM", "Lectorunm.life", "es") internal class Lectorunm(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LECTORUNM, "lectorunm.life") { + MadaraParser(context, MangaParserSource.LECTORUNM, "lectorunm.life") { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LkScanlation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LkScanlation.kt index e26fe4f88..10254486d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LkScanlation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/LkScanlation.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("LKSCANLATION", "LkScanlation", "es") internal class LkScanlation(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LKSCANLATION, "lkscanlation.com") { + MadaraParser(context, MangaParserSource.LKSCANLATION, "lkscanlation.com") { override val tagPrefix = "manhwa-genre/" override val listUrl = "manhwa/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaCrab.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaCrab.kt index 2bbbcab46..5104b89fc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaCrab.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaCrab.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGA_CRAB", "MangaCrab", "es") internal class MangaCrab(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA_CRAB, "httpmangacrab2.com") { + MadaraParser(context, MangaParserSource.MANGA_CRAB, "wikicrab.xyz") { override val datePattern = "dd/MM/yyyy" override val tagPrefix = "manga-genero/" override val listUrl = "series/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaLand.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaLand.kt index 658eca5a8..6ecc83be2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaLand.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaLand.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGALAND", "MangaLand", "es", ContentType.HENTAI) internal class MangaLand(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGALAND, "mangaland.net") + MadaraParser(context, MangaParserSource.MANGALAND, "mangaland.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaMundoDrama.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaMundoDrama.kt index 9ef0d056a..7f38beb3b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaMundoDrama.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangaMundoDrama.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAMUNDODRAMA", "MangaMundoDrama", "es") internal class MangaMundoDrama(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAMUNDODRAMA, "manga.mundodrama.site") { + MadaraParser(context, MangaParserSource.MANGAMUNDODRAMA, "manga.mundodrama.site") { override val listUrl = "mg/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangasNoSekai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangasNoSekai.kt index 4d737e2f9..567a922dc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangasNoSekai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MangasNoSekai.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGASNOSEKAI", "MangasNoSekai", "es") internal class MangasNoSekai(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGASNOSEKAI, "mangasnosekai.com") + MadaraParser(context, MangaParserSource.MANGASNOSEKAI, "mangasnosekai.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mangaxico.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mangaxico.kt index 9d24fff8e..6f5c21b1f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mangaxico.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mangaxico.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAXICO", "MangaXico", "es", ContentType.HENTAI) internal class Mangaxico(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAXICO, "mangaxico.com", 24) + MadaraParser(context, MangaParserSource.MANGAXICO, "mangaxico.com", 24) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaEs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaEs.kt index c45b00239..c1529aa2f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaEs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaEs.kt @@ -3,14 +3,19 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import org.koitharu.kotatsu.parsers.util.* +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow import java.text.SimpleDateFormat @MangaSourceParser("MANHWA_ES", "Manhwa-Es", "es") internal class ManhwaEs(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWA_ES, "manhwa-es.com", 10) { + MadaraParser(context, MangaParserSource.MANHWA_ES, "manhwa-es.com", 10) { override val withoutAjax = true override val datePattern = "MM/dd" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaLatino.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaLatino.kt index 30c546d65..0a2127c0c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaLatino.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/ManhwaLatino.kt @@ -6,14 +6,14 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat @MangaSourceParser("MANHWALATINO", "ManhwaLatino", "es", ContentType.HENTAI) internal class ManhwaLatino(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWALATINO, "manhwa-latino.com", 10) { + MadaraParser(context, MangaParserSource.MANHWALATINO, "manhwa-latino.com", 10) { override val datePattern = "MM/dd" override val withoutAjax = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MantrazScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MantrazScan.kt index 3b015999b..93d945a00 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MantrazScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MantrazScan.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANTRAZSCAN", "MantrazScan", "es") internal class MantrazScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANTRAZSCAN, "mantrazscan.com") { + MadaraParser(context, MangaParserSource.MANTRAZSCAN, "mantrazscan.com") { override val datePattern = "dd/MM/yyyy" override val tagPrefix = "generos-de-manga/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Marmota.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Marmota.kt new file mode 100644 index 000000000..6c5f781a1 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Marmota.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MARMOTA", "Marmota", "es", ContentType.COMICS) +internal class Marmota(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MARMOTA, "marmota.me", 48) { + override val datePattern = "d 'de' MMMMM 'de' yyyy" + override val tagPrefix = "genero/" + override val listUrl = "comic/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MhScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MhScans.kt index 6eaf62d88..dd22ebd83 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MhScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MhScans.kt @@ -2,11 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MHSCANS", "MhScans", "es") internal class MhScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MHSCANS, "mhscans.com") { + MadaraParser(context, MangaParserSource.MHSCANS, "mh.twobluescans.com") { override val datePattern = "d 'de' MMMMM 'de' yyyy" + override val listUrl = "series/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mi2MangaEs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mi2MangaEs.kt index 7b8524063..d47789f13 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mi2MangaEs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Mi2MangaEs.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MI2MANGAES", "Mi2MangaEs", "es") internal class Mi2MangaEs(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MI2MANGAES, "es.mi2manga.com", 10) + MadaraParser(context, MangaParserSource.MI2MANGAES, "es.mi2manga.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MonarcaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MonarcaManga.kt index 48b58636a..8f175c4a3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MonarcaManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MonarcaManga.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MONARCAMANGA", "MonarcaManga", "es") internal class MonarcaManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MONARCAMANGA, "monarcamanga.com") { + MadaraParser(context, MangaParserSource.MONARCAMANGA, "visormonarca.com") { override val tagPrefix = "manga-generos/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MundoManhwa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MundoManhwa.kt index f41074f70..21f5aa56d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MundoManhwa.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/MundoManhwa.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MUNDO_MANHWA", "MundoManhwa", "es") internal class MundoManhwa(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MUNDO_MANHWA, "mundomanhwa.com", 10) + MadaraParser(context, MangaParserSource.MUNDO_MANHWA, "mundomanhwa.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/NoblesseTranslations.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/NoblesseTranslations.kt index 4462e6f71..5b4471e9e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/NoblesseTranslations.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/NoblesseTranslations.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NOBLESSETRANSLATIONS", "NoblesseTranslations", "es") internal class NoblesseTranslations(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NOBLESSETRANSLATIONS, "www.noblessev1.com") + MadaraParser(context, MangaParserSource.NOBLESSETRANSLATIONS, "www.noblessev1.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Panconcola.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Panconcola.kt new file mode 100644 index 000000000..4ce4b204f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Panconcola.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("PANCONCOLA", "Panconcola", "es") +internal class Panconcola(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.PANCONCOLA, "panconcola.com") { + override val datePattern = "dd/MM/yyyy" + override val tagPrefix = "generos-de-manga/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScan.kt index 4ef138727..90f04a3f0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScan.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("RAGNAROKSCAN", "RagnarokScan", "es") internal class RagnarokScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.RAGNAROKSCAN, "ragnarokscan.com") { + MadaraParser(context, MangaParserSource.RAGNAROKSCAN, "ragnarokscan.com") { override val stylePage = "" override val listUrl = "series/" override val tagPrefix = "genero/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScanlation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScanlation.kt index 94030238d..bb067dfb9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScanlation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RagnarokScanlation.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("RAGNAROKSCANLATION", "RagnarokScanlation", "es") internal class RagnarokScanlation(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.RAGNAROKSCANLATION, "ragnarokscanlation.net") + MadaraParser(context, MangaParserSource.RAGNAROKSCANLATION, "ragnarokscanlation.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RichtoScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RichtoScan.kt index 6ccdaf2c1..30ffc78a1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RichtoScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RichtoScan.kt @@ -2,13 +2,13 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import java.util.Locale +import java.util.* @MangaSourceParser("RICHTOSCAN", "RichtoScan", "es") internal class RichtoScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.RICHTOSCAN, "richtoscan.com") { + MadaraParser(context, MangaParserSource.RICHTOSCAN, "richtoscan.com") { override val tagPrefix = "manga-generos/" override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RightdarkScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RightdarkScan.kt index 8e18d93b2..546a4de20 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RightdarkScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/RightdarkScan.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("RIGHTDARKSCAN", "RightDarkScan", "es") internal class RightdarkScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.RIGHTDARKSCAN, "rightdark-scan.com", 10) + MadaraParser(context, MangaParserSource.RIGHTDARKSCAN, "rightdark-scan.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SamuraiScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SamuraiScan.kt index 5e9a8be16..b1ffbfbfb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SamuraiScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SamuraiScan.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SAMURAISCAN", "SamuraiScan", "es") internal class SamuraiScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SAMURAISCAN, "samuraiscan.com", 10) { + MadaraParser(context, MangaParserSource.SAMURAISCAN, "samurai.ragnarokscanlation.org", 10) { override val listUrl = "leer/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SapphireScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SapphireScan.kt new file mode 100644 index 000000000..84dec32c2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/SapphireScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("SAPPHIRESCAN", "SapphireScan", "es") +internal class SapphireScan(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.SAPPHIRESCAN, "sapphirescan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Scambertraslator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Scambertraslator.kt index 271c2bfe7..57495982a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Scambertraslator.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Scambertraslator.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SCAMBERTRASLATOR", "ScamberTraslator", "es") internal class Scambertraslator(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SCAMBERTRASLATOR, "scambertraslator.com") { + MadaraParser(context, MangaParserSource.SCAMBERTRASLATOR, "scambertraslator.com") { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Stickhorse.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Stickhorse.kt index a308437b4..9765a70ca 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Stickhorse.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Stickhorse.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("STICKHORSE", "StickHorse", "es") internal class Stickhorse(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.STICKHORSE, "www.stickhorse.cl") { + MadaraParser(context, MangaParserSource.STICKHORSE, "www.stickhorse.cl") { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TaurusManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TaurusManga.kt index 79ef1fd5a..11b645eb5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TaurusManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TaurusManga.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TAURUSMANGA", "TaurusManga", "es") internal class TaurusManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TAURUSMANGA, "taurusmanga.com") { + MadaraParser(context, MangaParserSource.TAURUSMANGA, "taurusmanga.com") { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TerritorioLeal.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TerritorioLeal.kt new file mode 100644 index 000000000..dfe5c5aaf --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TerritorioLeal.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.es + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("TERRITORIOLEAL", "TerritorioLeal", "es") +internal class TerritorioLeal(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.TERRITORIOLEAL, "territorioleal.com") { + override val datePattern = "d 'de' MMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TmoManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TmoManga.kt index 3893d6dbb..43fadcbc4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TmoManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TmoManga.kt @@ -6,11 +6,11 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* -import java.util.EnumSet +import java.util.* @MangaSourceParser("TMOMANGA", "TmoManga", "es") internal class TmoManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TMOMANGA, "tmomanga.com") { + MadaraParser(context, MangaParserSource.TMOMANGA, "tmomanga.com") { override val tagPrefix = "genero/" override val listUrl = "biblioteca/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TopComicPorno.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TopComicPorno.kt index 24435d702..7512d7a79 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TopComicPorno.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/TopComicPorno.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TOPCOMICPORNO", "TopComicPorno", "es", ContentType.HENTAI) internal class TopComicPorno(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TOPCOMICPORNO, "topcomicporno.com", 18) { + MadaraParser(context, MangaParserSource.TOPCOMICPORNO, "topcomicporno.com", 18) { override val datePattern = "MMM dd, yy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Vermanhwa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Vermanhwa.kt index e087042c4..176424b3c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Vermanhwa.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/es/Vermanhwa.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("VERMANHWA", "Vermanhwa", "es", ContentType.HENTAI) internal class Vermanhwa(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.VERMANHWA, "vermanhwa.com", 10) { + MadaraParser(context, MangaParserSource.VERMANHWA, "vermanhwa.com", 10) { override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/AstralManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/AstralManga.kt index 434e62517..ad51623a7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/AstralManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/AstralManga.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ASTRALMANGA", "AstralManga", "fr") internal class AstralManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ASTRALMANGA, "astral-manga.fr") { + MadaraParser(context, MangaParserSource.ASTRALMANGA, "astral-manga.fr") { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/BlueSolo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/BlueSolo.kt index 36b650dc5..c1b25732f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/BlueSolo.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/BlueSolo.kt @@ -3,12 +3,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @Broken @MangaSourceParser("BLUESOLO", "BlueSolo", "fr") internal class BlueSolo(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BLUESOLO, "www1.bluesolo.org", 10) { + MadaraParser(context, MangaParserSource.BLUESOLO, "www1.bluesolo.org", 10) { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/EpsilonSoft.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/EpsilonSoft.kt new file mode 100644 index 000000000..cc7a365e0 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/EpsilonSoft.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.fr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("EPSILONSOFT", "EpsilonSoft", "fr") +internal class EpsilonSoft(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.EPSILONSOFT, "epsilonsoft.to") { + override val datePattern = "dd/MM/yy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EpsilonscanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/EpsilonscanParser.kt similarity index 52% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EpsilonscanParser.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/EpsilonscanParser.kt index 563d3a056..1c666dd57 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EpsilonscanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/EpsilonscanParser.kt @@ -1,13 +1,13 @@ -package org.koitharu.kotatsu.parsers.site.mangareader.fr +package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("EPSILONSCAN", "EpsilonScan", "fr", ContentType.HENTAI) internal class EpsilonscanParser(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.EPSILONSCAN, "epsilonscan.fr") { - override val withoutAjax = true - override val isTagsExclusionSupported = false + MadaraParser(context, MangaParserSource.EPSILONSCAN, "epsilonscan.to") { + override val datePattern = "dd/MM/yy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/FrScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/FrScan.kt index abfbd96a7..488b89c71 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/FrScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/FrScan.kt @@ -4,13 +4,13 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("FRSCAN", "Fr-Scan", "fr") internal class FrScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.FRSCAN, "fr-scan.com") { + MadaraParser(context, MangaParserSource.FRSCAN, "fr-scan.com") { override val stylePage = "" override suspend fun getPages(chapter: MangaChapter): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HarmonyScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HarmonyScan.kt new file mode 100644 index 000000000..313c58a75 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HarmonyScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.madara.fr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("HARMONYSCAN", "HarmonyScan", "fr") +internal class HarmonyScan(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.HARMONYSCAN, "harmony-scan.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiOrigines.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiOrigines.kt index 1a10bc906..3c59cef48 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiOrigines.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiOrigines.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HENTAIORIGINES", "HentaiOrigines", "fr", ContentType.HENTAI) internal class HentaiOrigines(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HENTAIORIGINES, "hentai-origines.fr") + MadaraParser(context, MangaParserSource.HENTAIORIGINES, "hentai-origines.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiScantradVf.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiScantradVf.kt index be5edd614..4e719ea38 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiScantradVf.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HentaiScantradVf.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HENTAISCANTRADVF", "Hentai-Scantrad", "fr", ContentType.HENTAI) internal class HentaiScantradVf(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HENTAISCANTRADVF, "hentai.scantrad-vf.cc") { + MadaraParser(context, MangaParserSource.HENTAISCANTRADVF, "hentai.scantrad-vf.cc") { override val datePattern = "d MMMM, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Hentaizone.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Hentaizone.kt index fa78dcaf2..4eb6091a4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Hentaizone.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Hentaizone.kt @@ -6,15 +6,18 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import org.koitharu.kotatsu.parsers.util.* +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.parseFailed import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("HENTAIZONE", "HentaiZone", "fr", ContentType.HENTAI) internal class Hentaizone(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HENTAIZONE, "hentaizone.xyz", pageSize = 10) { + MadaraParser(context, MangaParserSource.HENTAIZONE, "hentaizone.xyz", pageSize = 10) { override val datePattern = "MMM d, yyyy" override val sourceLocale: Locale = Locale.FRENCH diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HhentaiFr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HhentaiFr.kt index a50721404..876c95114 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HhentaiFr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/HhentaiFr.kt @@ -3,14 +3,14 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.domain import org.koitharu.kotatsu.parsers.util.insertCookies @MangaSourceParser("HHENTAIFR", "H-Hentai", "fr", ContentType.HENTAI) internal class HhentaiFr(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HHENTAIFR, "hhentai.fr") { + MadaraParser(context, MangaParserSource.HHENTAIFR, "hhentai.fr") { init { context.cookieJar.insertCookies( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/LunarHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/LunarHentai.kt index bedfade9a..032663f4a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/LunarHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/LunarHentai.kt @@ -4,12 +4,12 @@ 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.MangaSource +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, MangaSource.LUNARHENTAI, "hentai.lunarscans.fr") { + MadaraParser(context, MangaParserSource.LUNARHENTAI, "hentai.lunarscans.fr") { override val datePattern = "dd MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaHub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaHub.kt index 4b0182c31..2a15422c6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaHub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaHub.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAHUB", "MangaHub", "fr", ContentType.HENTAI) internal class MangaHub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAHUB, "mangahub.fr") { + MadaraParser(context, MangaParserSource.MANGAHUB, "mangahub.fr") { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaScantrad.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaScantrad.kt index 28e1f71a8..dfdb12a08 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaScantrad.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangaScantrad.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGA_SCANTRAD", "MangaScantrad.io", "fr") internal class MangaScantrad(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGA_SCANTRAD, "manga-scantrad.io") { + MadaraParser(context, MangaParserSource.MANGA_SCANTRAD, "manga-scantrad.io") { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOrigines.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOrigines.kt index 040a1fbeb..3b9794ecc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOrigines.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOrigines.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGASORIGINES", "MangasOrigines.fr", "fr") internal class MangasOrigines(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGASORIGINES, "mangas-origines.fr") { + MadaraParser(context, MangaParserSource.MANGASORIGINES, "mangas-origines.fr") { override val datePattern = "dd/MM/yyyy" override val tagPrefix = "manga-genres/" override val listUrl = "oeuvre/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOriginesUnofficial.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOriginesUnofficial.kt index 49ae6c1aa..309872fbc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOriginesUnofficial.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/MangasOriginesUnofficial.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGASORIGINESUNOFFICIAL", "MangasOrigines.xyz", "fr") internal class MangasOriginesUnofficial(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGASORIGINESUNOFFICIAL, "mangas-origines.xyz") + MadaraParser(context, MangaParserSource.MANGASORIGINESUNOFFICIAL, "mangas-origines.xyz") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/PantheonScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/PantheonScan.kt index 0f1a33eaa..a2800caed 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/PantheonScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/PantheonScan.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("PANTHEONSCAN", "PantheonScan.com", "fr") internal class PantheonScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PANTHEONSCAN, "pantheon-scan.com") { + MadaraParser(context, MangaParserSource.PANTHEONSCAN, "pantheon-scan.com") { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/RaijinScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/RaijinScans.kt index fac63c644..1e12d4426 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/RaijinScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/RaijinScans.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("RAIJINSCANS", "RaijinScans", "fr") internal class RaijinScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.RAIJINSCANS, "raijinscans.fr") { + MadaraParser(context, MangaParserSource.RAIJINSCANS, "raijinscans.fr") { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Readergen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Readergen.kt index a9f1640d2..ccd49d294 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Readergen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/Readergen.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("READERGEN", "ReaderGen", "fr") internal class Readergen(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.READERGEN, "fr.readergen.fr", 18) + MadaraParser(context, MangaParserSource.READERGEN, "fr.readergen.fr", 18) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ReaperScansFr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ReaperScansFr.kt index a28a4c69f..77c6b0da2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ReaperScansFr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ReaperScansFr.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("REAPERSCANS_FR", "ReaperScans.fr", "fr") internal class ReaperScansFr(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.REAPERSCANS_FR, "reaperscans.fr") { + MadaraParser(context, MangaParserSource.REAPERSCANS_FR, "reaperscans.fr") { override val datePattern = "MM/dd/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentai.kt new file mode 100644 index 000000000..ad58a3f6e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentai.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.fr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("SCANHENTAI", "ScanHentai", "fr", ContentType.HENTAI) +internal class ScanHentai(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.SCANHENTAI, "scan-hentai.fr") { + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentaiMenu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentaiMenu.kt index ea88c6c9f..fcd6f8662 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentaiMenu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScanHentaiMenu.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.madara.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SCANHENTAIMENU", "ScanHentai.Menu", "fr", ContentType.HENTAI) internal class ScanHentaiMenu(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SCANHENTAIMENU, "x-manga.net") + MadaraParser(context, MangaParserSource.SCANHENTAIMENU, "x-manga.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt index a172385ee..5d0c8e82e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ScantradVf.kt @@ -3,13 +3,13 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @Broken @MangaSourceParser("SCANTRADVF", "Scantrad-Vf", "fr") internal class ScantradVf(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SCANTRADVF, "scantrad-vf.me") { + MadaraParser(context, MangaParserSource.SCANTRADVF, "scantrad-vf.me") { override val datePattern = "d MMMM yyyy" override val tagPrefix = "genre/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ToonFr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ToonFr.kt index 8c96e8e7a..df1f26804 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ToonFr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/fr/ToonFr.kt @@ -5,14 +5,14 @@ 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.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat @MangaSourceParser("TOONFR", "ToonFr", "fr", ContentType.HENTAI) internal class ToonFr(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TOONFR, "toonfr.com") { + MadaraParser(context, MangaParserSource.TOONFR, "toonfr.com") { override val tagPrefix = "webtoon-genre/" override val listUrl = "webtoon/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/BirdToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/BirdToon.kt index 75bf6e6e9..406f4cc5a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/BirdToon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/BirdToon.kt @@ -3,13 +3,13 @@ package org.koitharu.kotatsu.parsers.site.madara.id import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import java.util.Locale +import java.util.* @MangaSourceParser("BIRDTOON", "BirdToon", "id", ContentType.HENTAI) internal class BirdToon(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BIRDTOON, "birdtoon.net", 10) { + MadaraParser(context, MangaParserSource.BIRDTOON, "birdtoon.net", 10) { override val sourceLocale: Locale = Locale.ENGLISH override val tagPrefix = "komik-genre/" override val listUrl = "komik/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Hwago.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Hwago.kt index a1b53cd7a..9d96a77a0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Hwago.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Hwago.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.id import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HWAGO", "Hwago", "id") internal class Hwago(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HWAGO, "hwago.org") { + MadaraParser(context, MangaParserSource.HWAGO, "hwago.org") { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Indo18h.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Indo18h.kt index 894d2db76..bc2e33b7f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Indo18h.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Indo18h.kt @@ -1,13 +1,15 @@ package org.koitharu.kotatsu.parsers.site.madara.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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("INDO18H", "Indo18h", "id", ContentType.HENTAI) internal class Indo18h(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.INDO18H, "indo18h.com", 24) { + MadaraParser(context, MangaParserSource.INDO18H, "indo18h.com", 24) { override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/KlikManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/KlikManga.kt index 596acb462..de1081f84 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/KlikManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/KlikManga.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.id import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("KLIKMANGA", "KlikManga", "id", ContentType.HENTAI) internal class KlikManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.KLIKMANGA, "klikmanga.id", 36) { + MadaraParser(context, MangaParserSource.KLIKMANGA, "klikmanga.id", 36) { override val tagPrefix = "genre/" override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/ManhwaHub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/ManhwaHub.kt index 5cf93d8e5..338bcfd90 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/ManhwaHub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/ManhwaHub.kt @@ -9,7 +9,7 @@ import java.util.* @MangaSourceParser("MANHWAHUB", "ManhwaHub", "id", ContentType.HENTAI) internal class ManhwaHub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHWAHUB, "manhwahub.net", 40) { + MadaraParser(context, MangaParserSource.MANHWAHUB, "manhwahub.net", 40) { override val tagPrefix = "genre/" override val datePattern = "MMMM d, yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Mgkomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Mgkomik.kt index b198ef635..58e37bc24 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Mgkomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Mgkomik.kt @@ -3,14 +3,14 @@ package org.koitharu.kotatsu.parsers.site.madara.id import okhttp3.Headers import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import java.util.Locale +import java.util.* import kotlin.random.Random @MangaSourceParser("MGKOMIK", "MgKomik", "id") internal class Mgkomik(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MGKOMIK, "mgkomik.id", 20) { + MadaraParser(context, MangaParserSource.MGKOMIK, "mgkomik.id", 20) { override val tagPrefix = "genres/" override val listUrl = "komik/" override val datePattern = "dd MMM yy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/PojokManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/PojokManga.kt index 72390f6f3..0d089a2f8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/PojokManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/PojokManga.kt @@ -2,13 +2,13 @@ package org.koitharu.kotatsu.parsers.site.madara.id import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import java.util.* @MangaSourceParser("POJOKMANGA", "PojokManga", "id") internal class PojokManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.POJOKMANGA, "pojokmanga.id") { + MadaraParser(context, MangaParserSource.POJOKMANGA, "pojokmanga.org") { override val tagPrefix = "komik-genre/" override val listUrl = "komik/" override val datePattern = "MMM d, yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt index 43e2d3090..ebcdada92 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Shinigami.kt @@ -2,14 +2,13 @@ package org.koitharu.kotatsu.parsers.site.madara.id import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import java.util.* @MangaSourceParser("SHINIGAMI", "Shinigami", "id") internal class Shinigami(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SHINIGAMI, "shinigamitoon.id", 10) { - + MadaraParser(context, MangaParserSource.SHINIGAMI, "shinigami03.com", 10) { override val tagPrefix = "genre/" override val listUrl = "series/" override val sourceLocale: Locale = Locale.ENGLISH diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/WorldManhwas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/WorldManhwas.kt index b911c32bb..ebf9af46c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/WorldManhwas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/WorldManhwas.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.id import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("WORLDMANHWAS", "WorldManhwas", "id", ContentType.HENTAI) internal class WorldManhwas(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.WORLDMANHWAS, "worldmanhwas.zone", 10) { + MadaraParser(context, MangaParserSource.WORLDMANHWAS, "worldmanhwas.zone", 10) { override val tagPrefix = "genre/" override val listUrl = "komik/" override val datePattern = "d MMMM yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/XManhwa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/XManhwa.kt new file mode 100644 index 000000000..3d18ba7f2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/XManhwa.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.madara.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import java.util.Locale + +@MangaSourceParser("XMANHWA", "XManhwa", "id", ContentType.HENTAI) +internal class XManhwa(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.XMANHWA, "www.xmanhwa.me", 10) { + override val sourceLocale: Locale = Locale.ENGLISH + override val selectPage = "img" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Yubikiri.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Yubikiri.kt new file mode 100644 index 000000000..6becb8920 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/Yubikiri.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("YUBIKIRI", "Yubikiri", "id") +internal class Yubikiri(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.YUBIKIRI, "yubikiri.my.id", 18) { + override val tagPrefix = "genre/" + override val datePattern = "d MMMM" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/YuraManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/YuraManga.kt new file mode 100644 index 000000000..cee2681df --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/id/YuraManga.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.id + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import java.util.Locale + +@MangaSourceParser("YURAMANGA", "YuraManga", "id") +internal class YuraManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.YURAMANGA, "yuramanga.my.id") { + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/it/Beyondtheataraxia.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/it/Beyondtheataraxia.kt index 5f55f35d2..5d0c836a0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/it/Beyondtheataraxia.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/it/Beyondtheataraxia.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.it import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("BEYONDTHEATARAXIA", "Beyond The Ataraxia", "it") internal class Beyondtheataraxia(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BEYONDTHEATARAXIA, "www.beyondtheataraxia.com", 10) { + MadaraParser(context, MangaParserSource.BEYONDTHEATARAXIA, "www.beyondtheataraxia.com", 10) { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/MangaFenxi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/MangaFenxi.kt new file mode 100644 index 000000000..8f1a790f9 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/MangaFenxi.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.madara.ja + +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.Locale + +@MangaSourceParser("MANGAFENXI", "MangaFenxi", "ja") +internal class MangaFenxi(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGAFENXI, "mangafenxi.net", 40) { + override val sourceLocale: Locale = Locale.ENGLISH + override val tagPrefix = "genres/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawXz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawXz.kt new file mode 100644 index 000000000..47b970835 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ja/RawXz.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.ja + +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("RAWXZ", "RawXz", "ja") +internal class RawXz(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.RAWXZ, "rawxz.si") { + override val listUrl = "jp-manga/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ko/RawDex.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ko/RawDex.kt index cf80860b5..5784208ce 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ko/RawDex.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ko/RawDex.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.ko import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import java.util.* @MangaSourceParser("RAWDEX", "RawDex", "ko", ContentType.HENTAI) internal class RawDex(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.RAWDEX, "rawdex.net", 40) { + MadaraParser(context, MangaParserSource.RAWDEX, "rawdex.net", 40) { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pl/MangaHona.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pl/MangaHona.kt new file mode 100644 index 000000000..7e88141f3 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pl/MangaHona.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.madara.pl + +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("MANGAHONA", "MangaHona", "pl") +internal class MangaHona(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGAHONA, "mangahona.pl") { + override val datePattern = "yyyy-MM-dd" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/AloneScanlator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/AloneScanlator.kt new file mode 100644 index 000000000..d5495eba6 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/AloneScanlator.kt @@ -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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ALONESCANLATOR", "AloneScanlator", "pt") +internal class AloneScanlator(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ALONESCANLATOR, "alonescanlator.com.br", 10) { + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ApenasmaisumYaoi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ApenasmaisumYaoi.kt index e2f2cd6ad..78d1abb83 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ApenasmaisumYaoi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ApenasmaisumYaoi.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("APENASMAISUMYAOI", "Apenasmaisum Yaoi", "pt", ContentType.HENTAI) internal class ApenasmaisumYaoi(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.APENASMAISUMYAOI, "apenasmaisumyaoi.com") { + MadaraParser(context, MangaParserSource.APENASMAISUMYAOI, "apenasmaisumyaoi.com") { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt new file mode 100644 index 000000000..caf8bc30b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArgosComics.kt @@ -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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ARGOSCOMICS", "ArgosComics", "pt") +internal class ArgosComics(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ARGOSCOMICS, "argoscomics.com.br") { + override val datePattern: String = "d 'de' MMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArthurScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArthurScan.kt index d4a695251..7cc48a448 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArthurScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ArthurScan.kt @@ -2,9 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ARTHUR_SCAN", "ArthurScan", "pt") internal class ArthurScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ARTHUR_SCAN, "arthurscan.xyz") + MadaraParser(context, MangaParserSource.ARTHUR_SCAN, "arthurscan.xyz") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Atemporal.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Atemporal.kt new file mode 100644 index 000000000..b67ff8c11 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Atemporal.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("ATEMPORAL", "Atemporal", "pt") +internal class Atemporal(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ATEMPORAL, "atemporal.cloud") { + override val datePattern: String = "d 'de' MMMM 'de' yyyy" + override val withoutAjax = true +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/BorutoExplorer.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/BorutoExplorer.kt index 549f6ccfb..070906caf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/BorutoExplorer.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/BorutoExplorer.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("BORUTOEXPLORER", "BorutoExplorer", "pt") internal class BorutoExplorer(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BORUTOEXPLORER, "leitor.borutoexplorer.com.br", 10) { + MadaraParser(context, MangaParserSource.BORUTOEXPLORER, "leitor.borutoexplorer.com.br", 10) { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/BurningScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/BurningScans.kt index d340bcec6..d19f7a425 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/BurningScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/BurningScans.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("BURNINGSCANS", "BurningScans", "pt") internal class BurningScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BURNINGSCANS, "burningscans.com") { + MadaraParser(context, MangaParserSource.BURNINGSCANS, "burningscans.com") { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Cabaredowatame.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Cabaredowatame.kt index 752086403..834a17025 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Cabaredowatame.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Cabaredowatame.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("CABAREDOWATAME", "DessertScan", "pt") internal class Cabaredowatame(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.CABAREDOWATAME, "cabaredowatame.site", 10) { + MadaraParser(context, MangaParserSource.CABAREDOWATAME, "cabaredowatame.site", 10) { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CafecomYaoi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CafecomYaoi.kt index c35a12916..9a64f03fa 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CafecomYaoi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CafecomYaoi.kt @@ -2,12 +2,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.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("CAFECOMYAOI", "CafecomYaoi", "pt") +@MangaSourceParser("CAFECOMYAOI", "CafecomYaoi", "pt", ContentType.HENTAI) internal class CafecomYaoi(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.CAFECOMYAOI, "cafecomyaoi.com.br") { + MadaraParser(context, MangaParserSource.CAFECOMYAOI, "cafecomyaoi.com.br") { override val datePattern = "dd/MM/yyyy" - override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CeriseScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CeriseScans.kt index 7cc0f886a..6dc642a7f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CeriseScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CeriseScans.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("CERISE_SCANS", "CeriseScans", "pt") internal class CeriseScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.CERISE_SCANS, "cerisetoon.com") { + MadaraParser(context, MangaParserSource.CERISE_SCANS, "cerisetoon.com") { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CrystalScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CrystalScan.kt index 993701dbf..2f3dfd1f8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CrystalScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CrystalScan.kt @@ -2,9 +2,10 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("CRYSTALSCAN", "CrystalScan", "pt") +@MangaSourceParser("CRYSTALSCAN", "CrystalComics", "pt") internal class CrystalScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.CRYSTALSCAN, "crystalscan.net") + MadaraParser(context, MangaParserSource.CRYSTALSCAN, "crystalcomics.com") + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CvnScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CvnScan.kt index 709d92e22..90952a595 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CvnScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/CvnScan.kt @@ -3,9 +3,9 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("CVNSCAN", "CvnScan", "pt", ContentType.HENTAI) internal class CvnScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.CVNSCAN, "cvnscan.com") + MadaraParser(context, MangaParserSource.CVNSCAN, "cvnscan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DemonSect.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DemonSect.kt index d2c75cabf..ba482fe36 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DemonSect.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DemonSect.kt @@ -2,9 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("DEMONSECT", "DemonSect", "pt") internal class DemonSect(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.DEMONSECT, "dsectcomics.org", 10) + MadaraParser(context, MangaParserSource.DEMONSECT, "dsectcomics.org", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DianxiaTrads.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DianxiaTrads.kt index aedd45ea2..3ec87380e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DianxiaTrads.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DianxiaTrads.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("DIANXIATRADS", "DianxiaTrads", "pt") internal class DianxiaTrads(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.DIANXIATRADS, "dianxiatrads.com", 10) { + MadaraParser(context, MangaParserSource.DIANXIATRADS, "dianxiatrads.com", 10) { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DreamScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DreamScan.kt new file mode 100644 index 000000000..6d85679d3 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/DreamScan.kt @@ -0,0 +1,10 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("DREAMSCAN", "DreamScan", "pt") +internal class DreamScan(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.DREAMSCAN, "dreamscan.com.br") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/EuphoriaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/EuphoriaScan.kt new file mode 100644 index 000000000..3a1dba16c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/EuphoriaScan.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("EUPHORIASCAN", "EuphoriaScan", "pt", ContentType.HENTAI) +internal class EuphoriaScan(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.EUPHORIASCAN, "euphoriascan.com", 10) { + override val datePattern: String = "dd 'de' MMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FayScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FayScans.kt index cdd1de863..f0ef0a979 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FayScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FayScans.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("FAYSCANS", "FayScans", "pt") internal class FayScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.FAYSCANS, "fayscans.net") { + MadaraParser(context, MangaParserSource.FAYSCANS, "fayscans.net") { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Fbsquads.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Fbsquads.kt index 794130f1f..d25ac9d34 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Fbsquads.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Fbsquads.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("FBSQUADS", "FbSquads", "pt", ContentType.HENTAI) internal class Fbsquads(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.FBSQUADS, "fbsscan.com") { + MadaraParser(context, MangaParserSource.FBSQUADS, "fbsscan.com") { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FenixProject.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FenixProject.kt new file mode 100644 index 000000000..6be811328 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FenixProject.kt @@ -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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("FENIXPROJECT", "FenixProject", "pt") +internal class FenixProject(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.FENIXPROJECT, "fenixproject.xyz", 10) { + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FlowerManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FlowerManga.kt index 62b0d7bae..d51539c14 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FlowerManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FlowerManga.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("FLOWERMANGA", "FlowerManga", "pt") internal class FlowerManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.FLOWERMANGA, "flowermangas.com", 24) { + MadaraParser(context, MangaParserSource.FLOWERMANGA, "flowermangas.com", 24) { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FoxWhite.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FoxWhite.kt index 573e11a59..bd4ed95fd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FoxWhite.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/FoxWhite.kt @@ -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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("FOXWHITE", "FoxWhite", "pt") internal class FoxWhite(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.FOXWHITE, "foxwhite.com.br") + MadaraParser(context, MangaParserSource.FOXWHITE, "foxwhite.com.br") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GalinhaSamurai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GalinhaSamurai.kt index 063c82000..33e8b7fe8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GalinhaSamurai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GalinhaSamurai.kt @@ -2,11 +2,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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("GALINHASAMURAI", "Galinha Samurai", "pt") +@MangaSourceParser("GALINHASAMURAI", "GalinhaSamurai", "pt") internal class GalinhaSamurai(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.GALINHASAMURAI, "galinhasamurai.com") { + MadaraParser(context, MangaParserSource.GALINHASAMURAI, "galinhasamurai.com") { override val datePattern = "dd/MM/yyyy" + override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GekkouScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GekkouScans.kt index 9e91a1d87..162b9ec39 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GekkouScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GekkouScans.kt @@ -1,14 +1,16 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -import java.util.Locale +import java.util.* +@Broken @MangaSourceParser("GEKKOUSCANS", "GekkouScans", "pt", ContentType.HENTAI) internal class GekkouScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.GEKKOUSCANS, "gekkou.site") { + MadaraParser(context, MangaParserSource.GEKKOUSCANS, "gekkou.site") { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GhostScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GhostScan.kt index 1c4facdf2..e93718c5e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GhostScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GhostScan.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("GHOSTSCAN", "GhostScan", "pt") internal class GhostScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.GHOSTSCAN, "ghostscan.com.br", 24) { + MadaraParser(context, MangaParserSource.GHOSTSCAN, "ghostscan.com.br", 24) { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GoofFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GoofFansub.kt index 80cc69791..fe600f3cb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GoofFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/GoofFansub.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("GOOFFANSUB", "GoofFansub", "pt", ContentType.HENTAI) internal class GoofFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.GOOFFANSUB, "gooffansub.com") { + MadaraParser(context, MangaParserSource.GOOFFANSUB, "gooffansub.com") { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hentaiteca.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hentaiteca.kt index 8d4f467cb..40fe42248 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hentaiteca.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hentaiteca.kt @@ -3,12 +3,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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HENTAITECA", "Hentaiteca", "pt", ContentType.HENTAI) internal class Hentaiteca(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HENTAITECA, "hentaiteca.net", pageSize = 10) { + MadaraParser(context, MangaParserSource.HENTAITECA, "hentaiteca.net", pageSize = 10) { override val datePattern = "MM/dd/yyyy" override val tagPrefix = "genero/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hipercool.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hipercool.kt index b75748e1d..51165a1ec 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hipercool.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Hipercool.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HIPERCOOL", "Hipercool", "pt", ContentType.HENTAI) internal class Hipercool(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HIPERCOOL, "hiper.cool", pageSize = 20) { + MadaraParser(context, MangaParserSource.HIPERCOOL, "hiper.cool", pageSize = 20) { override val tagPrefix = "manga-tag/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/HuntersScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/HuntersScan.kt index cb48a4525..2f6b55251 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/HuntersScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/HuntersScan.kt @@ -2,14 +2,13 @@ package org.koitharu.kotatsu.parsers.site.madara.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HUNTERSSCAN", "HuntersScan", "pt") internal class HuntersScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HUNTERSSCAN, "huntersscan.xyz", pageSize = 50) { + MadaraParser(context, MangaParserSource.HUNTERSSCAN, "huntersscan.xyz", pageSize = 50) { override val withoutAjax = true override val datePattern = "MM/dd/yyyy" override val tagPrefix = "series-genre/" - override val listUrl = "manga/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/IllusionScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/IllusionScan.kt index 0571f2bde..0d55e02f0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/IllusionScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/IllusionScan.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ILLUSIONSCAN", "IllusionScan", "pt", ContentType.HENTAI) internal class IllusionScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ILLUSIONSCAN, "illusionscan.com") { + MadaraParser(context, MangaParserSource.ILLUSIONSCAN, "illusionscan.com") { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ImperioScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ImperioScans.kt index d6b4384df..22e0871f2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ImperioScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ImperioScans.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("IMPERIOSCANS", "ImperioScans", "pt") internal class ImperioScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.IMPERIOSCANS, "imperioscans.com.br") { + MadaraParser(context, MangaParserSource.IMPERIOSCANS, "imperioscans.com.br") { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ImperiodaBritannia.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ImperiodaBritannia.kt index b43c7c734..34ef2cf1c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ImperiodaBritannia.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ImperiodaBritannia.kt @@ -2,12 +2,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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("IMPERIODABRITANNIA", "ImperioDaBritannia", "pt") internal class ImperiodaBritannia(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.IMPERIODABRITANNIA, "imperiodabritannia.com", 10) { + MadaraParser(context, MangaParserSource.IMPERIODABRITANNIA, "imperiodabritannia.com", 10) { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/KakuseiProject.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/KakuseiProject.kt index 20be0e9a7..70aee8ad4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/KakuseiProject.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/KakuseiProject.kt @@ -2,9 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("KAKUSEIPROJECT", "Kakusei Project", "pt") +@MangaSourceParser("KAKUSEIPROJECT", "KakuseiProject", "pt") internal class KakuseiProject(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.KAKUSEIPROJECT, "kakuseiproject.com", 10) + MadaraParser(context, MangaParserSource.KAKUSEIPROJECT, "kakuseiproject.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Kalango.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Kalango.kt new file mode 100644 index 000000000..c3debd9d3 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Kalango.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import java.util.* + +@MangaSourceParser("KALANGO", "Kalango", "pt") +internal class Kalango(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.KALANGO, "kalango.org") { + override val datePattern: String = "dd 'de' MMMM 'de' yyyy" + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LadyestelarScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LadyestelarScan.kt index df95e73ab..aec03a638 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LadyestelarScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LadyestelarScan.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("LADYESTELARSCAN", "LadyEstelarScan", "pt") internal class LadyestelarScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LADYESTELARSCAN, "ladyestelarscan.com.br", 10) { + MadaraParser(context, MangaParserSource.LADYESTELARSCAN, "ladyestelarscan.com.br", 10) { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorDeManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorDeManga.kt new file mode 100644 index 000000000..282066f13 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorDeManga.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("LEITORDEMANGA", "LeitorDeManga", "pt") +internal class LeitorDeManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.LEITORDEMANGA, "leitordemanga.com", 10) { + override val datePattern = "dd/MM/yyyy" + override val listUrl = "ler-manga/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorKamisama.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorKamisama.kt index 1b31392da..e6472e56a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorKamisama.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LeitorKamisama.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("LEITORKAMISAMA", "Leitor Kamisama", "pt") +@MangaSourceParser("LEITORKAMISAMA", "LeitorKamisama", "pt") internal class LeitorKamisama(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LEITORKAMISAMA, "leitor.kamisama.com.br", 10) { + MadaraParser(context, MangaParserSource.LEITORKAMISAMA, "leitor.kamisama.com.br", 10) { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerHentai.kt new file mode 100644 index 000000000..d86dc01f5 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerHentai.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("LERHENTAI", "LerHentai", "pt", ContentType.HENTAI) +internal class LerHentai(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.LERHENTAI, "lerhentai.com", 20) { + override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerYaoi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerYaoi.kt index bafd2bacc..f2129e8b0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerYaoi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LerYaoi.kt @@ -3,12 +3,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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LERYAOI", "LerYaoi", "pt", ContentType.HENTAI) internal class LerYaoi(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LERYAOI, "leryaoi.com", 10) { + MadaraParser(context, MangaParserSource.LERYAOI, "leryaoi.com", 10) { override val datePattern = "dd/MM/yyyy" override val listUrl = "bl/" override val tagPrefix = "genero/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Lermangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Lermangas.kt index ef51e7ce2..9a21058c8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Lermangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Lermangas.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LERMANGAS", "Lermangas", "pt") internal class Lermangas(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LERMANGAS, "lermangas.me", pageSize = 20) { + MadaraParser(context, MangaParserSource.LERMANGAS, "lermangas.me", pageSize = 20) { override val datePattern = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LichMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LichMangas.kt new file mode 100644 index 000000000..4c53c8426 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LichMangas.kt @@ -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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("LICHMANGAS", "LichMangas", "pt") +internal class LichMangas(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.LICHMANGAS, "lichmangas.com", 10) { + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LimboScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LimboScan.kt index 161019d9b..a4e9c0676 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LimboScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LimboScan.kt @@ -2,12 +2,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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LIMBOSCAN", "LimboScan", "pt") internal class LimboScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LIMBOSCAN, "limboscan.com.br") { + MadaraParser(context, MangaParserSource.LIMBOSCAN, "limboscan.com.br") { override val tagPrefix = "obras-genre/" override val listUrl = "obras/" override val datePattern: String = "dd/MM/yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LinkStartScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LinkStartScan.kt index 44e67909e..1356b291e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LinkStartScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LinkStartScan.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LINKSTARTSCAN", "LinkStartScan", "pt") internal class LinkStartScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LINKSTARTSCAN, "www.linkstartscan.xyz") { + MadaraParser(context, MangaParserSource.LINKSTARTSCAN, "www.linkstartscan.xyz") { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LunarScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LunarScan.kt index ee612055c..ed4ffdb6c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LunarScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/LunarScan.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LUNARSCAN", "LunarScan.com.br", "pt") internal class LunarScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LUNARSCAN, "lunarscan.com.br") { + MadaraParser(context, MangaParserSource.LUNARSCAN, "lunarscan.com.br") { override val listUrl = "obra/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MaidScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MaidScan.kt index d08777388..e55f7416d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MaidScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MaidScan.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MAIDSCAN", "MaidScan", "pt", ContentType.HENTAI) internal class MaidScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MAIDSCAN, "maidscan.com.br", 10) { - override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" + MadaraParser(context, MangaParserSource.MAIDSCAN, "maidscans.com", 10) { + override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MaidSecret.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MaidSecret.kt index b7586f18e..0ab3e403b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MaidSecret.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MaidSecret.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MAIDSECRET", "MaidSecret", "pt") internal class MaidSecret(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MAIDSECRET, "maidsecret.com", 10) { + MadaraParser(context, MangaParserSource.MAIDSECRET, "maidsecret.com", 10) { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNanquim.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNanquim.kt index 0c810c0bc..79ac806a3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNanquim.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNanquim.kt @@ -2,12 +2,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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGANANQUIM", "MangaNanquim", "pt") internal class MangaNanquim(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGANANQUIM, "mangananquim.site", 10) { + MadaraParser(context, MangaParserSource.MANGANANQUIM, "mangananquim.site", 10) { override val datePattern: String = "d 'de' MMMM 'de' yyyy" override val listUrl = "ler-manga/" override val tagPrefix = "manga-genero/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNinja.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNinja.kt new file mode 100644 index 000000000..63800d73a --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MangaNinja.kt @@ -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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MANGANINJA", "MangaNinja", "pt") +internal class MangaNinja(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGANINJA, "manganinja.com", 10) { + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Manhastro.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Manhastro.kt index 36d582428..1334b7d77 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Manhastro.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Manhastro.kt @@ -2,9 +2,38 @@ 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.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl @MangaSourceParser("MANHASTRO", "Manhastro", "pt") internal class Manhastro(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHASTRO, "manhastro.com", 18) + MadaraParser(context, MangaParserSource.MANHASTRO, "manhastro.com", 24) { + + override val listUrl = "lermanga/" + override val tagPrefix = "genre/" + + override suspend fun getPages(chapter: MangaChapter): List { + val fullUrl = chapter.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + + val script = doc.selectFirstOrThrow("script:containsData(imageLinks)").data() + val images = script.substringAfter('[').substringBeforeLast(']') + .replace("\"", "").split(',') + return images.map { img -> + val url = context.decodeBase64(img).toString(Charsets.UTF_8) + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MomonohanaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MomonohanaScan.kt index 1ca548c36..c9b48bd4e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MomonohanaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MomonohanaScan.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MOMONOHANASCAN", "MomonohanaScan", "pt") internal class MomonohanaScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MOMONOHANASCAN, "momonohanascan.com", 10) { + MadaraParser(context, MangaParserSource.MOMONOHANASCAN, "momonohanascan.com", 10) { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MoonLoversScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MoonLoversScan.kt index 4d46f5464..1acacde09 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MoonLoversScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MoonLoversScan.kt @@ -3,9 +3,9 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MOONLOVERSSCAN", "MoonLoversScan", "pt", ContentType.HENTAI) internal class MoonLoversScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MOONLOVERSSCAN, "moonloversscan.com.br", 10) + MadaraParser(context, MangaParserSource.MOONLOVERSSCAN, "moonloversscan.com.br", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Moonwitchinlovescan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Moonwitchinlovescan.kt index 16b4f5739..93df89523 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Moonwitchinlovescan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Moonwitchinlovescan.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MOONWITCHINLOVESCAN", "MoonWitchinLoveScan", "pt") internal class Moonwitchinlovescan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MOONWITCHINLOVESCAN, "moonwitchinlovescan.com", 10) { + MadaraParser(context, MangaParserSource.MOONWITCHINLOVESCAN, "moonwitchinlovescan.com", 10) { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MrBenne.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MrBenne.kt index 72e48837d..45ec457ae 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MrBenne.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MrBenne.kt @@ -3,18 +3,17 @@ package org.koitharu.kotatsu.parsers.site.madara.pt import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.domain import org.koitharu.kotatsu.parsers.util.mapNotNullToSet import org.koitharu.kotatsu.parsers.util.parseHtml import org.koitharu.kotatsu.parsers.util.toTitleCase -import java.util.HashSet @MangaSourceParser("MRBENNE", "MrBenne", "pt", ContentType.HENTAI) internal class MrBenne(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MRBENNE, "mrbenne.com", 10) { + MadaraParser(context, MangaParserSource.MRBENNE, "mrbenne.com", 10) { override val datePattern: String = "dd/MM/yyyy" override suspend fun getAvailableTags(): Set { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MugiwarasOficial.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MugiwarasOficial.kt new file mode 100644 index 000000000..808383f43 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/MugiwarasOficial.kt @@ -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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("MUGIWARASOFICIAL", "MugiwarasOficial", "pt") +internal class MugiwarasOficial(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MUGIWARASOFICIAL, "mugiwarasoficial.com") { + override val datePattern: String = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Neoxscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Neoxscans.kt index 9d5f75682..66909a119 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Neoxscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Neoxscans.kt @@ -4,14 +4,14 @@ import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat @MangaSourceParser("NEOX_SCANS", "NeoxScans", "pt") internal class Neoxscans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NEOX_SCANS, "nexoscans.net", 18) { + MadaraParser(context, MangaParserSource.NEOX_SCANS, "mangalivre.net", 18) { override val datePattern = "dd/MM/yyyy" override suspend fun loadChapters(mangaUrl: String, document: Document): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Neroxus.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Neroxus.kt index f52d9e6cf..14e596c1b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Neroxus.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Neroxus.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NEROXUS", "Neroxus", "pt") internal class Neroxus(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NEROXUS, "neroxus.com.br", 10) { + MadaraParser(context, MangaParserSource.NEROXUS, "neroxus.com.br", 10) { override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/NinjaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/NinjaScan.kt index f056d7aab..7da846dda 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/NinjaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/NinjaScan.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("NINJASCAN", "NinjaScan", "pt") +@MangaSourceParser("NINJASCAN", "NinjaComics", "pt") internal class NinjaScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NINJASCAN, "ninjascan.site") { + MadaraParser(context, MangaParserSource.NINJASCAN, "ninjacomics.xyz") { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Nocsummer.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Nocsummer.kt index eae483054..d30666faa 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Nocsummer.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Nocsummer.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NOCSUMMER", "NocturneSummer", "pt", ContentType.HENTAI) internal class Nocsummer(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NOCSUMMER, "nocfsb.com", 18) { + MadaraParser(context, MangaParserSource.NOCSUMMER, "nocfsb.com", 18) { override val datePattern = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/NoindexScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/NoindexScan.kt index d1ee428ae..c3377e8e3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/NoindexScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/NoindexScan.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NOINDEXSCAN", "NoindexScan", "pt", ContentType.HENTAI) internal class NoindexScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NOINDEXSCAN, "noindexscan.com") { + MadaraParser(context, MangaParserSource.NOINDEXSCAN, "noindexscan.com") { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Norterose.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Norterose.kt index d7ce724b2..304a0c223 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Norterose.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Norterose.kt @@ -2,12 +2,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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NORTEROSE", "Norterose", "pt") internal class Norterose(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NORTEROSE, "norterose.com.br", 10) { + MadaraParser(context, MangaParserSource.NORTEROSE, "norterose.com.br", 10) { override val datePattern: String = "dd/MM/yyyy" override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PassamaoScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PassamaoScan.kt index 676fc7c5f..825194f5f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PassamaoScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PassamaoScan.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("PASSAMAOSCAN", "PassamaoScan", "pt") internal class PassamaoScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PASSAMAOSCAN, "passamaoscan.com") { + MadaraParser(context, MangaParserSource.PASSAMAOSCAN, "passamaoscan.com") { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Pirulitorosa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Pirulitorosa.kt index 2b218f32b..2be74bef4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Pirulitorosa.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Pirulitorosa.kt @@ -3,12 +3,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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("PIRULITOROSA", "PirulitoRosa", "pt", ContentType.HENTAI) internal class Pirulitorosa(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PIRULITOROSA, "pirulitorosa.site") { + MadaraParser(context, MangaParserSource.PIRULITOROSA, "pirulitorosa.site") { override val postReq = true override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PortalYaoi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PortalYaoi.kt index 1ed35685d..b338ddc4d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PortalYaoi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/PortalYaoi.kt @@ -3,12 +3,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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("PORTALYAOI", "PortalYaoi", "pt", ContentType.HENTAI) internal class PortalYaoi(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PORTALYAOI, "portalyaoi.com", 10) { + MadaraParser(context, MangaParserSource.PORTALYAOI, "portalyaoi.com", 10) { override val tagPrefix = "genero/" override val datePattern: String = "dd/MM" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Prismahentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Prismahentai.kt index 570852a0b..57b3faf98 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Prismahentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Prismahentai.kt @@ -1,11 +1,13 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("PRISMA_HENTAI", "PrismaHentai", "pt", ContentType.HENTAI) internal class Prismahentai(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PRISMA_HENTAI, "prismahentai.com", 18) + MadaraParser(context, MangaParserSource.PRISMA_HENTAI, "prismahentai.com", 18) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ProjetoScanlator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ProjetoScanlator.kt index a2a78fb87..1859d967a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ProjetoScanlator.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ProjetoScanlator.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("PROJETOSCANLATOR", "ProjetoScanlator", "pt") internal class ProjetoScanlator(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PROJETOSCANLATOR, "projetoscanlator.com", 10) { + MadaraParser(context, MangaParserSource.PROJETOSCANLATOR, "projetoscanlator.com", 10) { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Psunicorn.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Psunicorn.kt index db34ac184..d1cb5c390 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Psunicorn.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Psunicorn.kt @@ -1,11 +1,13 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("PSUNICORN", "PsUnicorn", "pt", ContentType.HENTAI) internal class Psunicorn(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PSUNICORN, "psunicorn.com") + MadaraParser(context, MangaParserSource.PSUNICORN, "psunicorn.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RainbowFairyScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RainbowFairyScan.kt index b8606d0dc..d49ce43d4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RainbowFairyScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RainbowFairyScan.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("RAINBOWFAIRYSCAN", "RainbowFairyScan", "pt") internal class RainbowFairyScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.RAINBOWFAIRYSCAN, "rainbowfairyscan.com", 10) { + MadaraParser(context, MangaParserSource.RAINBOWFAIRYSCAN, "rainbowfairyscan.com", 10) { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ReMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ReMangas.kt index c919c70fb..18d236400 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ReMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ReMangas.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("REMANGAS", "ReMangas", "pt") internal class ReMangas(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.REMANGAS, "remangas.net") { + MadaraParser(context, MangaParserSource.REMANGAS, "remangas.net") { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RogMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RogMangas.kt index fdf1ac871..8a509768a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RogMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/RogMangas.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("ROGMANGAS", "RogMangas", "pt") internal class RogMangas(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ROGMANGAS, "rogmangas.com", 51) { + MadaraParser(context, MangaParserSource.ROGMANGAS, "rogmangas.com", 51) { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SinensisScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SinensisScans.kt index b37cf2ea8..54e2e1c9b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SinensisScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SinensisScans.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken // Not dead, changed template @MangaSourceParser("SINENSISSCANS", "SinensisScans", "pt") internal class SinensisScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SINENSISSCANS, "sinensistoon.com") { + MadaraParser(context, MangaParserSource.SINENSISSCANS, "sinensistoon.com") { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SussyScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SussyScan.kt index 671b5ed1e..df735e7bf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SussyScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SussyScan.kt @@ -2,11 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SUSSYSCAN", "SussyScan", "pt") internal class SussyScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SUSSYSCAN, "sussyscan.com") { - override val datePattern: String = "dd/MM/yyyy" -} + MadaraParser(context, MangaParserSource.SUSSYSCAN, "oldi.sussytoons.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SweetScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SweetScan.kt index 649ffb0be..c35d979af 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SweetScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/SweetScan.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SWEETSCAN", "SweetScan", "pt") internal class SweetScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SWEETSCAN, "sweetscan.net") { + MadaraParser(context, MangaParserSource.SWEETSCAN, "sweetscan.net") { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TankouHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TankouHentai.kt index 64a723d91..4f6c8cb62 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TankouHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TankouHentai.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TANKOUHENTAI", "TankouHentai", "pt", ContentType.HENTAI) internal class TankouHentai(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TANKOUHENTAI, "tankouhentai.com", pageSize = 16) { + MadaraParser(context, MangaParserSource.TANKOUHENTAI, "tankouhentai.com", pageSize = 16) { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TatakaeScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TatakaeScansParser.kt index 7e974eccb..e59423cdd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TatakaeScansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/TatakaeScansParser.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TATAKAE_SCANS", "TatakaeScans", "pt") internal class TatakaeScansParser(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TATAKAE_SCANS, "tatakaescan.com", pageSize = 10) { + MadaraParser(context, MangaParserSource.TATAKAE_SCANS, "tatakaescan.com", pageSize = 10) { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ValkyrieScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ValkyrieScan.kt index 41546d94d..05c4b5e35 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ValkyrieScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/ValkyrieScan.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("VALKYRIESCAN", "ValkyrieScan", "pt", ContentType.HENTAI) internal class ValkyrieScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.VALKYRIESCAN, "valkyriescan.com", pageSize = 10) { + MadaraParser(context, MangaParserSource.VALKYRIESCAN, "valkyriescan.com", pageSize = 10) { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/VillainessScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/VillainessScan.kt new file mode 100644 index 000000000..4fca33ef6 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/VillainessScan.kt @@ -0,0 +1,13 @@ +package org.koitharu.kotatsu.parsers.site.madara.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("VILLAINESSSCAN", "VillainessScan", "pt", ContentType.HENTAI) +internal class VillainessScan(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.VILLAINESSSCAN, "villainessscan.xyz", pageSize = 10) { + override val datePattern: String = "dd 'de' MMMM 'de' yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WickedWitchScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WickedWitchScan.kt index 2a239d7a1..b85826d81 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WickedWitchScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WickedWitchScan.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("WICKEDWITCHSCAN", "WickedWitchScan", "pt") internal class WickedWitchScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.WICKEDWITCHSCAN, "wicked-witch-scan.com", pageSize = 10) { + MadaraParser(context, MangaParserSource.WICKEDWITCHSCAN, "wicked-witch-scan.com", pageSize = 10) { override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WinterScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WinterScan.kt index 4475f3b45..afc73f083 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WinterScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WinterScan.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("WINTERSCAN", "WinterScan", "pt") internal class WinterScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.WINTERSCAN, "winterscan.com", pageSize = 20) { + MadaraParser(context, MangaParserSource.WINTERSCAN, "winterscan.com", pageSize = 20) { override val datePattern: String = "dd 'de' MMMMM 'de' yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WonderlandScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WonderlandScan.kt index 124b7dd85..bb64fb633 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WonderlandScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/WonderlandScan.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("WONDERLANDSCAN", "WonderlandScan", "pt") internal class WonderlandScan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.WONDERLANDSCAN, "wonderlandscan.com") { + MadaraParser(context, MangaParserSource.WONDERLANDSCAN, "wonderlandscan.com") { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YanpFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YanpFansub.kt index 613dc3fd7..2fb8c874f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YanpFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YanpFansub.kt @@ -2,9 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("YANPFANSUB", "YanpFansub", "pt") internal class YanpFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.YANPFANSUB, "yanpfansub.com") + MadaraParser(context, MangaParserSource.YANPFANSUB, "yanpfansub.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YaoiX3.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YaoiX3.kt index 2856b814f..5a61118ec 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YaoiX3.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YaoiX3.kt @@ -3,12 +3,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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("YAOIX3", "3XYaoi", "pt", ContentType.HENTAI) internal class YaoiX3(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.YAOIX3, "3xyaoi.com") { + MadaraParser(context, MangaParserSource.YAOIX3, "3xyaoi.com") { override val datePattern = "dd/MM/yyyy" override val listUrl = "bl/" override val tagPrefix = "genero/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Ycscan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Ycscan.kt index e423dcdbc..f7b134474 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Ycscan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/Ycscan.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("YCSCAN", "YcScan", "pt", ContentType.HENTAI) internal class Ycscan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.YCSCAN, "ycscan.com", 20) { + MadaraParser(context, MangaParserSource.YCSCAN, "ycscan.com", 20) { override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YuriLive.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YuriLive.kt index 7004358a4..d5f4deefc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YuriLive.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/pt/YuriLive.kt @@ -3,12 +3,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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("YURILIVE", "YuriLive", "pt", ContentType.HENTAI) internal class YuriLive(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.YURILIVE, "yuri.live") { + MadaraParser(context, MangaParserSource.YURILIVE, "yuri.live") { override val tagPrefix = "manga-genero/" override val datePattern: String = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/BestManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/BestManga.kt index e629b19e0..efe45e373 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/BestManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/BestManga.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.ru import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("BEST_MANGA", "BestManga", "ru") internal class BestManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BEST_MANGA, "bestmanga.club") { + MadaraParser(context, MangaParserSource.BEST_MANGA, "bestmanga.club") { override val datePattern = "dd.MM.yyyy" override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/MangaMammy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/MangaMammy.kt index bc92bda52..19e8a0351 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/MangaMammy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/MangaMammy.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.ru import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAMAMMY", "MangaMammy", "ru") internal class MangaMammy(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAMAMMY, "mangamammy.ru") { + MadaraParser(context, MangaParserSource.MANGAMAMMY, "mangamammy.ru") { override val datePattern = "dd.MM.yyyy" override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/MangaoneLove.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/MangaoneLove.kt index 9a0330fce..512e10628 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/MangaoneLove.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/MangaoneLove.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.ru import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAONELOVE", "MangaOneLove", "ru") internal class MangaoneLove(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAONELOVE, "mangaonelove.site", 10) { + MadaraParser(context, MangaParserSource.MANGAONELOVE, "mangaonelove.site", 10) { override val datePattern = "dd.MM.yyyy" override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/Mangazavr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/Mangazavr.kt index 72091d1f3..34b7b743f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/Mangazavr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/ru/Mangazavr.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.ru 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAZAVR", "Mangazavr", "ru", ContentType.HENTAI) internal class Mangazavr(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAZAVR, "mangazavr.ru") { + MadaraParser(context, MangaParserSource.MANGAZAVR, "mangazavr.ru") { override val listUrl = "/?s=&post_type=wp-manga" override val datePattern = "dd.MM.yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/BakaMan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/BakaMan.kt index 0473a81e8..865437550 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/BakaMan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/BakaMan.kt @@ -1,12 +1,14 @@ package org.koitharu.kotatsu.parsers.site.madara.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("BAKAMAN", "BakaMan", "th") internal class BakaMan(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BAKAMAN, "bakaman.net", pageSize = 18) { + MadaraParser(context, MangaParserSource.BAKAMAN, "bakaman.net", pageSize = 18) { override val datePattern = "MMMM dd, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Cat300.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Cat300.kt index 72331a51f..d5b2b5614 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Cat300.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Cat300.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madara.th 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("CAT_300", "Cat300", "th", ContentType.HENTAI) -internal class Cat300(context: MangaLoaderContext) : MadaraParser(context, MangaSource.CAT_300, "cat300.com") { +internal class Cat300(context: MangaLoaderContext) : MadaraParser(context, MangaParserSource.CAT_300, "cat300.net") { override val datePattern = "MMMM dd, yyyy" override val withoutAjax = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Doujinza.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Doujinza.kt index 082c87a8b..679b94662 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Doujinza.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Doujinza.kt @@ -3,11 +3,12 @@ package org.koitharu.kotatsu.parsers.site.madara.th 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("DOUJINZA", "Doujinza", "th", ContentType.HENTAI) -internal class Doujinza(context: MangaLoaderContext) : MadaraParser(context, MangaSource.DOUJINZA, "doujinza.com", 24) { +internal class Doujinza(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.DOUJINZA, "doujinza.com", 24) { override val withoutAjax = true override val datePattern = "MMMM dd, yyyy" override val listUrl = "doujin/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/KingsManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/KingsManga.kt index aae8df429..f14198564 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/KingsManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/KingsManga.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.th import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("KINGS_MANGA", "KingsManga", "th") internal class KingsManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.KINGS_MANGA, "www.kings-manga.co") { + MadaraParser(context, MangaParserSource.KINGS_MANGA, "www.kings-manga.co") { override val postReq = true override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/MangaLc.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/MangaLc.kt index d401bfd15..652a6c4cc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/MangaLc.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/MangaLc.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.th import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGALC", "MangaLc", "th") internal class MangaLc(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGALC, "manga-lc.net", 24) { + MadaraParser(context, MangaParserSource.MANGALC, "manga-lc.net", 24) { override val datePattern: String = "d MMMM yyyy" override val selectPage = "img" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Mangadeemak.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Mangadeemak.kt index 7e96baecc..2720b7ec4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Mangadeemak.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Mangadeemak.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.th import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGADEEMAK", "MangaDeemak", "th") internal class Mangadeemak(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGADEEMAK, "mangadeemak.com", 12) { + MadaraParser(context, MangaParserSource.MANGADEEMAK, "mangadeemak.com", 12) { override val datePattern: String = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuabug.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuabug.kt index 31d305933..1293bec90 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuabug.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuabug.kt @@ -2,13 +2,14 @@ package org.koitharu.kotatsu.parsers.site.madara.th import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import java.util.* @MangaSourceParser("MANHUABUG", "ManhuaBug", "th") internal class Manhuabug(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHUABUG, "www.manhuabug.com", 10) { + MadaraParser(context, MangaParserSource.MANHUABUG, "www.manhuabug.com", 10) { override val datePattern: String = "d MMMM yyyy" override val sourceLocale: Locale = Locale.ENGLISH + override val selectPage = "img" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuakey.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuakey.kt index 0540db006..f6e45fd8e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuakey.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/Manhuakey.kt @@ -2,13 +2,14 @@ package org.koitharu.kotatsu.parsers.site.madara.th import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import java.util.* @MangaSourceParser("MANHUAKEY", "ManhuaKey", "th") internal class Manhuakey(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANHUAKEY, "www.manhuakey.com", 10) { + MadaraParser(context, MangaParserSource.MANHUAKEY, "www.manhuakey.com", 10) { override val datePattern: String = "d MMMM yyyy" override val sourceLocale: Locale = Locale.ENGLISH + override val selectPage = "img" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/NekoPost.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/NekoPost.kt index ae95a8cf9..232b8e519 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/NekoPost.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/NekoPost.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.madara.th import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NEKOPOST", "NekoPost", "th") internal class NekoPost(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NEKOPOST, "www.nekopost.co") { + MadaraParser(context, MangaParserSource.NEKOPOST, "www.nekopost.co") { override val postReq = true override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/RhPlusManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/RhPlusManga.kt index 16c681eb8..4624705bf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/RhPlusManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/th/RhPlusManga.kt @@ -4,13 +4,13 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("RHPLUSMANGA", "Rh2PlusManga", "th") internal class RhPlusManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.RHPLUSMANGA, "www.rh2plusmanga.com") { + MadaraParser(context, MangaParserSource.RHPLUSMANGA, "www.rh2plusmanga.com") { override val datePattern: String = "d MMMM yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/AlliedFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/AlliedFansub.kt index ca3a11d6c..ed60b153c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/AlliedFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/AlliedFansub.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ALLIED_FANSUB", "AlliedFansub", "tr", ContentType.HENTAI) internal class AlliedFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ALLIED_FANSUB, "alliedfansub.net", 20) { + MadaraParser(context, MangaParserSource.ALLIED_FANSUB, "alliedfansub.net", 20) { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Anikiga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Anikiga.kt index 22c930163..0a11797b3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Anikiga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Anikiga.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ANIKIGA", "Anikiga", "tr") internal class Anikiga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ANIKIGA, "anikiga.com") { + MadaraParser(context, MangaParserSource.ANIKIGA, "anikiga.com") { override val tagPrefix = "manga-tur/" override val datePattern = "d MMMM yyyy" override val postReq = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/AnisaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/AnisaManga.kt index 51feafcb2..3be23c31a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/AnisaManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/AnisaManga.kt @@ -2,9 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ANISA_MANGA", "AnisaManga", "tr") internal class AnisaManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ANISA_MANGA, "anisamanga.com") + MadaraParser(context, MangaParserSource.ANISA_MANGA, "anisamanga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ArazNovel.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ArazNovel.kt index d3efe3fd4..7670acc37 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ArazNovel.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ArazNovel.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ARAZNOVEL", "ArazNovel", "tr") internal class ArazNovel(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ARAZNOVEL, "araznovel.com", 10) { + MadaraParser(context, MangaParserSource.ARAZNOVEL, "araznovel.com", 10) { override val datePattern = "d MMMM yyyy" override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Atikrost.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Atikrost.kt new file mode 100644 index 000000000..6b742b625 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Atikrost.kt @@ -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("ATIKROST", "Atikrost", "tr") +internal class Atikrost(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ATIKROST, "www.atikrost.com", 10) { + override val datePattern = "d MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/CloverManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/CloverManga.kt index 25049df8d..bf1dd9791 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/CloverManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/CloverManga.kt @@ -2,9 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("CLOVERMANGA", "CloverManga", "tr") internal class CloverManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.CLOVERMANGA, "clover-manga.com", 20) + MadaraParser(context, MangaParserSource.CLOVERMANGA, "clover-manga.com", 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DeccalScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DeccalScans.kt new file mode 100644 index 000000000..9d7a418f8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DeccalScans.kt @@ -0,0 +1,13 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("DECCALSCANS", "DeccalScans", "tr", ContentType.HENTAI) +internal class DeccalScans(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.DECCALSCANS, "deccalscans.net") { + override val tagPrefix = "turler/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DiamondFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DiamondFansub.kt index 71a2b386e..a6b0d370b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DiamondFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DiamondFansub.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("DIAMONDFANSUB", "DiamondFansub", "tr") internal class DiamondFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.DIAMONDFANSUB, "diamondfansub.com", 10) { + MadaraParser(context, MangaParserSource.DIAMONDFANSUB, "diamondfansub.com", 10) { override val datePattern = "d MMMM" override val listUrl = "seri/" override val tagPrefix = "seri-turu/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DomalFansb.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DomalFansb.kt index 952be4609..61e66bfe0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DomalFansb.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/DomalFansb.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("DOMALFANSB", "DomalFansub", "tr") internal class DomalFansb(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.DOMALFANSB, "domalfansub.com.tr") { + MadaraParser(context, MangaParserSource.DOMALFANSB, "domalfansub.com.tr") { override val datePattern = "d MMMM yyyy" override val tagPrefix = "manga-turleri/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/EsoManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/EsoManga.kt index c6777651a..7de550006 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/EsoManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/EsoManga.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("ESOMANGA", "EsoManga", "tr") internal class EsoManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ESOMANGA, "esomanga.com", 10) { + MadaraParser(context, MangaParserSource.ESOMANGA, "esomanga.com", 10) { override val postReq = true override val datePattern = "dd/MM/yyyy" override val tagPrefix = "manga-kategoriler/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GarciaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GarciaManga.kt new file mode 100644 index 000000000..f3c801d5a --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GarciaManga.kt @@ -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("GARCIAMANGA", "GarciaManga", "tr") +internal class GarciaManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.GARCIAMANGA, "garciamanga.com", 20) { + override val selectPage = "img" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GhostFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GhostFansub.kt index 2d3a2b784..30e0c1c58 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GhostFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GhostFansub.kt @@ -1,11 +1,13 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("GHOSTFANSUB", "GhostFansub", "tr") internal class GhostFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.GHOSTFANSUB, "ghostfansub.co", 18) + MadaraParser(context, MangaParserSource.GHOSTFANSUB, "ghostfansub.co", 18) // you now need to log in to access content diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GloryManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GloryManga.kt index f640d06e4..436e43678 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GloryManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GloryManga.kt @@ -2,11 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +//This source requires an account. @MangaSourceParser("GLORYMANGA", "GloryManga", "tr") internal class GloryManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.GLORYMANGA, "glorymanga.com", 18) { + MadaraParser(context, MangaParserSource.GLORYMANGA, "glorymanga.com", 18) { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Grimelek.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Grimelek.kt new file mode 100644 index 000000000..2d6524faf --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Grimelek.kt @@ -0,0 +1,14 @@ +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 + +//This source requires an account. +@MangaSourceParser("GRIMELEK", "Grimelek", "tr") +internal class Grimelek(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.GRIMELEK, "grimelek.mom", 20) { + override val datePattern = "d MMMM yyyy" + override val listUrl = "seri/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GuncelManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GuncelManga.kt index d049c9e3a..51e577525 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GuncelManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/GuncelManga.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("GUNCEL_MANGA", "GuncelManga", "tr") internal class GuncelManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.GUNCEL_MANGA, "guncelmanga.net") { + MadaraParser(context, MangaParserSource.GUNCEL_MANGA, "guncelmanga.net") { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Hayalistic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Hayalistic.kt index b3b5d0853..ca6519952 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Hayalistic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Hayalistic.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HAYALISTIC", "Hayalistic", "tr") internal class Hayalistic(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HAYALISTIC, "hayalistic.com.tr", 24) { + MadaraParser(context, MangaParserSource.HAYALISTIC, "hayalistic.com.tr", 24) { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/HoiFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/HoiFansub.kt index 98a1ddeaa..f79fbbef8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/HoiFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/HoiFansub.kt @@ -2,9 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("HOIFANSUB", "HoiFansub", "tr") internal class HoiFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HOIFANSUB, "hoifansub.com", 20) + MadaraParser(context, MangaParserSource.HOIFANSUB, "hoifansub.com", 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ImparatorManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ImparatorManga.kt new file mode 100644 index 000000000..a17eaa132 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ImparatorManga.kt @@ -0,0 +1,10 @@ +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("IMPARATORMANGA", "ImparatorManga", "tr") +internal class ImparatorManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.IMPARATORMANGA, "www.imparatormanga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jellyring.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jellyring.kt new file mode 100644 index 000000000..7f92bf4e2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jellyring.kt @@ -0,0 +1,10 @@ +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("JELLYRING", "Jellyring", "tr") +internal class Jellyring(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.JELLYRING, "jellyring.co") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jiangzaitoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jiangzaitoon.kt index 9b655a5bd..f70678a1e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jiangzaitoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Jiangzaitoon.kt @@ -3,11 +3,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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("JIANGZAITOON", "JiangzaiToon", "tr", ContentType.HENTAI) internal class Jiangzaitoon(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.JIANGZAITOON, "jiangzaitoon.cc") { + MadaraParser(context, MangaParserSource.JIANGZAITOON, "jiangzaitoon.dev") { override val datePattern = "d MMMM yyyy" + override val postReq = true } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KabusManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KabusManga.kt new file mode 100644 index 000000000..493596637 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KabusManga.kt @@ -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("KABUSMANGA", "KabusManga", "tr") +internal class KabusManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.KABUSMANGA, "kabusmanga.com") { + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Kedi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Kedi.kt new file mode 100644 index 000000000..0cbe3edb4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Kedi.kt @@ -0,0 +1,13 @@ +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("KEDI", "Kedi", "tr") +internal class Kedi(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.KEDI, "kedi.to") { + override val datePattern = "d MMMM yyyy" + override val tagPrefix = "tur/" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KuroiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KuroiManga.kt index bf9086f45..e80afae6b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KuroiManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/KuroiManga.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("KUROIMANGA", "KuroiManga", "tr", ContentType.HENTAI) internal class KuroiManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.KUROIMANGA, "www.kuroimanga.com") { + MadaraParser(context, MangaParserSource.KUROIMANGA, "www.kuroimanga.com") { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LaviniaFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LaviniaFansub.kt index 7e3ec7d7c..f9d442226 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LaviniaFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LaviniaFansub.kt @@ -1,13 +1,58 @@ package org.koitharu.kotatsu.parsers.site.madara.tr +import org.jsoup.nodes.Document 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrlOrNull +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.parseFailed +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.removeSuffix +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import java.text.SimpleDateFormat @MangaSourceParser("LAVINIAFANSUB", "LaviniaFansub", "tr", ContentType.HENTAI) internal class LaviniaFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LAVINIAFANSUB, "laviniafansub.com", 18) { + MadaraParser(context, MangaParserSource.LAVINIAFANSUB, "laviniafansub.com", 18) { override val datePattern = "dd/MM/yyyy" + + override suspend fun loadChapters(mangaUrl: String, document: Document): List { + val doc = if (postReq) { + val mangaId = document.select("div#manga-chapters-holder").attr("data-id") + val url = "https://$domain/wp-admin/admin-ajax.php" + val postData = "action=manga_get_chapters&manga=$mangaId" + webClient.httpPost(url, postData).parseHtml() + } else { + val url = mangaUrl.toAbsoluteUrl(domain).removeSuffix('/') + "/ajax/chapters/" + webClient.httpPost(url, emptyMap()).parseHtml() + } + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + return doc.select(selectChapter).mapChapters(reversed = true) { i, li -> + val a = li.selectFirst("a:not(:has(img))") + val href = a?.attrAsRelativeUrlOrNull("href") ?: li.parseFailed("Link is missing") + val link = href + stylePage + val dateText = li.selectFirst("a.c-new-tag")?.attr("title") ?: li.selectFirst(selectDate)?.text() + val name = a.selectFirst("p")?.text() ?: a.ownText() + MangaChapter( + id = generateUid(href), + url = link, + name = name, + number = i + 1f, + volume = 0, + branch = null, + uploadDate = parseChapterDate( + dateFormat, + dateText, + ), + scanlator = null, + source = source, + ) + } + } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LilyumFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LilyumFansub.kt index f5e65be5b..5d9d1a1b7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LilyumFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LilyumFansub.kt @@ -2,9 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LILYUMFANSUB", "LilyumFansub", "tr") internal class LilyumFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LILYUMFANSUB, "lilyumfansub.com.tr", 16) + MadaraParser(context, MangaParserSource.LILYUMFANSUB, "lilyumfansub.com.tr", 16) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LunaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LunaScans.kt index f32721cbd..55138f9f2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LunaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/LunaScans.kt @@ -3,12 +3,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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("LUNASCANS", "LunaScans", "tr", ContentType.HENTAI) internal class LunaScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.LUNASCANS, "lunascans.fun") { + MadaraParser(context, MangaParserSource.LUNASCANS, "lunascans.fun") { override val postReq = true override val datePattern = "dd MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MajorScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MajorScans.kt index e538cb983..a5f445c3a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MajorScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MajorScans.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MAJORSCANS", "MajorScans", "tr") internal class MajorScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MAJORSCANS, "www.majorscans.com", pageSize = 18) { + MadaraParser(context, MangaParserSource.MAJORSCANS, "www.majorscans.com", pageSize = 18) { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaSehriNet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaSehriNet.kt index 3cd51a0db..13bbbb543 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaSehriNet.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaSehriNet.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGASEHRINET", "MangaSehri.net", "tr") internal class MangaSehriNet(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGASEHRINET, "mangasehri.net", 20) { + MadaraParser(context, MangaParserSource.MANGASEHRINET, "mangasehri.net", 20) { override val datePattern = "dd MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaTr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaTr.kt index 3f4b2f286..efdeaf164 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaTr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaTr.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGATR", "MangaTr", "tr") internal class MangaTr(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGATR, "mangatr.net") { + MadaraParser(context, MangaParserSource.MANGATR, "mangatr.net") { override val tagPrefix = "tur/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWow.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWow.kt index 0057ff437..e3f50d6a0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWow.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWow.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAWOW", "MangaWow", "tr") internal class MangaWow(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAWOW, "mangawow.org", 18) { + MadaraParser(context, MangaParserSource.MANGAWOW, "mangawow.org", 18) { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWtNet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWtNet.kt new file mode 100644 index 000000000..d6cdb6727 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MangaWtNet.kt @@ -0,0 +1,10 @@ +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("MANGAWT_NET", "MangaWt.net", "tr") +internal class MangaWtNet(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MANGAWT_NET, "mangawt.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangaoku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangaoku.kt index 0d47636f8..b711faa18 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangaoku.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangaoku.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser +@Broken @MangaSourceParser("MANGAOKU", "Mangaoku", "tr") internal class Mangaoku(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAOKU, "mangaoku.info", 24) { + MadaraParser(context, MangaParserSource.MANGAOKU, "mangaoku.info", 24) { override val datePattern = "dd MMMM yyyy" override val listUrl = "seri/" override val tagPrefix = "tur/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangasehri.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangasehri.kt index 47a0021f9..99d411d11 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangasehri.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangasehri.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGASEHRI", "MangaSehri.com", "tr") internal class Mangasehri(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGASEHRI, "manga-sehri.com", 18) { + MadaraParser(context, MangaParserSource.MANGASEHRI, "manga-sehri.com", 18) { override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangawt.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangawt.kt index 9cb51fc31..9b2a8229a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangawt.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Mangawt.kt @@ -2,9 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser -@MangaSourceParser("MANGAWT", "MangaWt", "tr") +@MangaSourceParser("MANGAWT", "MangaWt.com", "tr") internal class Mangawt(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAWT, "mangawt.com") + MadaraParser(context, MangaParserSource.MANGAWT, "mangawt.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Manwe.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Manwe.kt index 1d952c28d..36a7f8625 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Manwe.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Manwe.kt @@ -2,9 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANWE", "Manwe", "tr") internal class Manwe(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANWE, "manwe.pro", 20) + MadaraParser(context, MangaParserSource.MANWE, "manwe.pro", 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MerlinScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MerlinScans.kt new file mode 100644 index 000000000..49c2256d6 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MerlinScans.kt @@ -0,0 +1,11 @@ +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 + +//Images blocked by ReCAPTCHA +@MangaSourceParser("MERLINSCANS", "MerlinScans", "tr") +internal class MerlinScans(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MERLINSCANS, "merlinscans.com", 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MilaSub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MilaSub.kt new file mode 100644 index 000000000..28eed3994 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MilaSub.kt @@ -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("MILASUB", "MilaSub", "tr") +internal class MilaSub(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.MILASUB, "www.milasub.co", 20) { + override val datePattern = "d MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MindaFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MindaFansub.kt index 2bb2ca6e1..4556c5d00 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MindaFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/MindaFansub.kt @@ -3,9 +3,9 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MINDAFANSUB", "MindaFansub", "tr", ContentType.HENTAI) internal class MindaFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MINDAFANSUB, "mindafansub.online") + MadaraParser(context, MangaParserSource.MINDAFANSUB, "mindafansub.online") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/NiveraFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/NiveraFansub.kt index 46e102dfe..cc5da7610 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/NiveraFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/NiveraFansub.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("NIVERAFANSUB", "NiveraFansub", "tr", ContentType.HENTAI) internal class NiveraFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.NIVERAFANSUB, "niverafansub.co") { + MadaraParser(context, MangaParserSource.NIVERAFANSUB, "niverafansub.org") { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/OpiaToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/OpiaToon.kt new file mode 100644 index 000000000..c909f756e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/OpiaToon.kt @@ -0,0 +1,13 @@ +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 + +//This source requires an account. +@MangaSourceParser("OPIATOON", "OpiaToon", "tr") +internal class OpiaToon(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.OPIATOON, "opiatoon.biz", 20) { + override val datePattern = "d MMMM" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/PiedPiperFansubyy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/PiedPiperFansubyy.kt new file mode 100644 index 000000000..88551056c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/PiedPiperFansubyy.kt @@ -0,0 +1,13 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("PIEDPIPERFANSUBYY", "PiedPiperFansubyy", "tr", ContentType.HENTAI) +internal class PiedPiperFansubyy(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.PIEDPIPERFANSUBYY, "piedpiperfansubyy.me", 18) { + override val datePattern = "d MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/PiedpiperFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/PiedpiperFansub.kt index 38e0b8417..2b14077d2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/PiedpiperFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/PiedpiperFansub.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("PIEDPIPERFANSUB", "PiedpiperFansub", "tr") internal class PiedpiperFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.PIEDPIPERFANSUB, "piedpiperfansub.me", 18) { + MadaraParser(context, MangaParserSource.PIEDPIPERFANSUB, "piedpiperfansub.me", 18) { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RomantikManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RomantikManga.kt index dc5bd39d0..90809a630 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RomantikManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RomantikManga.kt @@ -2,9 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("ROMANTIKMANGA", "RomantikManga", "tr") internal class RomantikManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.ROMANTIKMANGA, "romantikmanga.com", 20) + MadaraParser(context, MangaParserSource.ROMANTIKMANGA, "romantikmanga.com", 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RuyaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RuyaManga.kt index cb95b7c23..aee804605 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RuyaManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/RuyaManga.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("RUYAMANGA", "RuyaManga", "tr") internal class RuyaManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.RUYAMANGA, "www.ruyamanga.com", 18) { + MadaraParser(context, MangaParserSource.RUYAMANGA, "www.ruyamanga.com", 18) { override val tagPrefix = "manga-kategori/" override val datePattern = "dd/MM/yyyy" override val withoutAjax = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/SarcasmScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/SarcasmScans.kt index a231e839f..2712c7702 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/SarcasmScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/SarcasmScans.kt @@ -3,9 +3,9 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("SARCASMSCANS", "SarcasmScans", "tr", ContentType.HENTAI) internal class SarcasmScans(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SARCASMSCANS, "sarcasmscans.com", 16) + MadaraParser(context, MangaParserSource.SARCASMSCANS, "sarcasmscans.com", 16) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/StrayFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/StrayFansub.kt deleted file mode 100644 index 664d52361..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/StrayFansub.kt +++ /dev/null @@ -1,11 +0,0 @@ -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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.site.madara.MadaraParser - -@MangaSourceParser("STRAYFANSUB", "StrayFansub", "tr", ContentType.HENTAI) -internal class StrayFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.STRAYFANSUB, "strayfansub.homes") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Timenaight.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Timenaight.kt index d77ea0024..a65b84c3b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Timenaight.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Timenaight.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TIMENAIGHT", "TimeNaight", "tr") internal class Timenaight(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TIMENAIGHT, "timenaight.com") { + MadaraParser(context, MangaParserSource.TIMENAIGHT, "timenaight.com") { override val postReq = true override val datePattern = "dd/MM/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TitanManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TitanManga.kt index 999430e1c..4c66f3046 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TitanManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TitanManga.kt @@ -4,13 +4,13 @@ import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("TITANMANGA", "TitanManga", "tr") internal class TitanManga(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TITANMANGA, "titanmanga.com") { + MadaraParser(context, MangaParserSource.TITANMANGA, "titanmanga.com") { override suspend fun loadChapters(mangaUrl: String, document: Document): List { val url = mangaUrl.toAbsoluteUrl(domain).removeSuffix('/') + "/ajax/chapters/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Tonizutoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Tonizutoon.kt index f84c5642d..7410088ab 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Tonizutoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Tonizutoon.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TONIZUTOON", "ToniZu.com", "tr", ContentType.HENTAI) internal class Tonizutoon(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TONIZUTOON, "tonizu.com") { + MadaraParser(context, MangaParserSource.TONIZUTOON, "tonizu.xyz") { override val datePattern = "dd/mm/yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TortugaCeviri.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TortugaCeviri.kt index b18ca40b4..266c37b67 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TortugaCeviri.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/TortugaCeviri.kt @@ -2,9 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("TORTUGACEVIRI", "TortugaCeviri", "tr") internal class TortugaCeviri(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TORTUGACEVIRI, "tortuga-ceviri.com") + MadaraParser(context, MangaParserSource.TORTUGACEVIRI, "tortuga-ceviri.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ViyaFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ViyaFansub.kt index cf03402bc..59b9468c4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ViyaFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ViyaFansub.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser //Manga +18 require login. +@Broken @MangaSourceParser("VIYAFANSUB", "ViyaFansub", "tr", ContentType.HENTAI) internal class ViyaFansub(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.VIYAFANSUB, "viyafansub.com") + MadaraParser(context, MangaParserSource.VIYAFANSUB, "viyafansub.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoonhatti.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoonhatti.kt index 1fc3a923b..497d3e28f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoonhatti.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoonhatti.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("WEBTOONHATTI", "WebtoonHatti", "tr") internal class Webtoonhatti(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.WEBTOONHATTI, "webtoonhatti.net", 20) { + MadaraParser(context, MangaParserSource.WEBTOONHATTI, "webtoonhatti.net", 20) { override val listUrl = "webtoon/" override val tagPrefix = "webtoon-tur/" override val datePattern = "d MMMM" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoontr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoontr.kt index c316eb135..934b00ba0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoontr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/Webtoontr.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("WEBTOONTR", "WebtoonTr", "tr") internal class Webtoontr(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.WEBTOONTR, "webtoontr.net", 16) { + MadaraParser(context, MangaParserSource.WEBTOONTR, "webtoontr.net", 16) { override val tagPrefix = "webtoon-kategori/" override val listUrl = "webtoon/" override val datePattern = "dd/MM/yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiMangaOku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiMangaOku.kt new file mode 100644 index 000000000..2f4d559d4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiMangaOku.kt @@ -0,0 +1,13 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("YAOIMANGAOKU", "YaoiMangaOku", "tr", ContentType.HENTAI) +internal class YaoiMangaOku(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.YAOIMANGAOKU, "yaoimangaoku.com", 16) { + override val datePattern = "d MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiTr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiTr.kt index 18ded601e..45cd820bc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiTr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/YaoiTr.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("YAOITR", "YaoiTr", "tr") internal class YaoiTr(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.YAOITR, "yaoitr.online", 16) { + MadaraParser(context, MangaParserSource.YAOITR, "yaoitr.fun", 16) { override val datePattern = "d MMMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ZamanManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ZamanManga.kt new file mode 100644 index 000000000..78bd3f23c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/tr/ZamanManga.kt @@ -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("ZAMANMANGA", "ZamanManga", "tr") +internal class ZamanManga(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.ZAMANMANGA, "zamanmanga.com") { + override val datePattern = "dd MMMM yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Fecomicc.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Fecomicc.kt new file mode 100644 index 000000000..7b5c4e962 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Fecomicc.kt @@ -0,0 +1,14 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("FECOMICC", "Fecomicc", "vi") +internal class Fecomicc(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.FECOMICC, "fecomicc.xyz", 9) { + override val listUrl = "comic/" + override val tagPrefix = "the-loai/" + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/HentaiCube.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/HentaiCube.kt index 958260232..2b62099af 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/HentaiCube.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/HentaiCube.kt @@ -6,13 +6,13 @@ import org.koitharu.kotatsu.parsers.exception.ParseException import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaPage -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("HENTAICUBE", "HentaiCube", "vi", ContentType.HENTAI) internal class HentaiCube(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.HENTAICUBE, "cbhentai.net") { + MadaraParser(context, MangaParserSource.HENTAICUBE, "hentaicb.mom") { override val datePattern = "dd/MM/yyyy" override val tagPrefix = "the-loai/" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/MangaZodiac.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/MangaZodiac.kt index 0bfb83635..c157298bf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/MangaZodiac.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/MangaZodiac.kt @@ -2,9 +2,9 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("MANGAZODIAC", "MangaZodiac", "vi") internal class MangaZodiac(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.MANGAZODIAC, "mangazodiac.com") + MadaraParser(context, MangaParserSource.MANGAZODIAC, "mangazodiac.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/PinkTeaComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/PinkTeaComic.kt new file mode 100644 index 000000000..6768eeb3e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/PinkTeaComic.kt @@ -0,0 +1,12 @@ +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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.madara.MadaraParser + +@MangaSourceParser("PINKTEACOMIC", "PinkTeaComic", "vi") +internal class PinkTeaComic(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.PINKTEACOMIC, "pinkteacomic.com") { + override val datePattern = "d MMMM, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Quaanhdaocuteo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Quaanhdaocuteo.kt index eff20ff19..e07e439fb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Quaanhdaocuteo.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Quaanhdaocuteo.kt @@ -5,13 +5,13 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaPage -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("QUAANHDAOCUTEO", "Quaanhdaocuteo", "vi", ContentType.HENTAI) internal class Quaanhdaocuteo(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.QUAANHDAOCUTEO, "quaanhdaocuteo.com") { + MadaraParser(context, MangaParserSource.QUAANHDAOCUTEO, "quaanhdaocuteo.com") { override val datePattern = "dd/MM/yyyy" override val selectPage = "p img" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Saytruyenhay.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Saytruyenhay.kt index 1d181c9ab..e661e64df 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Saytruyenhay.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/Saytruyenhay.kt @@ -11,7 +11,7 @@ import java.util.* @MangaSourceParser("SAYTRUYENHAY", "PheTruyen", "vi") internal class Saytruyenhay(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.SAYTRUYENHAY, "phetruyen.vip", 40) { + MadaraParser(context, MangaParserSource.SAYTRUYENHAY, "phetruyen.vip", 40) { override val tagPrefix = "genre/" override val withoutAjax = true diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenTranhDamMyy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenTranhDamMyy.kt index beba7c855..32b1cedc6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenTranhDamMyy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenTranhDamMyy.kt @@ -1,16 +1,18 @@ package org.koitharu.kotatsu.parsers.site.madara.vi 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* +@Broken @MangaSourceParser("TRUYENTRANHDAMMYY", "TruyenTranhDamMyy", "vi") internal class TruyenTranhDamMyy(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.TRUYENTRANHDAMMYY, "truyentranhdammyy.net") { + MadaraParser(context, MangaParserSource.TRUYENTRANHDAMMYY, "truyentranhdammyy.net") { override val postReq = true override suspend fun loadChapters(mangaUrl: String, document: Document): List { val mangaId = document.select("div#manga-chapters-holder").attr("data-id") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenVn.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenVn.kt new file mode 100644 index 000000000..4ae86213c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/vi/TruyenVn.kt @@ -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("TRUYENVN", "TruyenVn", "vi", ContentType.HENTAI) +internal class TruyenVn(context: MangaLoaderContext) : + MadaraParser(context, MangaParserSource.TRUYENVN, "truyenvn.cam", 20) { + override val listUrl = "truyen-tranh/" + override val tagPrefix = "the-loai/" + override val datePattern = "dd/MM/yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/zh/Bakamh.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/zh/Bakamh.kt index 5aff0c7a4..2595158ef 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/zh/Bakamh.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madara/zh/Bakamh.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.madara.zh import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madara.MadaraParser @MangaSourceParser("BAKAMH", "Bakamh", "zh") internal class Bakamh(context: MangaLoaderContext) : - MadaraParser(context, MangaSource.BAKAMH, "bakamh.com") { + MadaraParser(context, MangaParserSource.BAKAMH, "bakamh.com") { override val datePattern = "YYYY 年 M 月 d 日" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/MadthemeParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/MadthemeParser.kt index c4ace3444..aed6beb63 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/MadthemeParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/MadthemeParser.kt @@ -14,7 +14,7 @@ import java.util.* internal abstract class MadthemeParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 48, ) : PagedMangaParser(context, source, pageSize) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/BeeHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/BeeHentai.kt index 0c4febe68..0a8b53128 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/BeeHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/BeeHentai.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madtheme.en 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madtheme.MadthemeParser @MangaSourceParser("BEEHENTAI", "BeeHentai", "en", ContentType.HENTAI) internal class BeeHentai(context: MangaLoaderContext) : - MadthemeParser(context, MangaSource.BEEHENTAI, "beehentai.com") { + MadthemeParser(context, MangaParserSource.BEEHENTAI, "beehentai.com") { override val selectDesc = "div.section-body" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaBuddy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaBuddy.kt index 909099a1b..dba7aa3d4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaBuddy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaBuddy.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madtheme.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madtheme.MadthemeParser @MangaSourceParser("MANGABUDDY", "MangaBuddy", "en") internal class MangaBuddy(context: MangaLoaderContext) : - MadthemeParser(context, MangaSource.MANGABUDDY, "mangabuddy.com") + MadthemeParser(context, MangaParserSource.MANGABUDDY, "mangabuddy.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaCute.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaCute.kt index a6e4c65fb..7836790f8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaCute.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaCute.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madtheme.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madtheme.MadthemeParser @MangaSourceParser("MANGACUTE", "MangaCute", "en") internal class MangaCute(context: MangaLoaderContext) : - MadthemeParser(context, MangaSource.MANGACUTE, "mangacute.com") + MadthemeParser(context, MangaParserSource.MANGACUTE, "mangacute.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaForest.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaForest.kt index 2f863cf47..02f462311 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaForest.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaForest.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madtheme.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madtheme.MadthemeParser @MangaSourceParser("MANGAFOREST", "MangaForest", "en") internal class MangaForest(context: MangaLoaderContext) : - MadthemeParser(context, MangaSource.MANGAFOREST, "mangaforest.me") + MadthemeParser(context, MangaParserSource.MANGAFOREST, "mangaforest.me") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaJinx.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaJinx.kt index 9645918db..f3e86d06b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaJinx.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaJinx.kt @@ -4,14 +4,14 @@ import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madtheme.MadthemeParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat @MangaSourceParser("MANGAJINX", "MangaJinx", "en") internal class MangaJinx(context: MangaLoaderContext) : - MadthemeParser(context, MangaSource.MANGAJINX, "mangajinx.com") { + MadthemeParser(context, MangaParserSource.MANGAJINX, "mgjinx.com") { override val listUrl = "search" override suspend fun getChapters(doc: Document): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaPuma.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaPuma.kt index f8eda1e51..f510acb0b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaPuma.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/MangaPuma.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madtheme.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madtheme.MadthemeParser @MangaSourceParser("MANGAPUMA", "MangaPuma", "en") internal class MangaPuma(context: MangaLoaderContext) : - MadthemeParser(context, MangaSource.MANGAPUMA, "mangapuma.com") + MadthemeParser(context, MangaParserSource.MANGAPUMA, "mangapuma.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/Mangaxyz.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/Mangaxyz.kt index ce84137bc..c343b8ca1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/Mangaxyz.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/Mangaxyz.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madtheme.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madtheme.MadthemeParser @MangaSourceParser("MANGAXYZ", "MangaXyz", "en") internal class Mangaxyz(context: MangaLoaderContext) : - MadthemeParser(context, MangaSource.MANGAXYZ, "mangaxyz.com") + MadthemeParser(context, MangaParserSource.MANGAXYZ, "mangaxyz.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/ManhuaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/ManhuaScan.kt index 9d1dadf11..cd29c461b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/ManhuaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/ManhuaScan.kt @@ -1,6 +1,7 @@ package org.koitharu.kotatsu.parsers.site.madtheme.en 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.* @@ -9,9 +10,10 @@ import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat import java.util.* -@MangaSourceParser("MANHUASCAN", "ManhuaScan.io", "en") +@Broken +@MangaSourceParser("MANHUASCAN", "kaliscan.io", "en") internal class ManhuaScan(context: MangaLoaderContext) : - MadthemeParser(context, MangaSource.MANHUASCAN, "manhuascan.io") { + MadthemeParser(context, MangaParserSource.MANHUASCAN, "manhuascan.io") { override val sourceLocale: Locale = Locale.ENGLISH override val listUrl = "search" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/TooniTube.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/TooniTube.kt index 34aa29ea7..f3dbd46a3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/TooniTube.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/TooniTube.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madtheme.en 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madtheme.MadthemeParser @MangaSourceParser("TOONITUBE", "TooniTube", "en", ContentType.HENTAI) internal class TooniTube(context: MangaLoaderContext) : - MadthemeParser(context, MangaSource.TOONITUBE, "toonitube.com") { + MadthemeParser(context, MangaParserSource.TOONITUBE, "toonitube.com") { override val selectDesc = "div.summary div.section-body p.content" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/ToonilyMe.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/ToonilyMe.kt index ef25c4b70..7bb3d1983 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/ToonilyMe.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/ToonilyMe.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.madtheme.en 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madtheme.MadthemeParser @MangaSourceParser("TOONILY_ME", "Toonily.Me", "en", ContentType.HENTAI) internal class ToonilyMe(context: MangaLoaderContext) : - MadthemeParser(context, MangaSource.TOONILY_ME, "toonily.me") { + MadthemeParser(context, MangaParserSource.TOONILY_ME, "toonily.me") { override val selectDesc = "div.summary div.section-body p.content" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/TrueManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/TrueManga.kt index db67959ed..0b6cb0b70 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/TrueManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/madtheme/en/TrueManga.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.madtheme.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.madtheme.MadthemeParser @MangaSourceParser("TRUEMANGA", "TrueManga", "en") internal class TrueManga(context: MangaLoaderContext) : - MadthemeParser(context, MangaSource.TRUEMANGA, "truemanga.com") + MadthemeParser(context, MangaParserSource.TRUEMANGA, "truemanga.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/Manga18Parser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/Manga18Parser.kt index 3c8255ed7..e89be8030 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/Manga18Parser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/Manga18Parser.kt @@ -13,7 +13,7 @@ import java.util.* internal abstract class Manga18Parser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 20, ) : PagedMangaParser(context, source, pageSize) { @@ -132,6 +132,8 @@ internal abstract class Manga18Parser( protected open val selectState = "div.item:contains(Status) div.info_value" protected open val selectAlt = "div.item:contains(Other name) div.info_value" protected open val selectTag = "div.item:contains(Categories) div.info_value a" + protected open val selectAuthor = + "div.info_label:contains(author) + div.info_value, div.info_label:contains(autor) + div.info_value" override suspend fun getDetails(manga: Manga): Manga = coroutineScope { val fullUrl = manga.url.toAbsoluteUrl(domain) @@ -152,7 +154,8 @@ internal abstract class Manga18Parser( } } - val alt = doc.body().select(selectAlt).text() + val alt = body.selectFirst(selectAlt)?.text().takeIf { it != "Updating" || it.isNotEmpty() } + val author = body.selectFirst(selectAuthor)?.text().takeIf { it != "Updating" } manga.copy( tags = doc.body().select(selectTag).mapNotNullToSet { a -> @@ -164,6 +167,7 @@ internal abstract class Manga18Parser( }, description = desc, altTitle = alt, + author = author, state = state, chapters = chaptersDeferred.await(), ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Comic1000.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Comic1000.kt index 29ec27250..9c5b9bb2c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Comic1000.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Comic1000.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.manga18.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.manga18.Manga18Parser +@Broken @MangaSourceParser("COMIC1000", "Comic1000", "en") internal class Comic1000(context: MangaLoaderContext) : - Manga18Parser(context, MangaSource.COMIC1000, "comic1000.com") + Manga18Parser(context, MangaParserSource.COMIC1000, "comic1000.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Hentai3zCc.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Hentai3zCc.kt index 71a72bc86..53c29f7cb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Hentai3zCc.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Hentai3zCc.kt @@ -3,13 +3,16 @@ package org.koitharu.kotatsu.parsers.site.manga18.en import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN import org.koitharu.kotatsu.parsers.site.manga18.Manga18Parser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("HENTAI3ZCC", "Hentai3z.cc", "en", ContentType.HENTAI) internal class Hentai3zCc(context: MangaLoaderContext) : - Manga18Parser(context, MangaSource.HENTAI3ZCC, "hentai3z.cc") { + Manga18Parser(context, MangaParserSource.HENTAI3ZCC, "hentai3z.cc") { override fun parseMangaList(doc: Document): List { return doc.select("div.story_item").map { div -> diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Manga18.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Manga18.kt index 4aee808ca..b0b328882 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Manga18.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/Manga18.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.manga18.en 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.manga18.Manga18Parser @MangaSourceParser("MANGA18", "Manga18", "en", ContentType.HENTAI) internal class Manga18(context: MangaLoaderContext) : - Manga18Parser(context, MangaSource.MANGA18, "manga18.club") + Manga18Parser(context, MangaParserSource.MANGA18, "manga18.club") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/PornComic18.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/PornComic18.kt index febfb707a..c807c8542 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/PornComic18.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/en/PornComic18.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.manga18.en 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.manga18.Manga18Parser @MangaSourceParser("PORNCOMIC18", "18PornComic", "en", ContentType.HENTAI) internal class PornComic18(context: MangaLoaderContext) : - Manga18Parser(context, MangaSource.PORNCOMIC18, "18porncomic.com") { + Manga18Parser(context, MangaParserSource.PORNCOMIC18, "18porncomic.com") { override val selectTag = "div.item:not(.info_label) div.info_value a" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/es/Tumanhwas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/es/Tumanhwas.kt index 8c8101dc5..7d6cc59c3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/es/Tumanhwas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/es/Tumanhwas.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.manga18.es 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.manga18.Manga18Parser @MangaSourceParser("TUMANHWAS", "Tumanhwas", "es", ContentType.HENTAI) internal class Tumanhwas(context: MangaLoaderContext) : - Manga18Parser(context, MangaSource.TUMANHWAS, "tumanhwas.club") { + Manga18Parser(context, MangaParserSource.TUMANHWAS, "tumanhwas.club") { override val selectTag = "div.item:contains(Géneros) div.info_value a" override val selectAlt = "div.item:contains(Títulos alternativos) div.info_value" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/zh/Hanman18.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/zh/Hanman18.kt index 6e2e08955..6181d3afa 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/zh/Hanman18.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/manga18/zh/Hanman18.kt @@ -5,7 +5,7 @@ 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.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.manga18.Manga18Parser import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl @@ -15,7 +15,7 @@ import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow @MangaSourceParser("HANMAN18", "Hanman18", "zh", ContentType.HENTAI) internal class Hanman18(context: MangaLoaderContext) : - Manga18Parser(context, MangaSource.HANMAN18, "hanman18.com") { + Manga18Parser(context, MangaParserSource.HANMAN18, "hanman18.com") { override suspend fun getChapters(doc: Document): List { return doc.body().select(selectChapter).mapChapters(reversed = true) { i, li -> diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/MangaboxParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/MangaboxParser.kt index ba27313c8..a887ab0ba 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/MangaboxParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/MangaboxParser.kt @@ -13,7 +13,7 @@ import java.util.* internal abstract class MangaboxParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, pageSize: Int = 24, ) : PagedMangaParser(context, source, pageSize) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/MangaNeloCom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/MangaNeloCom.kt index fb56dc68d..71065ded2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/MangaNeloCom.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/MangaNeloCom.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.mangabox.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangabox.MangaboxParser @MangaSourceParser("MANGANELO_COM", "MangaNelo.com", "en") internal class MangaNeloCom(context: MangaLoaderContext) : - MangaboxParser(context, MangaSource.MANGANELO_COM) { + MangaboxParser(context, MangaParserSource.MANGANELO_COM) { override val configKeyDomain = ConfigKey.Domain("m.manganelo.com", "chapmanganelo.com") override val otherDomain = "chapmanganelo.com" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangabat.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangabat.kt index 23efaaba8..41ca257db 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangabat.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangabat.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.mangabox.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangabox.MangaboxParser @MangaSourceParser("HMANGABAT", "MangaBat", "en") internal class Mangabat(context: MangaLoaderContext) : - MangaboxParser(context, MangaSource.HMANGABAT) { + MangaboxParser(context, MangaParserSource.HMANGABAT) { override val configKeyDomain = ConfigKey.Domain("h.mangabat.com", "readmangabat.com") override val otherDomain = "readmangabat.com" override val selectTagMap = "div.panel-category p.pn-category-row:not(.pn-category-row-border) a" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangairo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangairo.kt index 5c1f6cede..c6cac7e09 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangairo.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangairo.kt @@ -5,20 +5,14 @@ import kotlinx.coroutines.coroutineScope import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey -import org.koitharu.kotatsu.parsers.model.Manga -import org.koitharu.kotatsu.parsers.model.MangaListFilter -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.model.MangaState -import org.koitharu.kotatsu.parsers.model.MangaTag -import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN -import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.mangabox.MangaboxParser import org.koitharu.kotatsu.parsers.util.* -import java.util.EnumSet +import java.util.* @MangaSourceParser("MANGAIRO", "MangaIro", "en") internal class Mangairo(context: MangaLoaderContext) : - MangaboxParser(context, MangaSource.MANGAIRO) { + MangaboxParser(context, MangaParserSource.MANGAIRO) { override val configKeyDomain = ConfigKey.Domain("w.mangairo.com", "chap.mangairo.com") override val otherDomain = "chap.mangairo.com" override val datePattern = "MMM-dd-yy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangakakalot.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangakakalot.kt index 09d7f52cb..9e95a3654 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangakakalot.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Mangakakalot.kt @@ -8,11 +8,11 @@ import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.mangabox.MangaboxParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat -import java.util.EnumSet +import java.util.* @MangaSourceParser("MANGAKAKALOT", "Mangakakalot.com", "en") internal class Mangakakalot(context: MangaLoaderContext) : - MangaboxParser(context, MangaSource.MANGAKAKALOT) { + MangaboxParser(context, MangaParserSource.MANGAKAKALOT) { override val configKeyDomain = ConfigKey.Domain("mangakakalot.com", "chapmanganato.com") override val availableSortOrders: Set = EnumSet.of( SortOrder.UPDATED, @@ -32,7 +32,9 @@ internal class Mangakakalot(context: MangaLoaderContext) : is MangaListFilter.Search -> { append(searchUrl) - append(filter.query.urlEncoded()) + val regex = Regex("[^A-Za-z0-9 ]") + val q = regex.replace(filter.query, "") + append(q.replace(" ", "_")) append("?page=") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/MangakakalotTv.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/MangakakalotTv.kt index 061a0736f..da550d594 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/MangakakalotTv.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/MangakakalotTv.kt @@ -8,13 +8,13 @@ import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.mangabox.MangaboxParser import org.koitharu.kotatsu.parsers.util.* -import java.util.EnumSet +import java.util.* @MangaSourceParser("MANGAKAKALOTTV", "Mangakakalot.tv", "en") internal class MangakakalotTv(context: MangaLoaderContext) : - MangaboxParser(context, MangaSource.MANGAKAKALOTTV) { + MangaboxParser(context, MangaParserSource.MANGAKAKALOTTV) { - override val configKeyDomain = ConfigKey.Domain("ww7.mangakakalot.tv") + override val configKeyDomain = ConfigKey.Domain("ww8.mangakakalot.tv") override val searchUrl = "/search/" override val listUrl = "/manga_list" override val availableSortOrders: Set = EnumSet.of( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Manganato.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Manganato.kt index 0a0e45830..a41005c31 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Manganato.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangabox/en/Manganato.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.mangabox.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangabox.MangaboxParser @MangaSourceParser("MANGANATO", "Manganato", "en") internal class Manganato(context: MangaLoaderContext) : - MangaboxParser(context, MangaSource.MANGANATO) { + MangaboxParser(context, MangaParserSource.MANGANATO) { override val configKeyDomain = ConfigKey.Domain( "manganato.com", "chapmanganato.to", diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/MangAdventureParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/MangAdventureParser.kt index d41ddcc07..f19436a84 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/MangAdventureParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/MangAdventureParser.kt @@ -15,7 +15,7 @@ import java.util.* internal abstract class MangAdventureParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 25, ) : PagedMangaParser(context, source, pageSize) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/en/ArcRelight.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/en/ArcRelight.kt index 03b90a288..e29b64b2a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/en/ArcRelight.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/en/ArcRelight.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.mangadventure.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.Manga -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangadventure.MangAdventureParser @MangaSourceParser("ARCRELIGHT", "Arc-Relight", "en") internal class ArcRelight(context: MangaLoaderContext) : - MangAdventureParser(context, MangaSource.ARCRELIGHT, "arc-relight.com", pageSize = 10) { + MangAdventureParser(context, MangaParserSource.ARCRELIGHT, "arc-relight.com", pageSize = 10) { private val franchises = setOf("Jubilee", "Steins;Gate", "Robotics;Notes", "Chaos;Head") override suspend fun getRelatedManga(seed: Manga): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/en/AssortedScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/en/AssortedScans.kt index 2f601428f..de43b01d7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/en/AssortedScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangadventure/en/AssortedScans.kt @@ -3,13 +3,13 @@ package org.koitharu.kotatsu.parsers.site.mangadventure.en import androidx.collection.ArraySet import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.mangadventure.MangAdventureParser @MangaSourceParser("ASSORTEDSCANS", "Assorted Scans", "en") internal class AssortedScans(context: MangaLoaderContext) : - MangAdventureParser(context, MangaSource.ASSORTEDSCANS, "assortedscans.com") { + MangAdventureParser(context, MangaParserSource.ASSORTEDSCANS, "assortedscans.com") { // tags that don't have any series and make the tests fail private val emptyTags = setOf( "Doujinshi", "Harem", "Hentai", "Mecha", diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt index 29f37e6e7..2e7eb86ae 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/MangaReaderParser.kt @@ -21,7 +21,7 @@ import java.util.* internal abstract class MangaReaderParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int, searchPageSize: Int, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ArAreaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ArAreaScans.kt index 670c6ed97..41986b3c1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ArAreaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ArAreaScans.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("ARAREASCANS", "ArAreaScans", "ar") internal class ArAreaScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ARAREASCANS, "ar.areascans.org", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.ARAREASCANS, "ar.areascans.org", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/AreaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/AreaScans.kt index 8c68cae70..03e49c177 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/AreaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/AreaScans.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource 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, MangaParserSource.AREASCANS, "www.areascans.net", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/CrowScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/CrowScans.kt deleted file mode 100644 index 88af36870..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/CrowScans.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.mangareader.ar - -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("CROWSCANS", "CrowScans", "ar") -internal class CrowScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.CROWSCANS, "crowscans.com", pageSize = 30, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/FlAres.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/FlAres.kt index 0c203a5d0..3abdc1904 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/FlAres.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/FlAres.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("FLARES", "Fl-Ares", "ar") internal class FlAres(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.FLARES, "fl-ares.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.FLARES, "fl-ares.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" override val encodedSrc = true override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Hijalacom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Hijalacom.kt index 7e3829089..0d7e342c4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Hijalacom.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Hijalacom.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("HIJALACOM", "Hijalacom", "ar") internal class Hijalacom(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.HIJALACOM, "hijala.com", pageSize = 30, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.HIJALACOM, "hijala.com", pageSize = 30, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaAtrend.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaAtrend.kt index 9639f6fa3..590ebf7c3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaAtrend.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaAtrend.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANGAATREND", "MangaAtrend", "ar") internal class MangaAtrend(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAATREND, "mangaatrend.net", pageSize = 30, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.MANGAATREND, "mangaatrend.net", pageSize = 30, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaFlame.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaFlame.kt index 713dcbf8d..20f4885a9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaFlame.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaFlame.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANGAFLAME", "MangaFlame", "ar") internal class MangaFlame(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAFLAME, "mangaflame.org", pageSize = 20, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.MANGAFLAME, "mangaflame.org", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaPro.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaPro.kt index a3d2cede1..79a3ebdef 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaPro.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/MangaPro.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANGAPRO", "MangaPro", "ar") internal class MangaPro(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAPRO, "promanga.pro", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANGAPRO, "promanga.pro", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt index 1d1d7a8a5..3d8cdb84d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Manjanoon.kt @@ -4,18 +4,13 @@ import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl -import org.koitharu.kotatsu.parsers.util.domain -import org.koitharu.kotatsu.parsers.util.generateUid -import org.koitharu.kotatsu.parsers.util.mapChapters -import org.koitharu.kotatsu.parsers.util.parseHtml -import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.* -@MangaSourceParser("MANJANOON", "Manjanoon.org", "ar") +@MangaSourceParser("MANJANOON", "Manjanoon", "ar") internal class Manjanoon(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANJANOON, "manjanoon.org", pageSize = 21, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANJANOON, "manjanoon.co", pageSize = 21, searchPageSize = 10) { override suspend fun getDetails(manga: Manga): Manga { val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/NoonScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/NoonScan.kt new file mode 100644 index 000000000..b6596c373 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/NoonScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.ar + +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("NOONSCAN", "NoonScan", "ar") +internal class NoonScan(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.NOONSCAN, "noonscan.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Normoyun.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Normoyun.kt index 542c1d761..340004e29 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Normoyun.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/Normoyun.kt @@ -8,9 +8,9 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat -@MangaSourceParser("NORMOYUN", "Normoyun", "ar") +@MangaSourceParser("NORMOYUN", "MaxLevelTeam", "ar") internal class Normoyun(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.NORMOYUN, "normoyun.com", pageSize = 42, searchPageSize = 39) { + MangaReaderParser(context, MangaParserSource.NORMOYUN, "maxlevelteam.com", pageSize = 42, searchPageSize = 39) { override val datePattern = "MMMM dd, yyyy" override val selectMangaList = ".listupd .bs .bsx" @@ -98,25 +98,11 @@ internal class Normoyun(context: MangaLoaderContext) : } override suspend fun parseInfo(docs: Document, manga: Manga, chapters: List): Manga { - - /// set if is table - val states = docs.selectFirst("div.spe span:contains(Ongoing)")?.text() - - val state = if (states.isNullOrEmpty()) { - "completed" + val mangaState = if (states.isNullOrEmpty()) { + MangaState.FINISHED } else { - "ongoing" - } - - val mangaState = state.let { - when (it) { - "ongoing" -> MangaState.ONGOING - - "completed" -> MangaState.FINISHED - - else -> null - } + MangaState.ONGOING } val author = docs.selectFirst("span.author i")?.text() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/PeachBl.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/PeachBl.kt new file mode 100644 index 000000000..3435fbdab --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/PeachBl.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.ar + +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 +import java.util.* + +@MangaSourceParser("PEACHBL", "PeachBl", "ar", ContentType.HENTAI) +internal class PeachBl(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.PEACHBL, "peach-bl.com", pageSize = 20, searchPageSize = 10) { + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/PotatoManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/PotatoManga.kt index 745f7840e..97944d114 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/PotatoManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/PotatoManga.kt @@ -1,18 +1,19 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.json.JSONObject +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.MangaPage -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.util.* -import java.util.ArrayList +@Broken @MangaSourceParser("POTATOMANGA", "PotatoManga", "ar") internal class PotatoManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.POTATOMANGA, "potatomanga.xyz", pageSize = 30, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.POTATOMANGA, "potatomanga.xyz", pageSize = 30, searchPageSize = 10) { override val listUrl = "/series" override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ScarManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ScarManga.kt index 98596d948..c10eb11b8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ScarManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ScarManga.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SCARMANGA", "ScarManga", "ar") internal class ScarManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SCARMANGA, "scarmanga.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.SCARMANGA, "scarmanga.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/StellarSaber.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/StellarSaber.kt index d559cccd2..9e108cc87 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/StellarSaber.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/StellarSaber.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("STELLARSABER", "StellarSaber", "ar") internal class StellarSaber(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.STELLARSABER, "stellarsaber.pro", pageSize = 32, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.STELLARSABER, "stellarsaber.pro", pageSize = 32, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ThunderScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ThunderScans.kt index 400fa3f15..d47e5dc4b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ThunderScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/ThunderScans.kt @@ -2,11 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("THUNDERSCANS", "ThunderScans", "ar") internal class ThunderScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.THUNDERSCANS, "thunderscans.com", pageSize = 32, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.THUNDERSCANS, "thunderscans.com", pageSize = 32, searchPageSize = 10) { override val isTagsExclusionSupported = false + override val selectChapter = ".eplister > ul > li" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/UmiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/UmiManga.kt index 266c73cb9..e19efbc12 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/UmiManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/UmiManga.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("UMIMANGA", "UmiManga", "ar") internal class UmiManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.UMIMANGA, "www.umimanga.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.UMIMANGA, "www.umimanga.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/VexManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/VexManga.kt index 035325e1e..cd10379aa 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/VexManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ar/VexManga.kt @@ -2,16 +2,19 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.* +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.WordSet import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.util.* import java.text.DateFormat import java.text.SimpleDateFormat -import java.util.Calendar +import java.util.* @MangaSourceParser("VEXMANGA", "VexManga", "ar") internal class VexManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.VEXMANGA, "vexmanga.com", pageSize = 10, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.VEXMANGA, "vexmanga.com", pageSize = 10, searchPageSize = 10) { override val selectMangaList = ".listarchives .latest-recom" override val selectChapter = ".ulChapterList > a" override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/cz/EvilManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/cz/EvilManga.kt index f1ea39388..c5678f7dc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/cz/EvilManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/cz/EvilManga.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.mangareader.cz 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("EVILMANGA", "EvilManga", "cs", ContentType.HENTAI) internal class EvilManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.EVILMANGA, "evil-manga.eu", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.EVILMANGA, "evil-manga.eu", pageSize = 20, searchPageSize = 10) { override val datePattern = "d MMMM, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AgsComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AgsComics.kt index d0f660eb4..57688f769 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AgsComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AgsComics.kt @@ -2,12 +2,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("AGSCOMICS", "AgsComics", "en") internal class AgsComics(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.AGSCOMICS, "agscomics.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.AGSCOMICS, "agscomics.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AnigliScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AnigliScans.kt index 5b7342dc2..1840e3696 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AnigliScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AnigliScans.kt @@ -2,12 +2,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("ANIGLISCANS", "AnigliScans", "en") internal class AnigliScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ANIGLISCANS, "anigliscans.xyz", pageSize = 47, searchPageSize = 47) { + MangaReaderParser(context, MangaParserSource.ANIGLISCANS, "anigliscans.xyz", pageSize = 47, searchPageSize = 47) { override val listUrl = "/series" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ArvenScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ArvenScans.kt index aef8f554f..cf511e416 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ArvenScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ArvenScans.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("ARVENSCANS", "ArvenScans", "en") +@MangaSourceParser("ARVENSCANS", "ArvenComics", "en") internal class ArvenScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ARVENSCANS, "arvenscans.org", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.ARVENSCANS, "arvencomics.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AscalonScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AscalonScans.kt index 22dc1a4ee..3a04d0f5b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AscalonScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AscalonScans.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource 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, MangaParserSource.ASCALONSCANS, "ascalonscans.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AstraScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AstraScans.kt index f3d2c3914..3b0214d24 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AstraScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AstraScans.kt @@ -2,11 +2,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource 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, MangaParserSource.ASTRASCANS, "astrascans.org", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false + override val listUrl = "/series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AsuraScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AsuraScansParser.kt deleted file mode 100644 index 5b89a08d8..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/AsuraScansParser.kt +++ /dev/null @@ -1,14 +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.MangaSource -import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser - -@MangaSourceParser("ASURASCANS", "AsuraScans", "en") -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 -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BirdManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BirdManga.kt index bdc26ee72..3f851c5df 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BirdManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/BirdManga.kt @@ -2,12 +2,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("BIRDMANGA", "BirdManga", "en") internal class BirdManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.BIRDMANGA, "birdmanga.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.BIRDMANGA, "birdmanga.com", pageSize = 20, searchPageSize = 10) { override val encodedSrc = true override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Constellarcomic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Constellarcomic.kt index 12f17b2df..118ddbee7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Constellarcomic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Constellarcomic.kt @@ -2,13 +2,22 @@ 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.* +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("CONSTELLARCOMIC", "ConstellarComic", "en", ContentType.HENTAI) internal class Constellarcomic(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.CONSTELLARCOMIC, "constellarcomic.com", pageSize = 30, searchPageSize = 18) { + MangaReaderParser( + context, + MangaParserSource.CONSTELLARCOMIC, + "constellarcomic.com", + pageSize = 30, + searchPageSize = 18, + ) { override val selectTestScript = "script:containsData(ts_rea_der_._run)" override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt index 9e639f328..e5d664a2d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CosmicScansParser.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("COSMICSCANS", "CosmicScans.com", "en") internal class CosmicScansParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.COSMICSCANS, "cosmic-scans.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.COSMICSCANS, "cosmic-scans.com", pageSize = 20, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CulturedWorks.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CulturedWorks.kt index 82b52c208..9913898ae 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CulturedWorks.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CulturedWorks.kt @@ -2,11 +2,17 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("CULTUREDWORKS", "CulturedWorks", "en") internal class CulturedWorks(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.CULTUREDWORKS, "culturedworks.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser( + context, + MangaParserSource.CULTUREDWORKS, + "culturedworks.com", + pageSize = 20, + searchPageSize = 10, + ) { override val selectMangaList = ".listupd .bs .bsx" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CypherScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CypherScans.kt index 9efbd3891..dadf6b07d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CypherScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/CypherScans.kt @@ -2,9 +2,9 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("CYPHERSCANS", "CypherScans", "en") internal class CypherScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.CYPHERSCANS, "cypherscans.xyz", pageSize = 20, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.CYPHERSCANS, "cypherscans.xyz", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DrakeScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DrakeScans.kt index 424ac9b0c..0d47dd630 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DrakeScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/DrakeScans.kt @@ -2,9 +2,9 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("DRAKESCANS", "DrakeScans", "en") +@MangaSourceParser("DRAKESCANS", "DrakeComic", "en") internal class DrakeScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.DRAKESCANS, "drakescans.com", 20, 10) + MangaReaderParser(context, MangaParserSource.DRAKESCANS, "drakecomic.com", 20, 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/EDoujin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/EDoujin.kt index e39965bb6..fff0f3a14 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/EDoujin.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/EDoujin.kt @@ -3,9 +3,9 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("EDOUJIN", "EDoujin", "en", ContentType.HENTAI) +@MangaSourceParser("EDOUJIN", "EHentaiManga", "en", ContentType.HENTAI) internal class EDoujin(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.EDOUJIN, "edoujin.net", pageSize = 25, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.EDOUJIN, "ehentaimanga.com", pageSize = 25, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Elarcpage.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Elarcpage.kt index 50f970885..182db24b4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Elarcpage.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Elarcpage.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("ELARCPAGE", "ElarcPage", "en") internal class Elarcpage(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ELARCPAGE, "elarctoon.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.ELARCPAGE, "elarctoon.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/EnThunderScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/EnThunderScans.kt new file mode 100644 index 000000000..c8a20a21e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/EnThunderScans.kt @@ -0,0 +1,19 @@ +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("ENTHUNDERSCANS", "EnThunderScans", "en") +internal class EnThunderScans(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.ENTHUNDERSCANS, + "en-thunderscans.com", + pageSize = 30, + searchPageSize = 10, + ) { + override val listUrl = "/comics" + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt new file mode 100644 index 000000000..53cc8f8f4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ErosScans.kt @@ -0,0 +1,10 @@ +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("EROSSCANS", "ErosScans", "en") +internal class ErosScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.EROSSCANS, "erosscans.xyz", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FlameComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FlameComics.kt index fcdc78d50..b926e2997 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FlameComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FlameComics.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("FLAMECOMICS", "FlameComics", "en") internal class FlameComics(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.FLAMECOMICS, "flamecomics.com", pageSize = 24, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.FLAMECOMICS, "flamecomics.me", pageSize = 24, searchPageSize = 10) { override val listUrl = "/series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakComic.kt index 8020b4d80..0d818b51a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakComic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakComic.kt @@ -3,9 +3,10 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en import androidx.collection.ArrayMap import kotlinx.coroutines.sync.withLock import okhttp3.HttpUrl.Companion.toHttpUrlOrNull +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrl @@ -13,9 +14,10 @@ import org.koitharu.kotatsu.parsers.util.domain import org.koitharu.kotatsu.parsers.util.parseHtml import org.koitharu.kotatsu.parsers.util.toTitleCase +@Broken @MangaSourceParser("FREAKCOMIC", "FreakComic", "en") internal class FreakComic(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.FREAKCOMIC, "freakcomic.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.FREAKCOMIC, "freakcomic.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false override val selectMangaList = ".listupd .lastest-serie" override val selectMangaListImg = "img" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakScans.kt index f02dffa33..dfb0bdb8b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FreakScans.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("FREAKSCANS", "FreakScans", "en") internal class FreakScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.FREAKSCANS, "freakscans.com", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.FREAKSCANS, "freakscans.com", pageSize = 20, searchPageSize = 20) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FuryManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FuryManga.kt new file mode 100644 index 000000000..1cba6e1f0 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/FuryManga.kt @@ -0,0 +1,14 @@ +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("FURYMANGA", "FuryManga", "en") +internal class FuryManga(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.FURYMANGA, "furymanga.com", pageSize = 30, searchPageSize = 10) { + override val listUrl = "/comics" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Hentai20.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Hentai20.kt index 56af7acaa..8621ea76c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Hentai20.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Hentai20.kt @@ -3,9 +3,9 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("HENTAI20", "Hentai20", "en", ContentType.HENTAI) internal class Hentai20(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.HENTAI20, "hentai20.io", pageSize = 20, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.HENTAI20, "hentai20.io", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KaiScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KaiScans.kt index 608eb9dd6..87b4972cf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KaiScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KaiScans.kt @@ -2,12 +2,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +// Redirect to luacomic.com @MangaSourceParser("KAISCANS", "KaiScans", "en") internal class KaiScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KAISCANS, "kaiscans.org", pageSize = 20, searchPageSize = 10) { - override val listUrl = "/series" + MangaReaderParser(context, MangaParserSource.KAISCANS, "luacomic.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KomikLabParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KomikLabParser.kt index abe683733..b2411952e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KomikLabParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/KomikLabParser.kt @@ -2,12 +2,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("KOMIKLAB", "KomikLab", "en") internal class KomikLabParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKLAB, "komiklab.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KOMIKLAB, "komiklab.com", pageSize = 20, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LuaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LuaScans.kt index d257c6cad..536ee42ee 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LuaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LuaScans.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("LUASCANS", "LuaScans", "en") internal class LuaScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.LUASCANS, "luascans.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.LUASCANS, "luacomic.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LuminousScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LuminousScans.kt index c72749f84..af7220b3e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LuminousScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LuminousScans.kt @@ -2,12 +2,19 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("LUMINOUSSCANS", "LuminousScans", "en") internal class LuminousScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.LUMINOUSSCANS, "lumitoon.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser( + context, + MangaParserSource.LUMINOUSSCANS, + "luminous-scans.com", + pageSize = 20, + searchPageSize = 10, + ) { + override val listUrl = "/series" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LunarScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LunarScan.kt index 71a7c6360..b4697867b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LunarScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/LunarScan.kt @@ -3,12 +3,12 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("LUNAR_SCAN", "LunarScan.org", "en", ContentType.HENTAI) internal class LunarScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.LUNAR_SCAN, "lunarscan.org", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.LUNAR_SCAN, "lunarscan.org", pageSize = 20, searchPageSize = 20) { override val listUrl = "/series" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MagusManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MagusManga.kt index 89e0b69fb..f4d0bcde8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MagusManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MagusManga.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MAGUSMANGA", "MagusManga", "en") internal class MagusManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MAGUSMANGA, "vofeg.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MAGUSMANGA, "vofeg.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxyParser.kt similarity index 50% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxy.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxyParser.kt index 1bd0be335..ca89c2f5f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGalaxyParser.kt @@ -1,12 +1,13 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken // Not dead, changed template @MangaSourceParser("MANGAGALAXY", "MangaGalaxy", "en") -internal class MangaGalaxy(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAGALAXY, "mangagalaxy.me", 20, 16) { - override val listUrl = "/series" -} +internal class MangaGalaxyParser(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MANGAGALAXY, "mangagalaxy.org", 20, 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGojo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGojo.kt new file mode 100644 index 000000000..763eb44c5 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/MangaGojo.kt @@ -0,0 +1,10 @@ +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("MANGAGOJO", "MangaGojo", "en") +internal class MangaGojo(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MANGAGOJO, "mangagojo.com", 30, 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhuaScanUs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhuaScanUs.kt index d52dc06d4..46b8a8f1b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhuaScanUs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhuaScanUs.kt @@ -3,12 +3,12 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANHUASCANUS", "ManhuaScan.Us", "en", ContentType.HENTAI) internal class ManhuaScanUs(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHUASCANUS, "manhuascan.us", pageSize = 30, searchPageSize = 30) { + MangaReaderParser(context, MangaParserSource.MANHUASCANUS, "manhuascan.us", pageSize = 30, searchPageSize = 30) { override val datePattern = "dd-MM-yyyy" override val listUrl = "/manga-list" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaFreak.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaFreak.kt index aa37348ec..949c229b2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaFreak.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaFreak.kt @@ -1,216 +1,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.en -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.* +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import org.koitharu.kotatsu.parsers.util.* -import java.text.DateFormat -import java.text.SimpleDateFormat -import java.util.Calendar - -@MangaSourceParser("MANHWA_FREAK", "Manhwa-Freak.com", "en") +@Broken +@MangaSourceParser("MANHWA_FREAK", "ManhwaFreak", "en") internal class ManhwaFreak(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWA_FREAK, "manhwa-freak.com", pageSize = 0, searchPageSize = 10) { - - override val selectMangaList = ".listupd .lastest-serie" - override val selectMangaListImg = "img" - override val availableStates: Set = emptySet() - override val isMultipleTagsSupported = false - override val isTagsExclusionSupported = false - - override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { - 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 (page > 1) { - return emptyList() - } - - if (filter.tags.isNotEmpty()) { - filter.tags.oneOrThrowIfMany()?.let { - append("/genres/?genre=") - append(it.key) - } - } else { - append(listUrl) - append("/?order=") - append( - when (filter.sortOrder) { - SortOrder.ALPHABETICAL -> "az" - SortOrder.NEWEST -> "new" - SortOrder.POPULARITY -> "views" - SortOrder.UPDATED -> "" - else -> "" - }, - ) - } - } - - null -> { - append(listUrl) - } - } - } - return parseMangaList(webClient.httpGet(url).parseHtml()) - } - - override suspend fun getAvailableTags(): Set { - val doc = webClient.httpGet("https://$domain/genres/").parseHtml() - return doc.select("ul.genre-list li a").mapNotNullToSet { a -> - val href = a.attr("href").substringAfterLast("=") - MangaTag( - key = href, - title = a.text(), - source = source, - ) - } - } - - override suspend fun getDetails(manga: Manga): Manga { - val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() - val dateFormat = SimpleDateFormat(datePattern, sourceLocale) - val chapters = docs.select("div.chapter-li a").mapChapters(reversed = true) { index, a -> - val url = a.attrAsRelativeUrl("href") - val dateText = a.selectFirst(".chapter-info p.new")?.text() ?: a.select(".chapter-info p")[1].text() - MangaChapter( - id = generateUid(url), - name = a.selectFirst(".chapter-info p:contains(Chapter)")?.text() ?: "Chapter ${index + 1}", - url = url, - number = index + 1f, - volume = 0, - scanlator = null, - uploadDate = if (dateText == "NEW") { - parseChapterDate( - dateFormat, - "today", - ) - } else { - parseChapterDate( - dateFormat, - dateText, - ) - }, - branch = null, - source = source, - ) - } - return parseInfo(docs, manga, chapters) - } - - override suspend fun parseInfo(docs: Document, manga: Manga, chapters: List): Manga { - val tagMap = getOrCreateTagMap() - val selectTag = docs.requireElementById("info").select("div:contains(Genre) > p:last-child").text().split(",") - val tags = selectTag.mapNotNullToSet { tagMap[it] } - val mangaState = docs.requireElementById("info").select("div:contains(Status) > p:last-child").text().let { - when (it) { - "Ongoing" -> MangaState.ONGOING - "Completed" -> MangaState.FINISHED - else -> null - } - } - val author = docs.requireElementById("info").select("div:contains(Author(s)) > p:last-child").text() - return manga.copy( - altTitle = docs.requireElementById("info").select("div:contains(Alternative) > p:last-child").text(), - description = docs.requireElementById("summary").html(), - state = mangaState, - author = author, - isNsfw = manga.isNsfw, - tags = tags, - chapters = chapters, - ) - } - - private fun parseChapterDate(dateFormat: DateFormat, date: String?): Long { - // Clean date (e.g. 5th December 2019 to 5 December 2019) before parsing it - val d = date?.lowercase() ?: return 0 - return when { - d.endsWith(" ago") -> parseRelativeDate(date) - // Handle 'yesterday' and 'today', using midnight - d.startsWith("year") -> Calendar.getInstance().apply { - add(Calendar.DAY_OF_MONTH, -1) // yesterday - set(Calendar.HOUR_OF_DAY, 0) - set(Calendar.MINUTE, 0) - set(Calendar.SECOND, 0) - set(Calendar.MILLISECOND, 0) - }.timeInMillis - - d.startsWith("today") -> Calendar.getInstance().apply { - set(Calendar.HOUR_OF_DAY, 0) - set(Calendar.MINUTE, 0) - set(Calendar.SECOND, 0) - set(Calendar.MILLISECOND, 0) - }.timeInMillis - - date.contains(Regex("""\d(st|nd|rd|th)""")) -> date.split(" ").map { - if (it.contains(Regex("""\d\D\D"""))) { - it.replace(Regex("""\D"""), "") - } else { - it - } - }.let { dateFormat.tryParse(it.joinToString(" ")) } - - else -> dateFormat.tryParse(date) - } - } - - // Parses dates in this form: - // 21 hours ago - private fun parseRelativeDate(date: String): Long { - val number = Regex("""(\d+)""").find(date)?.value?.toIntOrNull() ?: return 0 - val cal = Calendar.getInstance() - return when { - WordSet( - "day", - "days", - "d", - ).anyWordIn(date) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number) }.timeInMillis - - WordSet( - "hour", - "hours", - "h", - ).anyWordIn(date) -> cal.apply { - add( - Calendar.HOUR, - -number, - ) - }.timeInMillis - - WordSet( - "minute", - "minutes", - "mins", - ).anyWordIn(date) -> cal.apply { - add( - Calendar.MINUTE, - -number, - ) - }.timeInMillis - - WordSet("second").anyWordIn(date) -> cal.apply { - add( - Calendar.SECOND, - -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 - } - } -} + MangaReaderParser(context, MangaParserSource.MANHWA_FREAK, "manhwafreak.site", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaLover.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaLover.kt index 5c0b7b6f7..f2d802dd0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaLover.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ManhwaLover.kt @@ -3,12 +3,18 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANHWALOVER", "ManhwaLover", "en", ContentType.HENTAI) internal class ManhwaLover(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWALOVER, "www.manhwalover.com", pageSize = 20, searchPageSize = 20) { + MangaReaderParser( + context, + MangaParserSource.MANHWALOVER, + "www.manhwalover.com", + pageSize = 20, + searchPageSize = 20, + ) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manhwax.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manhwax.kt index dc92cf66b..58994fa0f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manhwax.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manhwax.kt @@ -3,12 +3,12 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANHWAX", "ManhwaX", "en", ContentType.HENTAI) internal class Manhwax(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWAX, "manhwax.org", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.MANHWAX, "manhwax.org", pageSize = 20, searchPageSize = 20) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manjanoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manjanoon.kt index 2db6792a3..9f3ae73e5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manjanoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Manjanoon.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource 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, MangaParserSource.MANJANOON_EN, "manjanoon.net", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/NeroScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/NeroScans.kt index ba440e74c..b27d5ef0f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/NeroScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/NeroScans.kt @@ -2,12 +2,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("NEROSCANS", "NeroScans", "en") internal class NeroScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.NEROSCANS, "neroscans.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.NEROSCANS, "vofeg.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt index c425e03b2..eae66a89d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Nightscans.kt @@ -2,12 +2,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("NIGHTSCANS", "NightScans", "en") internal class Nightscans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.NIGHTSCANS, "night-scans.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.NIGHTSCANS, "night-scans.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" override val selectMangaListImg = "img.ts-post-image, picture img" override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RaiScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RaiScans.kt index d8f24d6d5..81df05a83 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RaiScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RaiScans.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("RAISCANS", "RaiScans", "en") internal class RaiScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.RAISCANS, "www.raiscans.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.RAISCANS, "www.raiscans.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/Series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RavenScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RavenScans.kt index 28fd53b8a..336616e88 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RavenScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RavenScans.kt @@ -2,12 +2,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("RAVENSCANS", "RavenScans", "en") internal class RavenScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.RAVENSCANS, "ravenscans.com", pageSize = 10, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.RAVENSCANS, "ravenscans.com", pageSize = 10, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReadersPoint.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReadersPoint.kt index 696caab3a..34e0617d4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReadersPoint.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReadersPoint.kt @@ -2,12 +2,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("READERSPOINT", "ReadersPoint", "en") internal class ReadersPoint(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.READERSPOINT, "readers-point.space", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.READERSPOINT, "qscomics.org", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Readkomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Readkomik.kt index 27ecfe51d..c7b124bf3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Readkomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Readkomik.kt @@ -2,12 +2,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("READKOMIK", "ReadKomik", "en") internal class Readkomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.READKOMIK, "readkomik.com", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.READKOMIK, "novelstreams.com", pageSize = 20, searchPageSize = 20) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReaperScansUnoriginal.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReaperScansUnoriginal.kt new file mode 100644 index 000000000..f5ccd7e9c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ReaperScansUnoriginal.kt @@ -0,0 +1,16 @@ +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("REAPERSCANSUNORIGINAL", "ReaperScansUnoriginal", "en") +internal class ReaperScansUnoriginal(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.REAPERSCANSUNORIGINAL, + "reaper-scans.com", + pageSize = 30, + searchPageSize = 42, + ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RizzComic.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RizzComic.kt index c0f1659f2..37dbdc851 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RizzComic.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/RizzComic.kt @@ -14,7 +14,8 @@ import java.util.* @MangaSourceParser("RIZZCOMIC", "RizzComic", "en") internal class RizzComic(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.RIZZCOMIC, "rizzfables.com", pageSize = 50, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.RIZZCOMIC, "rizzfables.com", pageSize = 50, searchPageSize = 20) { + override val datePattern = "dd MMM yyyy" override val listUrl = "/series" override val availableSortOrders: Set = EnumSet.of( @@ -35,7 +36,7 @@ internal class RizzComic(context: MangaLoaderContext) : private var randomPartCache = SuspendLazy(::getRandomPart) private val randomPartRegex = Regex("""^(r\d+-)""") private val slugRegex = Regex("""[^a-z0-9]+""") - private fun searchMangaSelector() = ".utao .uta .imgu, .listupd .bs .bsx, .listo .bs .bsx" + private val searchMangaSelector = ".utao .uta .imgu, .listupd .bs .bsx, .listo .bs .bsx" private suspend fun getRandomPart(): String { val request = Request.Builder() .url("https://$domain$listUrl") @@ -44,7 +45,7 @@ internal class RizzComic(context: MangaLoaderContext) : val response = context.httpClient.newCall(request).await() val url = response.parseHtml() - .selectFirst(searchMangaSelector())!! + .selectFirst(searchMangaSelector)!! .select("a").attr("href") val slug = url diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ShojoScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ShojoScans.kt new file mode 100644 index 000000000..f60e5629d --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/ShojoScans.kt @@ -0,0 +1,12 @@ +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("SHOJOSCANS", "ShojoScans", "en") +internal class ShojoScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.SHOJOSCANS, "shojoscans.com", pageSize = 20, searchPageSize = 10) { + override val listUrl = "/comics" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SkyManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SkyManga.kt index bd1d73d26..698eace88 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SkyManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SkyManga.kt @@ -2,12 +2,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SKY_MANGA", "SkyManga", "en") internal class SkyManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SKY_MANGA, "skymanga.work", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.SKY_MANGA, "skymanga.work", pageSize = 20, searchPageSize = 20) { override val listUrl = "/manga-list" override val datePattern = "DD-MM-yyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SpiderScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SpiderScans.kt new file mode 100644 index 000000000..b1cebee27 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SpiderScans.kt @@ -0,0 +1,10 @@ +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("SPIDERSCANS", "SpiderScans", "en") +internal class SpiderScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.SPIDERSCANS, "spiderscans.xyz", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SuryaScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SuryaScans.kt index ef0edfa4e..06b97082b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SuryaScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/SuryaScans.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource 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, MangaParserSource.SURYASCANS, "suryacomics.com", pageSize = 5, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/TecnoScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/TecnoScans.kt new file mode 100644 index 000000000..dfc748214 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/TecnoScans.kt @@ -0,0 +1,12 @@ +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("TECNOSCANS", "TecnoScans", "en") +internal class TecnoScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.TECNOSCANS, "tecnoscans.xyz", pageSize = 20, searchPageSize = 10) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/VoidScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/VoidScans.kt index f4c59f0e5..e6c505d1a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/VoidScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/VoidScans.kt @@ -2,12 +2,12 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("VOIDSCANS", "VoidScans", "en") +@MangaSourceParser("VOIDSCANS", "HiveToon", "en") internal class VoidScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.VOIDSCANS, "void-scans.com", pageSize = 150, searchPageSize = 150) { + MangaReaderParser(context, MangaParserSource.VOIDSCANS, "hivetoon.com", pageSize = 150, searchPageSize = 150) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/XCalibrScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/XCalibrScans.kt index c1d45ed43..94945bcef 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/XCalibrScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/XCalibrScans.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource 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, MangaParserSource.XCALIBRSCANS, "xcalibrscans.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Zahard.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Zahard.kt index 97292a2d6..72325ae29 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Zahard.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/en/Zahard.kt @@ -2,11 +2,7 @@ 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.Manga -import org.koitharu.kotatsu.parsers.model.MangaListFilter -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.model.MangaState -import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.util.domain import org.koitharu.kotatsu.parsers.util.oneOrThrowIfMany @@ -16,7 +12,7 @@ import java.util.* @MangaSourceParser("ZAHARD", "Zahard", "en") internal class Zahard(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ZAHARD, "zahard.xyz", pageSize = 20, searchPageSize = 30) { + MangaReaderParser(context, MangaParserSource.ZAHARD, "zahard.xyz", pageSize = 20, searchPageSize = 30) { override val listUrl = "/library" override val selectChapter = "#chapterlist > ul > a" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Bymichiby.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Bymichiby.kt new file mode 100644 index 000000000..6b41a448f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Bymichiby.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +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 + +@MangaSourceParser("BYMICHIBY", "Bymichiby", "es", ContentType.HENTAI) +internal class Bymichiby(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.BYMICHIBY, "bymichiby.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/CartelDeManhwas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/CartelDeManhwas.kt index 904df894b..b9667d4dd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/CartelDeManhwas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/CartelDeManhwas.kt @@ -2,12 +2,18 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("CARTELDEMANHWAS", "Cartel De Manhwas", "es") internal class CartelDeManhwas(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.CARTELDEMANHWAS, "carteldemanhwas.com", pageSize = 20, searchPageSize = 20) { + MangaReaderParser( + context, + MangaParserSource.CARTELDEMANHWAS, + "carteldemanhwas.com", + pageSize = 20, + searchPageSize = 20, + ) { override val listUrl = "/series" override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Doujins.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Doujins.kt new file mode 100644 index 000000000..05e25419e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Doujins.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +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 + +@MangaSourceParser("DOUJINS", "Doujins.lat", "es", ContentType.HENTAI) +internal class Doujins(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.DOUJINS, "doujins.lat", pageSize = 20, searchPageSize = 10) { + override val listUrl = "/comic" + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/DtupScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/DtupScan.kt new file mode 100644 index 000000000..edf630c7d --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/DtupScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +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("DTUPSCAN", "DtupScan", "es") +internal class DtupScan(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.DTUPSCAN, "dtupscan.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/GremoryMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/GremoryMangas.kt index 77d85d70e..929d0a2d9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/GremoryMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/GremoryMangas.kt @@ -2,11 +2,17 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource 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, + MangaParserSource.GREMORYMANGAS, + "gremorymangas.com", + pageSize = 20, + searchPageSize = 20, + ) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/HentaiReader.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/HentaiReader.kt new file mode 100644 index 000000000..f3c541296 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/HentaiReader.kt @@ -0,0 +1,131 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +import org.json.JSONObject +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.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaListFilter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.* +import java.text.SimpleDateFormat +import java.util.ArrayList + +@MangaSourceParser("HENTAIREADER", "HentaiReader", "es", ContentType.HENTAI) +internal class HentaiReader(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.HENTAIREADER, "hentaireader.org", pageSize = 25, searchPageSize = 25) { + override val listUrl = "/tipo/all" + override val isTagsExclusionSupported = false + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + val url = buildString { + append("https://") + append(domain) + + when (filter) { + + is MangaListFilter.Search -> { + append(listUrl) + append("?s=") + append(filter.query.urlEncoded()) + append("&page=") + append(page.toString()) + } + + is MangaListFilter.Advanced -> { + append(listUrl) + append("?order=") + append( + when (filter.sortOrder) { + SortOrder.ALPHABETICAL -> "title" + SortOrder.ALPHABETICAL_DESC -> "titlereverse" + SortOrder.NEWEST -> "latest" + SortOrder.POPULARITY -> "popular" + SortOrder.UPDATED -> "update" + else -> "" + }, + ) + + filter.tags.forEach { + append("&") + append("tags[]".urlEncoded()) + append("=") + append(it.key) + } + + if (filter.states.isNotEmpty()) { + filter.states.oneOrThrowIfMany()?.let { + append("&status=") + when (it) { + MangaState.ONGOING -> append("ongoing") + MangaState.FINISHED -> append("completed") + MangaState.PAUSED -> append("hiatus") + else -> append("") + } + } + } + + append("&page=") + append(page.toString()) + } + + null -> { + append(listUrl) + append("/?order=update&page=") + append(page.toString()) + } + } + } + return parseMangaList(webClient.httpGet(url).parseHtml()) + } + + override val selectChapter = ".releases" + override suspend fun getDetails(manga: Manga): Manga { + val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + val chapters = docs.select(selectChapter).mapChapters(reversed = true) { index, element -> + val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null + MangaChapter( + id = generateUid(url), + name = element.selectFirst("h2")?.text() ?: "Chapter ${index + 1}", + url = url, + number = index + 1f, + volume = 0, + scanlator = null, + uploadDate = dateFormat.tryParse(docs.selectFirst("time")?.text()), + branch = null, + source = source, + ) + } + return parseInfo(docs, manga, chapters) + } + + override suspend fun getPages(chapter: MangaChapter): List { + val chapterUrl = chapter.url.toAbsoluteUrl(domain) + val docs = webClient.httpGet(chapterUrl).parseHtml() + val script = docs.selectFirstOrThrow(selectTestScript) + val images = JSONObject(script.data().substringAfter('(').substringBeforeLast(')').replace(", ] }]", " ] }]")) + .getJSONArray("sources") + .getJSONObject(0) + .getJSONArray("images") + + val pages = ArrayList(images.length()) + for (i in 0 until images.length()) { + pages.add( + MangaPage( + id = generateUid(images.getString(i)), + url = images.getString(i), + preview = null, + source = source, + ), + ) + } + return pages + } +} + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariManga.kt index d15a0ec74..2a7f3154d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariManga.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource 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, MangaParserSource.INARIMANGA, "nakamatoon.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt new file mode 100644 index 000000000..056fbde35 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/InariPikav.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +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("INARIPIKAV", "InariPikav", "es") +internal class InariPikav(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.INARIPIKAV, "inaripikav.org", pageSize = 10, searchPageSize = 10) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LectorHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LectorHentai.kt new file mode 100644 index 000000000..6dec41094 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/LectorHentai.kt @@ -0,0 +1,123 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +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.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaListFilter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.* +import java.text.SimpleDateFormat + +@MangaSourceParser("LECTORHENTAI", "LectorHentai", "es", ContentType.HENTAI) +internal class LectorHentai(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.LECTORHENTAI, "lectorhentai.com", pageSize = 25, searchPageSize = 25) { + override val listUrl = "/tipo/all" + override val isTagsExclusionSupported = false + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + val url = buildString { + append("https://") + append(domain) + + when (filter) { + + is MangaListFilter.Search -> { + append(listUrl) + append("?s=") + append(filter.query.urlEncoded()) + append("&page=") + append(page.toString()) + } + + is MangaListFilter.Advanced -> { + append(listUrl) + append("?order=") + append( + when (filter.sortOrder) { + SortOrder.ALPHABETICAL -> "title" + SortOrder.ALPHABETICAL_DESC -> "titlereverse" + SortOrder.NEWEST -> "latest" + SortOrder.POPULARITY -> "popular" + SortOrder.UPDATED -> "update" + else -> "" + }, + ) + + filter.tags.forEach { + append("&") + append("genre[]".urlEncoded()) + append("=") + append(it.key) + } + + if (filter.states.isNotEmpty()) { + filter.states.oneOrThrowIfMany()?.let { + append("&status=") + when (it) { + MangaState.ONGOING -> append("ongoing") + MangaState.FINISHED -> append("completed") + MangaState.PAUSED -> append("hiatus") + else -> append("") + } + } + } + + append("&page=") + append(page.toString()) + } + + null -> { + append(listUrl) + append("/?order=update&page=") + append(page.toString()) + } + } + } + return parseMangaList(webClient.httpGet(url).parseHtml()) + } + + override val selectChapter = ".releases" + override suspend fun getDetails(manga: Manga): Manga { + val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + val chapters = docs.select(selectChapter).mapChapters(reversed = true) { index, element -> + val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null + MangaChapter( + id = generateUid(url), + name = element.selectFirst("h2")?.text() ?: "Chapter ${index + 1}", + url = url, + number = index + 1f, + volume = 0, + scanlator = null, + uploadDate = dateFormat.tryParse(docs.selectFirst("time")?.text()), + branch = null, + source = source, + ) + } + return parseInfo(docs, manga, chapters) + } + + override suspend fun getPages(chapter: MangaChapter): List { + val chapterUrl = chapter.url.toAbsoluteUrl(domain) + val docs = webClient.httpGet(chapterUrl).parseHtml() + val script = docs.selectFirstOrThrow(selectTestScript).data() + val images = script.substringAfterLast("\"images\": [").substringBefore("]") + .replace(" ", "").replace("\"", "").replace("\n", "").split(",").dropLast(1) + return images.map { img -> + val url = "https://" + img.substringAfter("//") + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MangaShiina.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MangaShiina.kt index 9b7ad34e4..3f97cdd5d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MangaShiina.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MangaShiina.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANGASHIINA", "MangaMukai.com", "es") internal class MangaShiina(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGASHIINA, "mangamukai.com", pageSize = 20, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.MANGASHIINA, "mangamukai.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MangaTv.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MangaTv.kt new file mode 100644 index 000000000..2f679c7d7 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MangaTv.kt @@ -0,0 +1,120 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +import org.json.JSONObject +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaListFilter +import org.koitharu.kotatsu.parsers.model.MangaPage +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.oneOrThrowIfMany +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.urlEncoded +import java.util.ArrayList + +@MangaSourceParser("MANGATV", "MangaTv", "es") +internal class MangaTv(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MANGATV, "www.mangatv.net", pageSize = 25, searchPageSize = 25) { + override val listUrl = "/lista" + override val isTagsExclusionSupported = false + override val datePattern = "yyyy-MM-dd" + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + val url = buildString { + append("https://") + append(domain) + + when (filter) { + + is MangaListFilter.Search -> { + append("/lista?s=") + append(filter.query.urlEncoded()) + append("&page=") + append(page.toString()) + } + + is MangaListFilter.Advanced -> { + append(listUrl) + + append("/?order=") + append( + when (filter.sortOrder) { + SortOrder.ALPHABETICAL -> "title" + SortOrder.ALPHABETICAL_DESC -> "titlereverse" + SortOrder.NEWEST -> "latest" + SortOrder.POPULARITY -> "popular" + SortOrder.UPDATED -> "update" + else -> "" + }, + ) + + 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 { + append("&status=") + when (it) { + MangaState.ONGOING -> append("ongoing") + MangaState.FINISHED -> append("completed") + MangaState.PAUSED -> append("hiatus") + else -> append("") + } + } + } + + append("&page=") + append(page.toString()) + } + + null -> { + append(listUrl) + append("/?order=update&page=") + append(page.toString()) + } + } + } + return parseMangaList(webClient.httpGet(url).parseHtml()) + } + + override suspend fun getPages(chapter: MangaChapter): List { + val chapterUrl = chapter.url.toAbsoluteUrl(domain) + val docs = webClient.httpGet(chapterUrl).parseHtml() + val script = docs.selectFirstOrThrow(selectTestScript) + val images = JSONObject(script.data().substringAfter('(').substringBeforeLast(')').replace(", ] }]", " ] }]")) + .getJSONArray("sources") + .getJSONObject(0) + .getJSONArray("images") + val pages = ArrayList(images.length()) + for (i in 0 until images.length()) { + pages.add( + MangaPage( + id = generateUid(images.getString(i)), + url = images.getString(i), + preview = null, + source = source, + ), + ) + } + return pages + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MiauScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MiauScan.kt index 6270faa56..503f9c7aa 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MiauScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/MiauScan.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("MIAUSCAN", "MiauScan", "es") +@MangaSourceParser("MIAUSCAN", "LectorMiau", "es") internal class MiauScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MIAUSCAN, "miaucomics.org", pageSize = 20, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.MIAUSCAN, "lectormiau.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/NekoScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/NekoScans.kt deleted file mode 100644 index 7852b9dbf..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/NekoScans.kt +++ /dev/null @@ -1,14 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.mangareader.es - -import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser - -@MangaSourceParser("NEKOSCANS", "NekoScans", "es") -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 -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/RagnaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/RagnaScan.kt index 9ddb6559c..36f24d814 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/RagnaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/RagnaScan.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("RAGNASCAN", "RagnaScan", "es") internal class RagnaScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.RAGNASCAN, "ragnascan.com", pageSize = 5, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.RAGNASCAN, "ragnascan.com", pageSize = 5, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Raikiscan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Raikiscan.kt index 76ac96112..2c89a7fb2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Raikiscan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Raikiscan.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("RAIKISCAN", "RaikiScan", "es") internal class Raikiscan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.RAIKISCAN, "raikiscan.com", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.RAIKISCAN, "raikiscan.com", pageSize = 20, searchPageSize = 20) { override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Senpaiediciones.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Senpaiediciones.kt index 7dfb79ab5..9e728a6fd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Senpaiediciones.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Senpaiediciones.kt @@ -2,11 +2,17 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SENPAIEDICIONES", "SenpaiEdiciones", "es") internal class Senpaiediciones(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SENPAIEDICIONES, "senpaiediciones.com", pageSize = 20, searchPageSize = 20) { + MangaReaderParser( + context, + MangaParserSource.SENPAIEDICIONES, + "senpaiediciones.com", + pageSize = 20, + searchPageSize = 20, + ) { override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Shadowmangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Shadowmangas.kt index e9b36dea8..ec0729921 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Shadowmangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Shadowmangas.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource 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) { + MangaReaderParser(context, MangaParserSource.SHADOWMANGAS, "shadowmangas.com", pageSize = 10, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/SkyMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/SkyMangas.kt index f7f6c0354..345587fe9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/SkyMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/SkyMangas.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SKYMANGAS", "SkyMangas", "es") internal class SkyMangas(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SKYMANGAS, "skymangas.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.SKYMANGAS, "skymangas.com", pageSize = 20, searchPageSize = 10) { override val encodedSrc = true override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TecnoScann.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TecnoScann.kt index 1c76b5213..db1365fe2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TecnoScann.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TecnoScann.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("TECNOSCANN", "TecnoScann", "es") internal class TecnoScann(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TECNOSCANN, "tecnoscann.com", 20, 10) { + MangaReaderParser(context, MangaParserSource.TECNOSCANN, "tecnoscann.com", 20, 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TenkaiScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TenkaiScan.kt index d680febc3..cd7fef002 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TenkaiScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TenkaiScan.kt @@ -1,15 +1,17 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale +import java.util.* +@Broken // Not dead, changed template @MangaSourceParser("TENKAISCAN", "TenkaiScan", "es", ContentType.HENTAI) internal class TenkaiScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TENKAISCAN, "tenkaiscan.net", 20, 10) { + MangaReaderParser(context, MangaParserSource.TENKAISCAN, "tenkaiscan.net", 20, 10) { override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TraduccionesMoonlight.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TraduccionesMoonlight.kt index f024d1d57..8462106ad 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TraduccionesMoonlight.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TraduccionesMoonlight.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("TRADUCCIONESMOONLIGHT", "TraduccionesMoonlight", "es", ContentType.HENTAI) internal class TraduccionesMoonlight(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TRADUCCIONESMOONLIGHT, "traduccionesmoonlight.com", 20, 10) + MangaReaderParser(context, MangaParserSource.TRADUCCIONESMOONLIGHT, "traduccionesmoonlight.com", 20, 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Tresdaos.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Tresdaos.kt index c8ace1111..eb6cb7f97 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Tresdaos.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/Tresdaos.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.mangareader.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource 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, MangaParserSource.TRESDAOS, "tresdaos.com", 20, 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TuManhwas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TuManhwas.kt index c584280dc..1314b7cdf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TuManhwas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/TuManhwas.kt @@ -8,13 +8,11 @@ import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.util.* import java.text.DateFormat import java.text.SimpleDateFormat -import java.util.ArrayList -import java.util.Calendar -import java.util.EnumSet +import java.util.* @MangaSourceParser("TU_MANHWAS", "TuManhwas.com", "es") internal class TuManhwas(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TU_MANHWAS, "tumanhwas.com", 20, 20) { + MangaReaderParser(context, MangaParserSource.TU_MANHWAS, "tumanhwas.com", 20, 20) { override val listUrl = "/biblioteca" override val selectPage = "div#readerarea img" override val availableSortOrders: Set = EnumSet.of(SortOrder.NEWEST) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/UkiyoToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/UkiyoToon.kt new file mode 100644 index 000000000..db54e5cf3 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/es/UkiyoToon.kt @@ -0,0 +1,12 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.es + +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("UKIYOTOON", "UkiyoToon", "es") +internal class UkiyoToon(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.UKIYOTOON, "ukiyotoon.com", 30, 10) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/BananaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/BananaScan.kt index 1499434b2..0f451225d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/BananaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/BananaScan.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @Broken @MangaSourceParser("BANANASCAN", "BananaScan", "fr") internal class BananaScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.BANANASCAN, "banana-scan.com", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.BANANASCAN, "banana-scan.com", pageSize = 20, searchPageSize = 20) { override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EtheralRadiance.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EtheralRadiance.kt new file mode 100644 index 000000000..a9b5c6fee --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/EtheralRadiance.kt @@ -0,0 +1,30 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.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.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.insertCookies + +@Broken +@MangaSourceParser("ETHERALRADIANCE", "EtheralRadiance", "fr") +internal class EtheralRadiance(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.ETHERALRADIANCE, + "www.etheralradiance.eu", + pageSize = 20, + searchPageSize = 10, + ) { + override val isTagsExclusionSupported = false + + init { + context.cookieJar.insertCookies( + domain, + "_lscache_vary=1;", + ) + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LelManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LelManga.kt index 1c24d6d49..db51bb7fe 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LelManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LelManga.kt @@ -4,14 +4,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.util.* -import java.util.Locale +import java.util.* @MangaSourceParser("LELMANGA", "LelManga", "fr") internal class LelManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.LELMANGA, "www.lelmanga.com", pageSize = 21, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.LELMANGA, "www.lelmanga.com", pageSize = 21, searchPageSize = 20) { override val sourceLocale: Locale = Locale.ENGLISH diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LunarScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LunarScans.kt index 6f796bd73..dc0ff2495 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LunarScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/LunarScans.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @Broken @MangaSourceParser("LUNARSCANS", "LunarScans", "fr") internal class LunarScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.LUNARSCANS, "lunarscans.fr", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.LUNARSCANS, "lunarscans.fr", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/MangasScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/MangasScans.kt new file mode 100644 index 000000000..4a7b65df7 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/MangasScans.kt @@ -0,0 +1,10 @@ +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("MANGASSCANS", "MangasScans", "fr") +internal class MangasScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MANGASSCANS, "mangas-scans.com", pageSize = 30, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PantheonScanFr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PantheonScanFr.kt index 09a46ab8a..04c616af0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PantheonScanFr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PantheonScanFr.kt @@ -2,9 +2,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("PANTHEONSCAN_FR", "PantheonScan.fr", "fr") internal class PantheonScanFr(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.PANTHEONSCAN_FR, "www.pantheon-scan.fr", pageSize = 40, searchPageSize = 10) + MangaReaderParser( + context, + MangaParserSource.PANTHEONSCAN_FR, + "www.pantheon-scan.fr", + pageSize = 40, + searchPageSize = 10, + ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PhenixscansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PhenixscansParser.kt index e13da636d..0bd6e5e08 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PhenixscansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/PhenixscansParser.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("PHENIXSCANS", "PhenixScans", "fr") internal class PhenixscansParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.PHENIXSCANS, "phenixscans.fr", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.PHENIXSCANS, "phenixscans.fr", pageSize = 20, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RevolutionScantrad.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RevolutionScantrad.kt new file mode 100644 index 000000000..da94e9291 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RevolutionScantrad.kt @@ -0,0 +1,158 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.fr + +import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.ErrorMessages +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaListFilter +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.oneOrThrowIfMany +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.src +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.tryParse +import org.koitharu.kotatsu.parsers.util.urlEncoded +import java.text.SimpleDateFormat + +@MangaSourceParser("REVOLUTIONSCANTRAD", "RevolutionScantrad", "fr") +internal class RevolutionScantrad(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.REVOLUTIONSCANTRAD, + "www.revolutionscantrad.com", + pageSize = 100, + searchPageSize = 10, + ) { + override val listUrl = "/series.html" + override val datePattern = "yyyy" + override val isTagsExclusionSupported = false + override val isSearchSupported = false + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + if (page > 1) { + return emptyList() + } + val url = buildString { + append("https://") + append(domain) + + when (filter) { + + is MangaListFilter.Search -> { + throw IllegalArgumentException(ErrorMessages.SEARCH_NOT_SUPPORTED) + } + + is MangaListFilter.Advanced -> { + append(listUrl) + + append("?order=") + append( + when (filter.sortOrder) { + SortOrder.ALPHABETICAL -> "title" + SortOrder.ALPHABETICAL_DESC -> "titlereverse" + SortOrder.NEWEST -> "latest" + SortOrder.POPULARITY -> "popular" + SortOrder.UPDATED -> "update" + else -> "" + }, + ) + + 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 { + append("&status=") + when (it) { + MangaState.ONGOING -> append("ongoing") + MangaState.FINISHED -> append("completed") + MangaState.PAUSED -> append("hiatus") + else -> append("") + } + } + } + + append("&page=") + append(page.toString()) + } + + null -> { + append(listUrl) + append("/?order=update&page=") + append(page.toString()) + } + } + } + return parseMangaList(webClient.httpGet(url).parseHtml()) + } + + override val selectPage = "div#readerarea img.chapter-image" + + override fun parseMangaList(docs: Document): List { + return docs.select(selectMangaList).mapNotNull { + val a = it.selectFirst("a") ?: return@mapNotNull null + val relativeUrl = "/" + a.attrAsRelativeUrl("href") + val rating = it.selectFirst(".numscore")?.text() + ?.toFloatOrNull()?.div(10) ?: RATING_UNKNOWN + Manga( + id = generateUid(relativeUrl), + url = relativeUrl, + title = it.selectFirst(selectMangaListTitle)?.text() ?: a.attr("title"), + altTitle = null, + publicUrl = a.attrAsAbsoluteUrl("href"), + rating = rating, + isNsfw = isNsfwSource, + coverUrl = it.selectFirst(selectMangaListImg)?.src().orEmpty(), + tags = emptySet(), + state = null, + author = null, + source = source, + ) + } + } + + override suspend fun getDetails(manga: Manga): Manga { + val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + val urlStart = manga.url.substringBeforeLast('/') + val chapters = docs.select(selectChapter).mapChapters(reversed = true) { index, element -> + val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null + MangaChapter( + id = generateUid(url), + name = element.selectFirst(".chapternum")?.text() ?: "Chapter ${index + 1}", + url = "$urlStart/$url", + number = index + 1f, + volume = 0, + scanlator = null, + uploadDate = dateFormat.tryParse(element.selectFirst(".chapterdate")?.text()), + branch = null, + source = source, + ) + } + return parseInfo(docs, manga, chapters) + } + + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RimuScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RimuScans.kt new file mode 100644 index 000000000..f2dc8868c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/RimuScans.kt @@ -0,0 +1,10 @@ +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("RIMUSCANS", "RimuScans", "fr") +internal class RimuScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.RIMUSCANS, "rimuscans.fr", pageSize = 30, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScan.kt index c19fac46b..11b3d28a4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScan.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SUSHISCAN", "SushiScan.Net", "fr") internal class SushiScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SUSHISCAN, "sushiscan.net", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.SUSHISCAN, "sushiscan.net", pageSize = 20, searchPageSize = 10) { override val listUrl = "/catalogue" override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScanFR.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScanFR.kt index b578e9f73..8bfbb508b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScanFR.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/SushiScanFR.kt @@ -2,9 +2,9 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SUSHISCANFR", "SushiScan.fr", "fr") internal class SushiScanFR(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SUSHISCANFR, "sushiscan.fr", pageSize = 36, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.SUSHISCANFR, "sushiscan.fr", pageSize = 36, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/VfScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/VfScan.kt index dbd2a9f37..6dd9acf85 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/VfScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/VfScan.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource 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, MangaParserSource.VFSCAN, "www.vfscan.cc", pageSize = 18, searchPageSize = 18) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/XxxRevolutionScantrad.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/XxxRevolutionScantrad.kt new file mode 100644 index 000000000..3aeb4ff4f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/fr/XxxRevolutionScantrad.kt @@ -0,0 +1,159 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.fr + +import org.jsoup.nodes.Document +import org.koitharu.kotatsu.parsers.ErrorMessages +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.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaListFilter +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import org.koitharu.kotatsu.parsers.util.attrAsAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.mapChapters +import org.koitharu.kotatsu.parsers.util.oneOrThrowIfMany +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.src +import org.koitharu.kotatsu.parsers.util.toAbsoluteUrl +import org.koitharu.kotatsu.parsers.util.tryParse +import org.koitharu.kotatsu.parsers.util.urlEncoded +import java.text.SimpleDateFormat + +@MangaSourceParser("XXXREVOLUTIONSCANTRAD", "Xxx.RevolutionScantrad", "fr", ContentType.HENTAI) +internal class XxxRevolutionScantrad(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.XXXREVOLUTIONSCANTRAD, + "xxx.revolutionscantrad.com", + pageSize = 100, + searchPageSize = 10, + ) { + override val listUrl = "/series.html" + override val datePattern = "yyyy" + override val isTagsExclusionSupported = false + override val isSearchSupported = false + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + if (page > 1) { + return emptyList() + } + val url = buildString { + append("https://") + append(domain) + + when (filter) { + + is MangaListFilter.Search -> { + throw IllegalArgumentException(ErrorMessages.SEARCH_NOT_SUPPORTED) + } + + is MangaListFilter.Advanced -> { + append(listUrl) + + append("?order=") + append( + when (filter.sortOrder) { + SortOrder.ALPHABETICAL -> "title" + SortOrder.ALPHABETICAL_DESC -> "titlereverse" + SortOrder.NEWEST -> "latest" + SortOrder.POPULARITY -> "popular" + SortOrder.UPDATED -> "update" + else -> "" + }, + ) + + 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 { + append("&status=") + when (it) { + MangaState.ONGOING -> append("ongoing") + MangaState.FINISHED -> append("completed") + MangaState.PAUSED -> append("hiatus") + else -> append("") + } + } + } + + append("&page=") + append(page.toString()) + } + + null -> { + append(listUrl) + append("/?order=update&page=") + append(page.toString()) + } + } + } + return parseMangaList(webClient.httpGet(url).parseHtml()) + } + + override val selectPage = "div#readerarea img.chapter-image" + + override fun parseMangaList(docs: Document): List { + return docs.select(selectMangaList).mapNotNull { + val a = it.selectFirst("a") ?: return@mapNotNull null + val relativeUrl = "/" + a.attrAsRelativeUrl("href") + val rating = it.selectFirst(".numscore")?.text() + ?.toFloatOrNull()?.div(10) ?: RATING_UNKNOWN + Manga( + id = generateUid(relativeUrl), + url = relativeUrl, + title = it.selectFirst(selectMangaListTitle)?.text() ?: a.attr("title"), + altTitle = null, + publicUrl = a.attrAsAbsoluteUrl("href"), + rating = rating, + isNsfw = isNsfwSource, + coverUrl = it.selectFirst(selectMangaListImg)?.src().orEmpty(), + tags = emptySet(), + state = null, + author = null, + source = source, + ) + } + } + + override suspend fun getDetails(manga: Manga): Manga { + val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat(datePattern, sourceLocale) + val urlStart = manga.url.substringBeforeLast('/') + val chapters = docs.select(selectChapter).mapChapters(reversed = true) { index, element -> + val url = element.selectFirst("a")?.attrAsRelativeUrl("href") ?: return@mapChapters null + MangaChapter( + id = generateUid(url), + name = element.selectFirst(".chapternum")?.text() ?: "Chapter ${index + 1}", + url = "$urlStart/$url", + number = index + 1f, + volume = 0, + scanlator = null, + uploadDate = dateFormat.tryParse(element.selectFirst(".chapterdate")?.text()), + branch = null, + source = source, + ) + } + return parseInfo(docs, manga, chapters) + } + + +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AinzScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AinzScans.kt index b316b025c..e71478389 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AinzScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AinzScans.kt @@ -2,13 +2,13 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("AINZSCANS", "AinzScans", "id") internal class AinzScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.AINZSCANS, "ainzscans.net", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.AINZSCANS, "ainzscans.net", pageSize = 20, searchPageSize = 10) { override val listUrl = "/series" override val datePattern = "MMM d, yyyy" override val sourceLocale: Locale = Locale.ENGLISH diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AlceaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AlceaScan.kt index 14eb6d131..2c76813d9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AlceaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AlceaScan.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale +import java.util.* +@Broken @MangaSourceParser("ALCEASCAN", "AlceaScan", "id") internal class AlceaScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ALCEASCAN, "alceascan.my.id", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.ALCEASCAN, "alceascan.my.id", pageSize = 20, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AlterkaiScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AlterkaiScans.kt new file mode 100644 index 000000000..87bc87feb --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/AlterkaiScans.kt @@ -0,0 +1,19 @@ +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("ALTERKAISCANS", "AlterkaiScans", "id") +internal class AlterkaiScans(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.ALTERKAISCANS, + "alterkaiscans.my.id", + pageSize = 20, + searchPageSize = 10, + ) { + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comic21.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comic21.kt new file mode 100644 index 000000000..53271669b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comic21.kt @@ -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.Locale + +@MangaSourceParser("COMIC21", "Comic21", "id") +internal class Comic21(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.COMIC21, "comic21.me", pageSize = 20, searchPageSize = 10) { + override val sourceLocale: Locale = Locale.ENGLISH + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comicaso.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comicaso.kt index 1188be18b..34f550f05 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comicaso.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Comicaso.kt @@ -1,13 +1,15 @@ 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.MangaSource +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, MangaSource.COMICASO, "comicaso.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.COMICASO, "comicaso.com", pageSize = 20, searchPageSize = 10) { override val encodedSrc = true override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/CosmicScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/CosmicScans.kt index c7f9fa4d4..81b981203 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/CosmicScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/CosmicScans.kt @@ -2,13 +2,13 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale +import java.util.* @MangaSourceParser("COSMIC_SCANS", "CosmicScans.id", "id") internal class CosmicScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.COSMIC_SCANS, "cosmicscans.id", pageSize = 30, searchPageSize = 30) { + MangaReaderParser(context, MangaParserSource.COSMIC_SCANS, "cosmicscans.id", pageSize = 30, searchPageSize = 30) { override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Dojing.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Dojing.kt index 1a5a66366..ae9a58dcb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Dojing.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Dojing.kt @@ -3,12 +3,12 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("DOJING", "Dojing", "id", ContentType.HENTAI) internal class Dojing(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.DOJING, "dojing.net", pageSize = 12, searchPageSize = 12) { + MangaReaderParser(context, MangaParserSource.DOJING, "dojing.net", pageSize = 12, searchPageSize = 12) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinDesuRip.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinDesuRip.kt index 055e9051b..025aed41a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinDesuRip.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinDesuRip.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("DOUJINDESURIP", "DoujinDesu.cfd", "id", ContentType.HENTAI) +@MangaSourceParser("DOUJINDESURIP", "DoujinDesu.mobi", "id", ContentType.HENTAI) internal class DoujinDesuRip(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.DOUJINDESURIP, "doujindesu.cfd", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.DOUJINDESURIP, "doujindesu.mobi", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinKu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinKu.kt index 498e0dd1b..81878798a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinKu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/DoujinKu.kt @@ -3,13 +3,13 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale +import java.util.* @MangaSourceParser("DOUJINKU", "DoujinKu", "id", ContentType.HENTAI) internal class DoujinKu(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.DOUJINKU, "doujinku.xyz", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.DOUJINKU, "doujinku.org", pageSize = 20, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Duniakomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Duniakomik.kt index 0231e8bd5..3b89b14df 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Duniakomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Duniakomik.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("DUNIAKOMIK", "DuniaKomik", "id", ContentType.HENTAI) internal class Duniakomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.DUNIAKOMIK, "duniakomik.org", pageSize = 12, searchPageSize = 12) { + MangaReaderParser(context, MangaParserSource.DUNIAKOMIK, "duniakomik.org", pageSize = 12, searchPageSize = 12) { override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Futari.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Futari.kt index f09b86afe..2fe7e8a0b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Futari.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Futari.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource 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, MangaParserSource.FUTARI, "futari.info", pageSize = 25, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kanzenin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kanzenin.kt index 89cbc0fec..2aa191738 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kanzenin.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kanzenin.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource 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, MangaParserSource.KANZENIN, "kanzenin.info", pageSize = 27, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KataKomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KataKomik.kt index 362166cdd..7e3b483c8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KataKomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KataKomik.kt @@ -2,13 +2,13 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("KATAKOMIK", "KataKomik", "id") internal class KataKomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KATAKOMIK, "katakomik.my.id", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KATAKOMIK, "katakomik.my.id", pageSize = 20, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KiryuuParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KiryuuParser.kt index 0e3df1d51..3414b12c7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KiryuuParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KiryuuParser.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource 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, MangaParserSource.KIRYUU, "kiryuu.id", pageSize = 30, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomBatch.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomBatch.kt new file mode 100644 index 000000000..65727cc7c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomBatch.kt @@ -0,0 +1,13 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("KOMBATCH", "KomBatch", "id", ContentType.HENTAI) +internal class KomBatch(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.KOMBATCH, "kombatch.cc", pageSize = 20, searchPageSize = 10) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikAvParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikAvParser.kt index 618a6c743..c3ee1621f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikAvParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikAvParser.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("KOMIKAV", "KomikAv", "id") internal class KomikAvParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKAV, "komikav.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KOMIKAV, "komikav.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikDewasa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikDewasa.kt index 0d420e446..7b4f2cb1e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikDewasa.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikDewasa.kt @@ -3,15 +3,15 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale +import java.util.* @MangaSourceParser("KOMIKDEWASA_ONLINE", "KomikDewasa.Online", "id", ContentType.HENTAI) internal class KomikDewasa(context: MangaLoaderContext) : MangaReaderParser( context, - MangaSource.KOMIKDEWASA_ONLINE, + MangaParserSource.KOMIKDEWASA_ONLINE, "komikdewasa.online", pageSize = 20, searchPageSize = 10, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikDewasaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikDewasaParser.kt index 1912bd616..49bfa587a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikDewasaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikDewasaParser.kt @@ -3,13 +3,13 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* -@MangaSourceParser("KOMIKDEWASA", "komikRemaja.cfd", "id", ContentType.HENTAI) +@MangaSourceParser("KOMIKDEWASA", "komikRemaja.icu", "id", ContentType.HENTAI) internal class KomikDewasaParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKDEWASA, "komikremaja.cfd", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KOMIKDEWASA, "komikremaja.icu", pageSize = 20, searchPageSize = 10) { override val listUrl: String = "/komik" override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikGo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikGo.kt new file mode 100644 index 000000000..37fae1166 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikGo.kt @@ -0,0 +1,11 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("KOMIKGO", "KomikGo", "id", ContentType.HENTAI) +internal class KomikGo(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.KOMIKGO, "komikgo.xyz", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikIndoParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikIndoParser.kt index 280ad6e8f..53b368ff0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikIndoParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikIndoParser.kt @@ -2,12 +2,12 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("KOMIKINDO", "KomikIndo", "id") internal class KomikIndoParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKINDO, "komikindo.co", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KOMIKINDO, "komikindo.co", pageSize = 20, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLokalParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLokalParser.kt index 10b5efbc1..98144cc02 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLokalParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLokalParser.kt @@ -2,13 +2,13 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("KOMIKLOKAL", "KomikMirror", "id") internal class KomikLokalParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKLOKAL, "komikmirror.lol", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KOMIKLOKAL, "komikmu.fun", pageSize = 20, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLovers.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLovers.kt new file mode 100644 index 000000000..f9b1b23f9 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikLovers.kt @@ -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("KOMIKLOVERS", "KomikLovers", "id") +internal class KomikLovers(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.KOMIKLOVERS, "komiklovers.com", pageSize = 20, searchPageSize = 10) { + override val sourceLocale: Locale = Locale.ENGLISH + override val listUrl = "/komik" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPix.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPix.kt new file mode 100644 index 000000000..4ddaeed3d --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPix.kt @@ -0,0 +1,13 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("KOMIKPIX", "KomikPix", "id", ContentType.HENTAI) +internal class KomikPix(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.KOMIKPIX, "komikpix.com", pageSize = 30, searchPageSize = 14) { + override val listUrl = "/hentai" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPoi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPoi.kt new file mode 100644 index 000000000..06c085b96 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikPoi.kt @@ -0,0 +1,15 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +import java.util.* + +@MangaSourceParser("KOMIKPOI", "KomikPoi", "id", ContentType.HENTAI) +internal class KomikPoi(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.KOMIKPOI, "komikpoi.com", pageSize = 20, searchPageSize = 10) { + override val sourceLocale: Locale = Locale.ENGLISH + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikSan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikSan.kt index 83e67f139..05a8c428d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikSan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikSan.kt @@ -1,21 +1,19 @@ 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.Manga -import org.koitharu.kotatsu.parsers.model.MangaListFilter -import org.koitharu.kotatsu.parsers.model.MangaSource -import org.koitharu.kotatsu.parsers.model.MangaState -import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import org.koitharu.kotatsu.parsers.util.domain import org.koitharu.kotatsu.parsers.util.oneOrThrowIfMany import org.koitharu.kotatsu.parsers.util.parseHtml import org.koitharu.kotatsu.parsers.util.urlEncoded +@Broken @MangaSourceParser("KOMIKSAN", "KomikSan", "id") internal class KomikSan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKSAN, "komiksan.link", pageSize = 40, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KOMIKSAN, "komiksan.link", pageSize = 40, searchPageSize = 10) { override val selectMangaListImg = "img.attachment-medium" override val listUrl = "/list" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikSay.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikSay.kt index 06ce1e976..c7f614c7f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikSay.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikSay.kt @@ -2,13 +2,13 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("KOMIKSAY", "KomikSay", "id") internal class KomikSay(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKSAY, "komiksay.info", pageSize = 30, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KOMIKSAY, "komiksay.info", pageSize = 30, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikTapParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikTapParser.kt index 6a5eef33a..ed02edcb3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikTapParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomikTapParser.kt @@ -2,13 +2,12 @@ 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.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale -@MangaSourceParser("KOMIKTAP", "KomikTap", "id") +@MangaSourceParser("KOMIKTAP", "KomikTap", "id", ContentType.HENTAI) internal class KomikTapParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKTAP, "komiktap.me", pageSize = 25, searchPageSize = 10) { - override val sourceLocale: Locale = Locale.ENGLISH + MangaReaderParser(context, MangaParserSource.KOMIKTAP, "komiktap.info", pageSize = 25, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt index eec44203c..f0792ad98 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikcast.kt @@ -13,7 +13,7 @@ import java.util.* @MangaSourceParser("KOMIKCAST", "KomikCast", "id") internal class Komikcast(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKCAST, "komikcast.lol", pageSize = 60, searchPageSize = 28) { + MangaReaderParser(context, MangaParserSource.KOMIKCAST, "komikcast.cz", pageSize = 60, searchPageSize = 28) { override val listUrl = "/daftar-komik" override val datePattern = "MMM d, yyyy" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt index c2d196ab5..d62f377dc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/KomiklokalCfd.kt @@ -3,12 +3,12 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("KOMIKLOKALCFD", "KomikLokal.mom", "id", ContentType.HENTAI) internal class KomiklokalCfd(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKLOKALCFD, "komiklokal.mom", pageSize = 30, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.KOMIKLOKALCFD, "komiklokal.shop", pageSize = 30, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikstation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikstation.kt index 929f15d48..51c63a5cd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikstation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komikstation.kt @@ -2,12 +2,12 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("KOMIKSTATION", "KomikStation", "id") internal class Komikstation(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKSTATION, "komikstation.co", pageSize = 30, searchPageSize = 30) { + MangaReaderParser(context, MangaParserSource.KOMIKSTATION, "komikstation.co", pageSize = 30, searchPageSize = 30) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komiku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komiku.kt index 7bc57fad7..94013dc32 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komiku.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Komiku.kt @@ -2,12 +2,12 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("KOMIKU", "Komiku", "id") internal class Komiku(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.KOMIKU, "komiku.com", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.KOMIKU, "komiku.com", pageSize = 20, searchPageSize = 20) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kyumik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kyumik.kt new file mode 100644 index 000000000..beb2f3fdb --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Kyumik.kt @@ -0,0 +1,11 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("KYUMIK", "Kyumik", "id", ContentType.HENTAI) +internal class Kyumik(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.KYUMIK, "kyumik.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Lianscans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Lianscans.kt index cbe38470e..731593c0c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Lianscans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Lianscans.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource 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) { + MangaReaderParser(context, MangaParserSource.LIANSCANS, "www.lianscans.my.id", pageSize = 10, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaShiro.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaShiro.kt index 6762e1820..e69d264bd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaShiro.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaShiro.kt @@ -1,14 +1,16 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale +import java.util.* +@Broken @MangaSourceParser("MANGASHIRO", "MangaShiro", "id") internal class MangaShiro(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGASHIRO, "mangashiro.me", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANGASHIRO, "mangashiro.me", pageSize = 20, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaSusuku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaSusuku.kt index 76fe6abe6..05f61f856 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaSusuku.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaSusuku.kt @@ -3,13 +3,13 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("MANGASUSUKU", "MangaSusuku", "id", ContentType.HENTAI) internal class MangaSusuku(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGASUSUKU, "mangasusuku.xyz", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.MANGASUSUKU, "mangasusuku.xyz", pageSize = 20, searchPageSize = 20) { override val listUrl = "/komik" override val datePattern = "MMM d, yyyy" override val sourceLocale: Locale = Locale.ENGLISH diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaTaleParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaTaleParser.kt index 4d015da46..164deca4e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaTaleParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangaTaleParser.kt @@ -2,13 +2,13 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("MANGATALE", "MangaTale", "id") internal class MangaTaleParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGATALE, "mangatale.co", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANGATALE, "mangatale.co", pageSize = 20, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangadop.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangadop.kt index 33e090734..c7cbc2d0a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangadop.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangadop.kt @@ -3,12 +3,12 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale +import java.util.* @MangaSourceParser("MANGADOP", "MangaDop", "id", ContentType.HENTAI) internal class Mangadop(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGADOP, "mangadop.net", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.MANGADOP, "mangadop.net", pageSize = 20, searchPageSize = 20) { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangakKita.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangakKita.kt index fb2f5c58f..a357e077b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangakKita.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MangakKita.kt @@ -2,13 +2,13 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("MANGAKITA", "MangaKita", "id") internal class MangakKita(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAKITA, "mangakita.id", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANGAKITA, "mangakita.id", pageSize = 20, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangakyo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangakyo.kt index f9ef893a7..d23da43f7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangakyo.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangakyo.kt @@ -2,12 +2,12 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANGAKYO", "MangaKyo", "id") internal class Mangakyo(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAKYO, "mangakyo.vip", pageSize = 40, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.MANGAKYO, "mangakyo.vip", pageSize = 40, searchPageSize = 20) { override val listUrl = "/komik" override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangayaro.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangayaro.kt index 11402b805..778a9a4dc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangayaro.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Mangayaro.kt @@ -2,12 +2,12 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("MANGAYARO", "MangaYaro", "id") internal class Mangayaro(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAYARO, "www.mangayaro.id", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.MANGAYARO, "mangayaro.id", pageSize = 20, searchPageSize = 20) { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt index 0e806718c..66db6bc92 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoIcu.kt @@ -3,12 +3,13 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* -@MangaSourceParser("MANHWAINDOICU", "ManhwaIndo.sbs", "id", ContentType.HENTAI) +@MangaSourceParser("MANHWAINDOICU", "KomikCinta", "id", ContentType.HENTAI) internal class ManhwaIndoIcu(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWAINDOICU, "manhwaindo.sbs", pageSize = 30, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANHWAINDOICU, "komikcinta.icu", pageSize = 30, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH + override val listUrl = "/komik" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt index 240694dbb..56189459b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaIndoParser.kt @@ -2,14 +2,12 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.* -@MangaSourceParser("MANHWAINDO", "ManhwaIndo.id", "id") +@MangaSourceParser("MANHWAINDO", "ManhwaIndo", "id") 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 + MangaReaderParser(context, MangaParserSource.MANHWAINDO, "manhwaindo.net", pageSize = 30, searchPageSize = 10) { + override val datePattern = "MMM d, yyyy" override val listUrl = "/series" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLand.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLand.kt index cbe942fab..2f66c2341 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLand.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLand.kt @@ -3,11 +3,12 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("MANHWALAND", "ManhwaLand", "id", ContentType.HENTAI) +@MangaSourceParser("MANHWALAND", "ManhwaLand.vip", "id", ContentType.HENTAI) internal class ManhwaLand(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWALAND, "62.182.80.253", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANHWALAND, "manhwaland.vip", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false + override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLandInk.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLandInk.kt new file mode 100644 index 000000000..9185128cd --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaLandInk.kt @@ -0,0 +1,20 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("MANHWALAND_INK", "ManhwaLand.ink", "id", ContentType.HENTAI) +internal class ManhwaLandInk(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.MANHWALAND_INK, + "www.manhwaland.ink", + pageSize = 20, + searchPageSize = 10, + ) { + override val isTagsExclusionSupported = false + override val datePattern = "MMM d, yyyy" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaPlus.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaPlus.kt index 67ced62e1..7eb9d7f73 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaPlus.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwaPlus.kt @@ -2,13 +2,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.* +import org.koitharu.kotatsu.parsers.model.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("MANHWAPLUS", "ManhwaPlus", "id", ContentType.HENTAI) internal class ManhwaPlus(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWAPLUS, "manhwablue.com", 20, 10) { + MangaReaderParser(context, MangaParserSource.MANHWAPLUS, "manhwablue.com", 20, 10) { override val sourceLocale: Locale = Locale.ENGLISH override val listUrl = "/komik" override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwadesuParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwadesuParser.kt index c7560816a..0cd393c2c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwadesuParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwadesuParser.kt @@ -3,12 +3,12 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANHWADESU", "ManhwaDesu", "id", ContentType.HENTAI) internal class ManhwadesuParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWADESU, "manhwadesu.cc", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANHWADESU, "manhwadesu.cc", pageSize = 20, searchPageSize = 10) { override val listUrl = "/komik" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwalistParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwalistParser.kt index 6c98aed30..1ed808c35 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwalistParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/ManhwalistParser.kt @@ -2,12 +2,12 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("MANHWALIST", "ManhwaList", "id") internal class ManhwalistParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANHWALIST, "manhwalist.com", pageSize = 24, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANHWALIST, "manhwalist.com", pageSize = 24, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MasterKomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MasterKomik.kt index eaa14fcb1..de88bbc97 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MasterKomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MasterKomik.kt @@ -2,12 +2,12 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MASTERKOMIK", "Tenshi", "id") internal class MasterKomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MASTERKOMIK, "tenshi.id", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.MASTERKOMIK, "tenshi.id", pageSize = 20, searchPageSize = 20) { override val datePattern = "MMM d, yyyy" override val listUrl = "/komik" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MiHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MiHentai.kt index 75f6e1596..720c0ba34 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MiHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/MiHentai.kt @@ -3,12 +3,12 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MIHENTAI", "MiHentai", "id", ContentType.HENTAI) internal class MiHentai(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MIHENTAI, "mihentai.com", pageSize = 30, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MIHENTAI, "mihentai.com", pageSize = 30, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Natsu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Natsu.kt index cf7e1ccd6..44ae25664 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Natsu.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Natsu.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource 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, MangaParserSource.NATSU, "natsu.id", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Ngomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Ngomik.kt new file mode 100644 index 000000000..877751086 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Ngomik.kt @@ -0,0 +1,13 @@ +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("NGOMIK", "Ngomik", "id") +internal class Ngomik(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.NGOMIK, "ngomik.mom", pageSize = 20, searchPageSize = 5) { + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Noromax.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Noromax.kt index 2f05e06a6..c82223bf6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Noromax.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Noromax.kt @@ -2,13 +2,13 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale +import java.util.* @MangaSourceParser("NOROMAX", "Noromax", "id") internal class Noromax(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.NOROMAX, "noromax.my.id", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.NOROMAX, "noromax.my.id", pageSize = 20, searchPageSize = 10) { override val listUrl = "/Komik" override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Otsugami.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Otsugami.kt index d740f40c4..bdcb708fc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Otsugami.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Otsugami.kt @@ -1,14 +1,16 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale +import java.util.* +@Broken @MangaSourceParser("OTSUGAMI", "Otsugami", "id") internal class Otsugami(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.OTSUGAMI, "otsugami.id", pageSize = 40, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.OTSUGAMI, "otsugami.id", pageSize = 40, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SekaikomikParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SekaikomikParser.kt index d310ec5c2..86f07d7c2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SekaikomikParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SekaikomikParser.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SEKAIKOMIK", "SekaiKomik", "id") internal class SekaikomikParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SEKAIKOMIK, "sekaikomik.guru", pageSize = 20, searchPageSize = 100) { + MangaReaderParser(context, MangaParserSource.SEKAIKOMIK, "sekaikomik.guru", pageSize = 20, searchPageSize = 100) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sektedoujin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sektedoujin.kt index 2c0c3e0f5..9ff7640ce 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sektedoujin.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sektedoujin.kt @@ -3,12 +3,12 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SEKTEDOUJIN", "SekteDoujin", "id", ContentType.HENTAI) internal class Sektedoujin(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SEKTEDOUJIN, "sektedoujin.cc", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.SEKTEDOUJIN, "sektedoujin.cc", pageSize = 20, searchPageSize = 20) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sheakomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sheakomik.kt index 6a7870cc5..50b05c2ac 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sheakomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Sheakomik.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("SHEAKOMIK", "SheaKomik", "id") internal class Sheakomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SHEAKOMIK, "sheakomik.com", pageSize = 40, searchPageSize = 40) { + MangaReaderParser(context, MangaParserSource.SHEAKOMIK, "sheakomik.com", pageSize = 40, searchPageSize = 40) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Shirakami.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Shirakami.kt index 4ef92805f..49e3fde5a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Shirakami.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Shirakami.kt @@ -2,13 +2,13 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale +import java.util.* @MangaSourceParser("SHIRAKAMI", "Shirakami", "id") internal class Shirakami(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SHIRAKAMI, "shirakami.xyz", pageSize = 10, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.SHIRAKAMI, "shirakami.xyz", pageSize = 10, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SirenKomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SirenKomik.kt index 4e5234cd6..93fc1f25d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SirenKomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SirenKomik.kt @@ -2,11 +2,11 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SIRENKOMIK", "SirenKomik", "id") internal class SirenKomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SIRENKOMIK, "sirenkomik.my.id", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.SIRENKOMIK, "sirenkomik.my.id", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SoulScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SoulScans.kt index 5dddf7acc..6f019f0b9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SoulScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/SoulScans.kt @@ -2,13 +2,13 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("SOULSCANS", "SoulScans", "id") internal class SoulScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SOULSCANS, "soulscans.my.id", pageSize = 30, searchPageSize = 30) { + MangaReaderParser(context, MangaParserSource.SOULSCANS, "soulscans.my.id", pageSize = 30, searchPageSize = 30) { override val datePattern = "MMM d, yyyy" override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Tukangkomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Tukangkomik.kt index 41abf9276..c5ee615b2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Tukangkomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/Tukangkomik.kt @@ -2,13 +2,13 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("TUKANGKOMIK", "Tukang Komik", "id") internal class Tukangkomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TUKANGKOMIK, "tukangkomik.id", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.TUKANGKOMIK, "tukangkomik.id", pageSize = 20, searchPageSize = 20) { override val datePattern = "MMM d, yyyy" override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/WarungKomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/WarungKomik.kt index 883d9dc14..3561099fb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/WarungKomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/WarungKomik.kt @@ -1,12 +1,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("WARUNGKOMIK", "WarungKomik", "id") internal class WarungKomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.WARUNGKOMIK, "warungkomik.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.WARUNGKOMIK, "warungkomik.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/WestmangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/WestmangaParser.kt index 25b37697c..15e292556 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/WestmangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/WestmangaParser.kt @@ -2,13 +2,13 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("WESTMANGA", "WestManga", "id") internal class WestmangaParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.WESTMANGA, "westmanga.fun", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.WESTMANGA, "westmanga.fun", pageSize = 20, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/YumeKomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/YumeKomik.kt index ac9b2bfd8..e1c233d43 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/YumeKomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/YumeKomik.kt @@ -2,9 +2,9 @@ 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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("YUMEKOMIK", "YumeKomik", "id") internal class YumeKomik(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.YUMEKOMIK, "yumekomik.com", pageSize = 20, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.YUMEKOMIK, "yumekomik.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/YuriLab.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/YuriLab.kt index e0de2e09d..812364f7d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/YuriLab.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/id/YuriLab.kt @@ -3,13 +3,13 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale +import java.util.* @MangaSourceParser("YURILAB", "YuriLab", "id", ContentType.HENTAI) internal class YuriLab(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.YURILAB, "yurilab.my.id", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.YURILAB, "yurilab.my.id", pageSize = 20, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/it/Walpurgiscan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/it/Walpurgiscan.kt index 2cab6a21f..19099b780 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/it/Walpurgiscan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/it/Walpurgiscan.kt @@ -2,12 +2,18 @@ package org.koitharu.kotatsu.parsers.site.mangareader.it import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("WALPURGISCAN", "WalpurgiScan", "it") internal class Walpurgiscan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.WALPURGISCAN, "www.walpurgiscan.it", pageSize = 20, searchPageSize = 20) { + MangaReaderParser( + context, + MangaParserSource.WALPURGISCAN, + "www.walpurgiscan.it", + pageSize = 20, + searchPageSize = 20, + ) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/it/WitComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/it/WitComics.kt index a0d60c935..5e93db638 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/it/WitComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/it/WitComics.kt @@ -1,12 +1,14 @@ package org.koitharu.kotatsu.parsers.site.mangareader.it +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("WITCOMICS", "WitComics", "it") internal class WitComics(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.WITCOMICS, "www.witcomics.net", pageSize = 5, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.WITCOMICS, "www.witcomics.net", pageSize = 5, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaJp.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaJp.kt index 6ee6922fa..e4ab18c31 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaJp.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaJp.kt @@ -2,13 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ja import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale +import java.util.* @MangaSourceParser("MANGAJP", "MangaJp", "ja") internal class MangaJp(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAJP, "mangajp.top", pageSize = 54, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANGAJP, "mangajp.top", pageSize = 54, searchPageSize = 10) { override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaMate.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaMate.kt index 4b814bfa3..4c739ad63 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaMate.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/MangaMate.kt @@ -2,13 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ja import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -import java.util.Locale +import java.util.* @MangaSourceParser("MANGAMATE", "MangaMate", "ja") internal class MangaMate(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAMATE, "manga-mate.org", pageSize = 10, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANGAMATE, "manga-mate.org", pageSize = 10, searchPageSize = 10) { override val datePattern = "M月 d, yyyy" override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/Rawkuma.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/Rawkuma.kt index 7899ae753..6430cccf4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/Rawkuma.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/ja/Rawkuma.kt @@ -2,13 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mangareader.ja import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser import java.util.* @MangaSourceParser("RAWKUMA", "Rawkuma", "ja") internal class Rawkuma(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.RAWKUMA, "rawkuma.com", pageSize = 54, searchPageSize = 54) { + MangaReaderParser(context, MangaParserSource.RAWKUMA, "rawkuma.com", pageSize = 54, searchPageSize = 54) { override val datePattern = "MMM d, yyyy" override val sourceLocale: Locale = Locale.ENGLISH override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pl/SkanlacjeFeniksy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pl/SkanlacjeFeniksy.kt index 28c127d28..695e80ca9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pl/SkanlacjeFeniksy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pl/SkanlacjeFeniksy.kt @@ -2,14 +2,14 @@ package org.koitharu.kotatsu.parsers.site.mangareader.pl import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SKANLACJEFENIKSY", "SkanlacjeFeniksy", "pl") internal class SkanlacjeFeniksy(context: MangaLoaderContext) : MangaReaderParser( context, - MangaSource.SKANLACJEFENIKSY, + MangaParserSource.SKANLACJEFENIKSY, "skanlacje-feniksy.pl", pageSize = 10, searchPageSize = 10, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/AncientComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/AncientComics.kt new file mode 100644 index 000000000..bd37dbdf8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/AncientComics.kt @@ -0,0 +1,16 @@ +package org.koitharu.kotatsu.parsers.site.mangareader.pt + +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("ANCIENTCOMICS", "AncientComics", "pt") +internal class AncientComics(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.ANCIENTCOMICS, + "ancientcomics.com.br", + pageSize = 20, + searchPageSize = 20, + ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/DiskusScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/DiskusScan.kt index 936a9c450..ee05ebb5c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/DiskusScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/DiskusScan.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("DISKUSSCAN", "DiskusScan", "pt") internal class DiskusScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.DISKUSSCAN, "diskusscan.com", pageSize = 20, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.DISKUSSCAN, "diskusscan.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/FranxxMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/FranxxMangas.kt index d93388780..e63f56089 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/FranxxMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/FranxxMangas.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("FRANXXMANGAS", "FranxxMangas", "pt") internal class FranxxMangas(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.FRANXXMANGAS, "franxxmangas.net", pageSize = 10, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.FRANXXMANGAS, "franxxmangas.net", pageSize = 10, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/HikariScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/HikariScan.kt index aa21c9c99..ce840f0bf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/HikariScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/HikariScan.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mangareader.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("HIKARISCAN", "HikariScan", "pt") internal class HikariScan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.HIKARISCAN, "hikariscan.org", pageSize = 20, searchPageSize = 10) + MangaReaderParser(context, MangaParserSource.HIKARISCAN, "hikariscan.org", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/IrisScanlator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/IrisScanlator.kt index 7e15c5d4f..40ff03191 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/IrisScanlator.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/IrisScanlator.kt @@ -2,9 +2,15 @@ package org.koitharu.kotatsu.parsers.site.mangareader.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("IRISSCANLATOR", "IrisScanlator", "pt") internal class IrisScanlator(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.IRISSCANLATOR, "irisscanlator.com.br", pageSize = 20, searchPageSize = 10) + MangaReaderParser( + context, + MangaParserSource.IRISSCANLATOR, + "irisscanlator.com.br", + pageSize = 20, + searchPageSize = 10, + ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/MangasChan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/MangasChan.kt index cf9d04b2d..0305b196e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/MangasChan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/MangasChan.kt @@ -1,12 +1,14 @@ package org.koitharu.kotatsu.parsers.site.mangareader.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("MANGASCHAN", "MangasChan", "pt") internal class MangasChan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGASCHAN, "mangaschan.net", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.MANGASCHAN, "mangaschan.net", pageSize = 20, searchPageSize = 20) { override val datePattern = "MMMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/MangasOnline.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/MangasOnline.kt index 8e448ee8c..9255486d2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/MangasOnline.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/MangasOnline.kt @@ -1,12 +1,14 @@ package org.koitharu.kotatsu.parsers.site.mangareader.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("MANGASONLINE", "MangasOnline", "pt") internal class MangasOnline(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGASONLINE, "mangasonline.cc", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANGASONLINE, "mangasonline.cc", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Origamiorpheans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Origamiorpheans.kt index 443ff1748..09ef58546 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Origamiorpheans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Origamiorpheans.kt @@ -2,9 +2,15 @@ package org.koitharu.kotatsu.parsers.site.mangareader.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("ORIGAMIORPHEANS", "Origami Orpheans", "pt") internal class Origamiorpheans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ORIGAMIORPHEANS, "origami-orpheans.com", pageSize = 20, searchPageSize = 10) + MangaReaderParser( + context, + MangaParserSource.ORIGAMIORPHEANS, + "origami-orpheans.com", + pageSize = 20, + searchPageSize = 10, + ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Silencescan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Silencescan.kt index d3da2de1c..568cc1a6b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Silencescan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Silencescan.kt @@ -3,11 +3,17 @@ package org.koitharu.kotatsu.parsers.site.mangareader.pt 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SILENCESCAN", "SilenceScan", "pt", ContentType.HENTAI) internal class Silencescan(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SILENCESCAN, "silencescan.com.br", pageSize = 35, searchPageSize = 35) { + MangaReaderParser( + context, + MangaParserSource.SILENCESCAN, + "silencescan.com.br", + pageSize = 35, + searchPageSize = 35, + ) { override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/SssScanlator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/SssScanlator.kt index 939f396ca..30657c903 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/SssScanlator.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/SssScanlator.kt @@ -2,11 +2,17 @@ package org.koitharu.kotatsu.parsers.site.mangareader.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SSSSCANLATOR", "SssScanlator", "pt") internal class SssScanlator(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SSSSCANLATOR, "sssscanlator.com.br", pageSize = 20, searchPageSize = 10) { + MangaReaderParser( + context, + MangaParserSource.SSSSCANLATOR, + "sssscanlator.com.br", + pageSize = 20, + searchPageSize = 10, + ) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Tsundoku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Tsundoku.kt index 7e73d0ec6..59a765b88 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Tsundoku.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/pt/Tsundoku.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mangareader.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("TSUNDOKU", "Tsundoku", "pt") internal class Tsundoku(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TSUNDOKU, "tsundoku.com.br", pageSize = 50, searchPageSize = 50) { + MangaReaderParser(context, MangaParserSource.TSUNDOKU, "tsundoku.com.br", pageSize = 50, searchPageSize = 50) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Doujin69.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Doujin69.kt index 52c39a75b..4d62b9c5b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Doujin69.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Doujin69.kt @@ -3,12 +3,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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("DOUJIN69", "Doujin69", "th", type = ContentType.HENTAI) internal class Doujin69(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.DOUJIN69, "doujin69.com", pageSize = 40, searchPageSize = 21) { + MangaReaderParser(context, MangaParserSource.DOUJIN69, "doujin69.com", pageSize = 40, searchPageSize = 21) { override val listUrl = "/doujin" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/DragonManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/DragonManga.kt new file mode 100644 index 000000000..59e55deed --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/DragonManga.kt @@ -0,0 +1,17 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("DRAGONMANGA", "DragonManga", "th", ContentType.HENTAI) +internal class DragonManga(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.DRAGONMANGA, + "www.dragon-manga.com", + pageSize = 40, + searchPageSize = 10, + ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/EcchiDoujin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/EcchiDoujin.kt new file mode 100644 index 000000000..7a84e7e9f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/EcchiDoujin.kt @@ -0,0 +1,14 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("ECCHIDOUJIN", "EcchiDoujin", "th", ContentType.HENTAI) +internal class EcchiDoujin(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.ECCHIDOUJIN, "ecchi-doujin.com", pageSize = 30, searchPageSize = 10) { + override val listUrl = "/doujin" + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/InuManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/InuManga.kt index 886240173..600cea5d3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/InuManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/InuManga.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("INUMANGA", "InuManga", "th") internal class InuManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.INUMANGA, "www.inu-manga.com", pageSize = 40, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.INUMANGA, "www.inu-manga.com", pageSize = 40, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/LamiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/LamiManga.kt index be7218ce5..92223d6ef 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/LamiManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/LamiManga.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("LAMIMANGA", "LamiManga", "th") internal class LamiManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.LAMIMANGA, "www.lami-manga.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.LAMIMANGA, "mangalami.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MafiaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MafiaManga.kt index fdb47a6a4..5a576982a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MafiaManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MafiaManga.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MAFIAMANGA", "MafiaManga", "th") internal class MafiaManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MAFIAMANGA, "mafia-manga.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MAFIAMANGA, "mafia-manga.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Makimaaaaa.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Makimaaaaa.kt new file mode 100644 index 000000000..ba12c809c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Makimaaaaa.kt @@ -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("MAKIMAAAAA", "Makimaaaaa", "th") +internal class Makimaaaaa(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MAKIMAAAAA, "makimaaaaa.com", pageSize = 30, searchPageSize = 30) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Manga168.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Manga168.kt index 5c97dbf85..f2b469cf3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Manga168.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Manga168.kt @@ -3,11 +3,11 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANGA168", "Manga168", "th", ContentType.HENTAI) internal class Manga168(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGA168, "manga168.com", pageSize = 40, searchPageSize = 30) { + MangaReaderParser(context, MangaParserSource.MANGA168, "manga168.com", pageSize = 40, searchPageSize = 30) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Manga689.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Manga689.kt index 7d70e6de5..0baf8b1f0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Manga689.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Manga689.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANGA689", "Manga689", "th") internal class Manga689(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGA689, "manga689.com", pageSize = 45, searchPageSize = 21) { + MangaReaderParser(context, MangaParserSource.MANGA689, "manga689.com", pageSize = 45, searchPageSize = 21) { override val listUrl = "/read" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaMoons.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaMoons.kt index f5b9f15d9..7b3a0831b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaMoons.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/MangaMoons.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANGAMOONS", "MangaMoons", "th") internal class MangaMoons(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAMOONS, "manga-moons.net", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANGAMOONS, "manga-moons.net", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/NtrManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/NtrManga.kt new file mode 100644 index 000000000..6c43f3948 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/NtrManga.kt @@ -0,0 +1,13 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("NTRMANGA", "NtrManga", "th", ContentType.HENTAI) +internal class NtrManga(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.NTRMANGA, "www.ntr-manga.com", pageSize = 30, searchPageSize = 10) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/PopsManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/PopsManga.kt index b96e6463b..551598262 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/PopsManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/PopsManga.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("POPSMANGA", "PopsManga", "th") internal class PopsManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.POPSMANGA, "popsmanga.com", pageSize = 20, searchPageSize = 14) { + MangaReaderParser(context, MangaParserSource.POPSMANGA, "popsmanga.com", pageSize = 20, searchPageSize = 14) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Sodsaime.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Sodsaime.kt index fcacac5eb..d25cbe91b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Sodsaime.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/Sodsaime.kt @@ -2,11 +2,17 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SODSAIME", "สดใสเมะ", "th") internal class Sodsaime(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SODSAIME, "www.xn--l3c0azab5a2gta.com", pageSize = 40, searchPageSize = 10) { + MangaReaderParser( + context, + MangaParserSource.SODSAIME, + "www.xn--l3c0azab5a2gta.com", + pageSize = 40, + searchPageSize = 10, + ) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/TanukiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/TanukiManga.kt new file mode 100644 index 000000000..29401b447 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/TanukiManga.kt @@ -0,0 +1,18 @@ +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("TANUKIMANGA", "TanukiManga", "th") +internal class TanukiManga(context: MangaLoaderContext) : + MangaReaderParser( + context, + MangaParserSource.TANUKIMANGA, + "www.tanuki-manga.com", + pageSize = 40, + searchPageSize = 10, + ) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ThaiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ThaiManga.kt index 9ecb7b3c0..e80e63ad0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ThaiManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ThaiManga.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("THAIMANGA", "ThaiManga", "th") internal class ThaiManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.THAIMANGA, "www.thaimanga.net", pageSize = 40, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.THAIMANGA, "www.thaimanga.net", pageSize = 40, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ToomtamManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ToomtamManga.kt index 8566245c6..bd8f30166 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ToomtamManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ToomtamManga.kt @@ -3,11 +3,17 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("TOOMTAMMANGA", "ToomtamManga", "th", ContentType.HENTAI) internal class ToomtamManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TOOMTAMMANGA, "toomtam-manga.com", pageSize = 30, searchPageSize = 28) { + MangaReaderParser( + context, + MangaParserSource.TOOMTAMMANGA, + "toomtam-manga.com", + pageSize = 30, + searchPageSize = 28, + ) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ToonHunterParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ToonHunterParser.kt index 40596eaa6..4e8baf8ff 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ToonHunterParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/th/ToonHunterParser.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("TOONHUNTER", "ToonHunter", "th") internal class ToonHunterParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TOONHUNTER, "toonhunter.com", pageSize = 30, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.TOONHUNTER, "toonhunter.com", pageSize = 30, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AdonisFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AdonisFansub.kt index 82ac2cd4d..0acbf991f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AdonisFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AdonisFansub.kt @@ -2,11 +2,17 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("ADONISFANSUB", "AdonisFansub", "tr") internal class AdonisFansub(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ADONISFANSUB, "manga.adonisfansub.com", pageSize = 20, searchPageSize = 20) { + MangaReaderParser( + context, + MangaParserSource.ADONISFANSUB, + "manga.adonisfansub.com", + pageSize = 20, + searchPageSize = 20, + ) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AduManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AduManga.kt new file mode 100644 index 000000000..7e22381be --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AduManga.kt @@ -0,0 +1,14 @@ +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 +import java.util.Locale + +@MangaSourceParser("ADUMANGA", "AduManga", "tr") +internal class AduManga(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.ADUMANGA, "adumanga.com", pageSize = 20, searchPageSize = 10) { + override val isTagsExclusionSupported = false + override val sourceLocale: Locale = Locale.ENGLISH +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AfroditScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AfroditScans.kt index cec60ace1..cdbd19005 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AfroditScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AfroditScans.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("AFRODITSCANS", "AfroditScans", "tr") internal class AfroditScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.AFRODITSCANS, "afroditscans.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.AFRODITSCANS, "afroditscans.com", pageSize = 20, searchPageSize = 10) { override val datePattern = "MMM d, yyyy" override val isNetShieldProtected = true override val isTagsExclusionSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ArcuraFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ArcuraFansub.kt index 7e01e65ae..4e1c79907 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ArcuraFansub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ArcuraFansub.kt @@ -3,12 +3,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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("ARCURAFANSUB", "ArcuraFansub", "tr", ContentType.HENTAI) internal class ArcuraFansub(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ARCURAFANSUB, "arcurafansub.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.ARCURAFANSUB, "arcurafansub.com", pageSize = 20, searchPageSize = 10) { override val listUrl = "/seri" override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AsemiFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AsemiFansub.kt new file mode 100644 index 000000000..16f5da2e8 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AsemiFansub.kt @@ -0,0 +1,10 @@ +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("ASEMIFANSUB", "AsemiFansub", "tr") +internal class AsemiFansub(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.ASEMIFANSUB, "asemifansub.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaManga.kt new file mode 100644 index 000000000..f5b12810c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/AthenaManga.kt @@ -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("ATHENAMANGA", "AthenaManga", "tr") +internal class AthenaManga(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.ATHENAMANGA, "athenamanga.com", pageSize = 20, searchPageSize = 10) { + override val isMultipleTagsSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Ayatoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Ayatoon.kt index 9c9b79079..328008add 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Ayatoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Ayatoon.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("AYATOON", "AyaToon", "tr") internal class Ayatoon(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.AYATOON, "ayatoon.com", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.AYATOON, "ayatoon.com", pageSize = 20, searchPageSize = 20) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/GaiaToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/GaiaToon.kt new file mode 100644 index 000000000..1d46e7278 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/GaiaToon.kt @@ -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("GAIATOON", "GaiaToon", "tr") +internal class GaiaToon(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.GAIATOON, "gaiatoon.com", pageSize = 50, searchPageSize = 10) { + override val isMultipleTagsSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Golgebahcesi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Golgebahcesi.kt index 55ef140ab..1d0fd2bd0 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Golgebahcesi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Golgebahcesi.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("GOLGEBAHCESI", "GolgeBahcesi", "tr") internal class Golgebahcesi(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.GOLGEBAHCESI, "golgebahcesi.com", pageSize = 14, searchPageSize = 9) { + MangaReaderParser(context, MangaParserSource.GOLGEBAHCESI, "golgebahcesi.com", pageSize = 14, searchPageSize = 9) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaGezgini.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaGezgini.kt index 2e0a50aa0..191b2b292 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaGezgini.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaGezgini.kt @@ -1,12 +1,14 @@ 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.MangaSource +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, MangaSource.MANGAGEZGINI, "mangagezgini.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANGAGEZGINI, "mangagezgini.net", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaKings.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaKings.kt index 02e3ba83c..0dc672f42 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaKings.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaKings.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANGAKINGS", "MangaKings", "tr") internal class MangaKings(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAKINGS, "mangakings.com.tr", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.MANGAKINGS, "mangakings.com.tr", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaSiginagi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaSiginagi.kt new file mode 100644 index 000000000..93fdb8375 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MangaSiginagi.kt @@ -0,0 +1,10 @@ +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("MANGASIGINAGI", "MangaSiginagi", "tr") +internal class MangaSiginagi(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.MANGASIGINAGI, "mangasiginagi.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangacim.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangacim.kt index 8f693181e..a4d35d2ac 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangacim.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangacim.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANGACIM", "Mangacim", "tr") internal class Mangacim(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGACIM, "mangacim.com", pageSize = 20, searchPageSize = 20) { + MangaReaderParser(context, MangaParserSource.MANGACIM, "mangacim.com", pageSize = 20, searchPageSize = 20) { override val datePattern = "MMM d, yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangaefendisi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangaefendisi.kt index 33307b84d..383bb62bf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangaefendisi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangaefendisi.kt @@ -2,11 +2,17 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MANGAEFENDISI", "MangaEfendisi", "tr") internal class Mangaefendisi(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAEFENDISI, "mangaefendisi.net", pageSize = 30, searchPageSize = 20) { + MangaReaderParser( + context, + MangaParserSource.MANGAEFENDISI, + "mangaefendisi.net", + pageSize = 30, + searchPageSize = 20, + ) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangaokutr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangaokutr.kt index 8bd5715a4..049d3f867 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangaokutr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Mangaokutr.kt @@ -2,9 +2,9 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser -@MangaSourceParser("MANGAOKUTR", "MangaOku Tr", "tr") +@MangaSourceParser("MANGAOKUTR", "MangaOkuTr", "tr") internal class Mangaokutr(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MANGAOKUTR, "mangaokutr.com", pageSize = 25, searchPageSize = 20) + MangaReaderParser(context, MangaParserSource.MANGAOKUTR, "mangaokutr.com", pageSize = 25, searchPageSize = 20) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MerlinScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MerlinScans.kt deleted file mode 100644 index 2f17473a6..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MerlinScans.kt +++ /dev/null @@ -1,12 +0,0 @@ -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.MangaSource -import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser - -@MangaSourceParser("MERLINSCANS", "MerlinScans", "tr") -internal class MerlinScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MERLINSCANS, "merlinscans.com", pageSize = 25, searchPageSize = 20) { - override val isTagsExclusionSupported = false -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MilaSub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MilaSub.kt deleted file mode 100644 index 9c5217a95..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MilaSub.kt +++ /dev/null @@ -1,12 +0,0 @@ -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.MangaSource -import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser - -@MangaSourceParser("MILASUB", "MilaSub", "tr") -internal class MilaSub(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MILASUB, "www.milasub.com", pageSize = 20, searchPageSize = 10) { - override val isTagsExclusionSupported = false -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MoonDaisyScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MoonDaisyScans.kt index c9c40c91f..a58a49b08 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MoonDaisyScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/MoonDaisyScans.kt @@ -3,11 +3,17 @@ 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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("MOONDAISY_SCANS", "MoonDaisyScans", "tr", ContentType.HENTAI) internal class MoonDaisyScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.MOONDAISY_SCANS, "moondaisyscans.biz", pageSize = 20, searchPageSize = 10) { + MangaReaderParser( + context, + MangaParserSource.MOONDAISY_SCANS, + "moondaisyscans.biz", + pageSize = 20, + searchPageSize = 10, + ) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NirvanaManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NirvanaManga.kt index 0d5a1bfea..47c0d79fa 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NirvanaManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NirvanaManga.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("NIRVANAMANGA", "NirvanaManga", "tr") internal class NirvanaManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.NIRVANAMANGA, "nirvanamanga.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.NIRVANAMANGA, "nirvanamanga.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NyxManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NyxManga.kt index ff11971e1..cd11712c8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NyxManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/NyxManga.kt @@ -1,13 +1,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser +@Broken @MangaSourceParser("NYXMANGA", "NyxManga", "tr") internal class NyxManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.NYXMANGA, "nyxmanga.com", pageSize = 14, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.NYXMANGA, "nyxmanga.com", pageSize = 14, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/PatiManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/PatiManga.kt index 6a839b134..9e4ffbc52 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/PatiManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/PatiManga.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("PATIMANGA", "PatiManga", "tr") internal class PatiManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.PATIMANGA, "www.patimanga.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.PATIMANGA, "www.patimanga.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/PrunusScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/PrunusScans.kt new file mode 100644 index 000000000..cc4b835a4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/PrunusScans.kt @@ -0,0 +1,11 @@ +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("PRUNUSSCANS", "PrunusScans", "tr") +internal class PrunusScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.PRUNUSSCANS, "prunusscans.com", pageSize = 20, searchPageSize = 10) + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Raindropteamfan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Raindropteamfan.kt index d29d33a64..3bce709ce 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Raindropteamfan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/Raindropteamfan.kt @@ -2,14 +2,14 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("RAINDROPTEAMFAN", "Raindrop Fansub", "tr") internal class Raindropteamfan(context: MangaLoaderContext) : MangaReaderParser( context, - MangaSource.RAINDROPTEAMFAN, + MangaParserSource.RAINDROPTEAMFAN, "www.raindropteamfan.com", pageSize = 25, searchPageSize = 10, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/RobinManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/RobinManga.kt index 330849292..8cae65502 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/RobinManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/RobinManga.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("ROBINMANGA", "RobinManga", "tr") internal class RobinManga(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.ROBINMANGA, "robinmanga.com", pageSize = 20, searchPageSize = 25) { + MangaReaderParser(context, MangaParserSource.ROBINMANGA, "robinmanga.com", pageSize = 20, searchPageSize = 25) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SereinScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SereinScan.kt new file mode 100644 index 000000000..8197e4958 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SereinScan.kt @@ -0,0 +1,10 @@ +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("SEREINSCAN", "SereinScan", "tr") +internal class SereinScan(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.SEREINSCAN, "sereinscan.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ShijieScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ShijieScans.kt new file mode 100644 index 000000000..d2b01d914 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ShijieScans.kt @@ -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("SHIJIESCANS", "ShijieScans", "tr") +internal class ShijieScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.SHIJIESCANS, "shijiescans.com", pageSize = 20, searchPageSize = 10) { + override val listUrl = "/seri" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/StrayFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/StrayFansub.kt new file mode 100644 index 000000000..b83bcf4bc --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/StrayFansub.kt @@ -0,0 +1,11 @@ +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.ContentType +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser + +@MangaSourceParser("STRAYFANSUB", "StrayFansub", "tr", ContentType.HENTAI) +internal class StrayFansub(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.STRAYFANSUB, "strayfansub.com", pageSize = 20, searchPageSize = 10) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SummerToon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SummerToon.kt index 39c417938..2f9f9acd8 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SummerToon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/SummerToon.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("SUMMERTOON", "SummerToon", "tr") internal class SummerToon(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.SUMMERTOON, "summertoon.net", pageSize = 10, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.SUMMERTOON, "summertoon.biz", pageSize = 10, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TarotScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TarotScans.kt index 93b07e3e2..92de48666 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TarotScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TarotScans.kt @@ -2,12 +2,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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("TAROTSCANS", "TarotScans", "tr") internal class TarotScans(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TAROTSCANS, "www.tarotscans.com", pageSize = 20, searchPageSize = 10) { + MangaReaderParser(context, MangaParserSource.TAROTSCANS, "www.tarotscans.com", pageSize = 20, searchPageSize = 10) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestFansubNet.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestFansubNet.kt index 2a1db1ea6..89b9565b1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestFansubNet.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestFansubNet.kt @@ -2,9 +2,15 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("TEMPESTFANSUBNET", "TempestFansub.net", "tr") internal class TempestFansubNet(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TEMPESTFANSUBNET, "tempestfansub.net", pageSize = 30, searchPageSize = 10) + MangaReaderParser( + context, + MangaParserSource.TEMPESTFANSUBNET, + "tempestfansub.net", + pageSize = 30, + searchPageSize = 10, + ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestfansubParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestfansubParser.kt index ee00c4ab1..fc24b6ee6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestfansubParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/TempestfansubParser.kt @@ -2,11 +2,17 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mangareader.MangaReaderParser @MangaSourceParser("TEMPESTFANSUB", "TempestFansub.Com", "tr") internal class TempestfansubParser(context: MangaLoaderContext) : - MangaReaderParser(context, MangaSource.TEMPESTFANSUB, "tempestfansub.com", pageSize = 25, searchPageSize = 40) { + MangaReaderParser( + context, + MangaParserSource.TEMPESTFANSUB, + "tempestfansub.com", + pageSize = 25, + searchPageSize = 40, + ) { override val isTagsExclusionSupported = false } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ZenithScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ZenithScans.kt new file mode 100644 index 000000000..663a42896 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangareader/tr/ZenithScans.kt @@ -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("ZENITHSCANS", "ZenithScans", "tr") +internal class ZenithScans(context: MangaLoaderContext) : + MangaReaderParser(context, MangaParserSource.ZENITHSCANS, "zenithscans.com", pageSize = 20, searchPageSize = 10) { + override val isTagsExclusionSupported = false +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/MmrcmsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/MmrcmsParser.kt index cbbde2c43..6199ad6e1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/MmrcmsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/MmrcmsParser.kt @@ -13,7 +13,7 @@ import java.util.* internal abstract class MmrcmsParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 20, ) : PagedMangaParser(context, source, pageSize) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/ar/Onma.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/ar/Onma.kt index 787f2bcb2..814b7dd95 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/ar/Onma.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/ar/Onma.kt @@ -8,11 +8,11 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser import org.koitharu.kotatsu.parsers.util.* -import java.util.Locale +import java.util.* @MangaSourceParser("ONMA", "Onma", "ar") internal class Onma(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.ONMA, "onma.me") { + MmrcmsParser(context, MangaParserSource.ONMA, "onma.me") { override val sourceLocale: Locale = Locale.ENGLISH override val selectState = "h3:contains(الحالة) .text" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/BananaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/BananaScan.kt index 83a6cc907..fa4de1e58 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/BananaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/BananaScan.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser @MangaSourceParser("BANANASCAN_COM", "BananaScan.Com", "en") internal class BananaScan(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.BANANASCAN_COM, "bananascans.com") + MmrcmsParser(context, MangaParserSource.BANANASCAN_COM, "bananascans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/ReadComicsOnline.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/ReadComicsOnline.kt index 2be915ee8..c6041019d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/ReadComicsOnline.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/en/ReadComicsOnline.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.en 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser @MangaSourceParser("READCOMICSONLINE", "ReadComicsOnline", "en", ContentType.COMICS) internal class ReadComicsOnline(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.READCOMICSONLINE, "readcomicsonline.ru") { + MmrcmsParser(context, MangaParserSource.READCOMICSONLINE, "readcomicsonline.ru") { override val selectState = "dt:contains(Status)" override val selectTag = "dt:contains(Categories)" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/es/AnzMangasHd.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/es/AnzMangasHd.kt index 429408234..452010257 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/es/AnzMangasHd.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/es/AnzMangasHd.kt @@ -2,13 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser -import java.util.Locale +import java.util.* @MangaSourceParser("ANZMANGASHD", "AnzMangasHd", "es") internal class AnzMangasHd(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.ANZMANGASHD, "www.anzmangashd.com") { + MmrcmsParser(context, MangaParserSource.ANZMANGASHD, "www.anzmangashd.com") { override val sourceLocale: Locale = Locale.ENGLISH override val selectState = "dt:contains(Estado)" override val selectAlt = "dt:contains(Otros nombres)" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/es/MangaDoor.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/es/MangaDoor.kt index 727f748ae..aac1938ba 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/es/MangaDoor.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/es/MangaDoor.kt @@ -1,14 +1,16 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser -import java.util.Locale +import java.util.* +@Broken @MangaSourceParser("MANGADOOR", "MangaDoor", "es") internal class MangaDoor(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.MANGADOOR, "mangadoor.com") { + MmrcmsParser(context, MangaParserSource.MANGADOOR, "mangadoor.com") { override val sourceLocale: Locale = Locale.ENGLISH override val selectState = "dt:contains(Estado)" override val selectAlt = "dt:contains(Otros nombres)" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/BentoScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/BentoScan.kt index cdbc705a8..89365e19b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/BentoScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/BentoScan.kt @@ -2,13 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser -import java.util.Locale +import java.util.* @MangaSourceParser("BENTOSCAN", "BentoScan", "fr") internal class BentoScan(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.BENTOSCAN, "bentoscan.com") { + MmrcmsParser(context, MangaParserSource.BENTOSCAN, "bentoscan.com") { override val sourceLocale: Locale = Locale.ENGLISH override val imgUpdated = ".jpg" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/FrScansCom.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/FrScansCom.kt index 4923fdcc7..ac1c288ad 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/FrScansCom.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/FrScansCom.kt @@ -3,13 +3,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser -import java.util.Locale +import java.util.* @Broken @MangaSourceParser("FRSCANSCOM", "FrScans.com", "fr") internal class FrScansCom(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.FRSCANSCOM, "frscans.com") { + MmrcmsParser(context, MangaParserSource.FRSCANSCOM, "frscans.com") { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpMangas.kt index 6d4afecc6..b6ba87550 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpMangas.kt @@ -3,13 +3,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser import java.util.* @Broken @MangaSourceParser("JPMANGAS", "JpMangas", "fr") internal class JpMangas(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.JPMANGAS, "jpmangas.xyz") { + MmrcmsParser(context, MangaParserSource.JPMANGAS, "jpmangas.xyz") { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpScanVf.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpScanVf.kt index 9eff63b83..b94c7689a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpScanVf.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/JpScanVf.kt @@ -3,13 +3,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser import java.util.* @Broken @MangaSourceParser("JPSCANVF", "LireScanVf.com", "fr") internal class JpScanVf(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.JPSCANVF, "lirescanvf.com") { + MmrcmsParser(context, MangaParserSource.JPSCANVF, "lirescanvf.com") { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/LelScanVf.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/LelScanVf.kt index fbdfda888..2c5e94d98 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/LelScanVf.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/LelScanVf.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser -import java.util.Locale +import java.util.* @MangaSourceParser("LELSCANVF", "LelScanVf", "fr") internal class LelScanVf(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.LELSCANVF, "lelscanvf.cc") { + MmrcmsParser(context, MangaParserSource.LELSCANVF, "lelscanfr.com") { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScan.kt index e0202bfdc..62a8ad5ec 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScan.kt @@ -2,13 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser -import java.util.Locale +import java.util.* @MangaSourceParser("MANGA_SCAN", "MangaScan", "fr") internal class MangaScan(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.MANGA_SCAN, "mangascan-fr.co") { + MmrcmsParser(context, MangaParserSource.MANGA_SCAN, "mangascan-fr.co") { override val imgUpdated = ".jpg" override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScanFr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScanFr.kt new file mode 100644 index 000000000..39ff2bee5 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/MangaScanFr.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.mmrcms.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.mmrcms.MmrcmsParser +import java.util.* + +@MangaSourceParser("MANGASCANFR", "MangaScanFr", "fr") +internal class MangaScanFr(context: MangaLoaderContext) : + MmrcmsParser(context, MangaParserSource.MANGASCANFR, "mangascan-fr.net") { + override val sourceLocale: Locale = Locale.ENGLISH + override val imgUpdated = ".jpg" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanManga.kt index 40ab75852..4db7839be 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanManga.kt @@ -3,14 +3,14 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser -import java.util.Locale +import java.util.* @Broken @MangaSourceParser("SCANMANGA", "ScanManga", "fr") internal class ScanManga(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.SCANMANGA, "scan-manga.me") { + MmrcmsParser(context, MangaParserSource.SCANMANGA, "scan-manga.me") { override val imgUpdated = ".jpg" override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanMangaVfWs.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanMangaVfWs.kt index 5a22aba5d..5e3e39cf9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanMangaVfWs.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanMangaVfWs.kt @@ -2,13 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser -import java.util.Locale +import java.util.* @MangaSourceParser("SCANMANGAVF_WS", "ScanMangaVf.ws", "fr") internal class ScanMangaVfWs(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.SCANMANGAVF_WS, "scanmanga-vf.me") { + MmrcmsParser(context, MangaParserSource.SCANMANGAVF_WS, "scanmanga-vf.me") { override val imgUpdated = ".jpg" override val selectTag = "dt:contains(Genres)" override val selectAlt = "dt:contains(Appelé aussi)" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanVf.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanVf.kt index d382c4b0a..b8739c645 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanVf.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/fr/ScanVf.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser -import java.util.Locale +import java.util.* @MangaSourceParser("SCANVF", "ScanVf", "fr") internal class ScanVf(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.SCANVF, "www.scan-vf.net") { + MmrcmsParser(context, MangaParserSource.SCANVF, "www.scan-vf.net") { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/id/KomikId.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/id/KomikId.kt index fbeedb14b..da3d070b9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/id/KomikId.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/id/KomikId.kt @@ -2,13 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser -import java.util.Locale +import java.util.* @MangaSourceParser("KOMIKID", "KomikId", "id") internal class KomikId(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.KOMIKID, "komikid.com") { + MmrcmsParser(context, MangaParserSource.KOMIKID, "komikid.com") { override val selectState = "dt:contains(Status)" override val selectAlt = "dt:contains(Other names)" override val selectAut = "dt:contains(Author(s))" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/id/Mangaid.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/id/Mangaid.kt index f0a0bfa76..d6624bc68 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/id/Mangaid.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/id/Mangaid.kt @@ -1,14 +1,16 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser -import java.util.Locale +import java.util.* +@Broken @MangaSourceParser("MANGAID", "MangaId", "id") internal class Mangaid(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.MANGAID, "mangaid.click") { + MmrcmsParser(context, MangaParserSource.MANGAID, "mangaid.click") { override val selectState = "dt:contains(Status)" override val selectAlt = "dt:contains(Other names)" override val selectAut = "dt:contains(Author(s))" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/tr/MangaDenizi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/tr/MangaDenizi.kt index c1dda7284..af7fe80ea 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/tr/MangaDenizi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mmrcms/tr/MangaDenizi.kt @@ -2,13 +2,13 @@ package org.koitharu.kotatsu.parsers.site.mmrcms.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.mmrcms.MmrcmsParser -import java.util.Locale +import java.util.* @MangaSourceParser("MANGA_DENIZI", "MangaDenizi", "tr") internal class MangaDenizi(context: MangaLoaderContext) : - MmrcmsParser(context, MangaSource.MANGA_DENIZI, "www.mangadenizi.net") { + MmrcmsParser(context, MangaParserSource.MANGA_DENIZI, "www.mangadenizi.net") { override val selectState = "dt:contains(Durum)" override val selectAlt = "dt:contains(Diğer Adları)" override val selectAut = "dt:contains(Yazar & Çizer)" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt index 079c1d3f0..bd00031c1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/NepnepParser.kt @@ -18,7 +18,7 @@ import java.util.* internal abstract class NepnepParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, ) : MangaParser(context, source) { @@ -61,7 +61,7 @@ internal abstract class NepnepParser( val imgUrl = "https://temp.compsci88.com/cover/" + m.getString("i") + ".jpg" val lastUpdate = m.getLong("lt") val views = m.getString("v") - val viewMonth = m.getString("vm") + //val viewMonth = m.getString("vm") when (filter) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/en/Manga4Life.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/en/Manga4Life.kt index 6c1fb6d93..73f86facb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/en/Manga4Life.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/en/Manga4Life.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.nepnep.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.nepnep.NepnepParser @MangaSourceParser("MANGA4LIFE", "Manga4Life", "en") internal class Manga4Life(context: MangaLoaderContext) : - NepnepParser(context, MangaSource.MANGA4LIFE, "manga4life.com") + NepnepParser(context, MangaParserSource.MANGA4LIFE, "manga4life.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/en/MangaSee.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/en/MangaSee.kt index 3bca7eca8..b9380d8e6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/en/MangaSee.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/nepnep/en/MangaSee.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.nepnep.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.nepnep.NepnepParser @MangaSourceParser("MANGASEE", "MangaSee", "en") internal class MangaSee(context: MangaLoaderContext) : - NepnepParser(context, MangaSource.MANGASEE, "mangasee123.com") + NepnepParser(context, MangaParserSource.MANGASEE, "mangasee123.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/OneMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/OneMangaParser.kt new file mode 100644 index 000000000..65cd6e1de --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/OneMangaParser.kt @@ -0,0 +1,98 @@ +package org.koitharu.kotatsu.parsers.site.onemanga + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +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.util.* + +internal abstract class OneMangaParser( + context: MangaLoaderContext, + source: MangaParserSource, + domain: String, + pageSize: Int = 1, +) : PagedMangaParser(context, source, pageSize) { + + override val configKeyDomain = ConfigKey.Domain(domain) + + private val userAgentKey = ConfigKey.UserAgent(context.getDefaultUserAgent()) + + override fun onCreateConfig(keys: MutableCollection>) { + super.onCreateConfig(keys) + keys.add(userAgentKey) + } + + override val isMultipleTagsSupported = false + + override val isSearchSupported = false + + override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED) + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + if (page > 1) { + return emptyList() + } + val url = "https://$domain" + val doc = webClient.httpGet(url).parseHtml() + val manga = ArrayList() + manga.add( + Manga( + id = generateUid(url), + url = url, + publicUrl = url, + coverUrl = doc.selectFirst("div.elementor-widget-container img")?.src().orEmpty(), + title = doc.selectFirst("ul.elementor-nav-menu li a")?.text().orEmpty(), + altTitle = doc.selectFirst("div.elementor-widget-text-editor ul li:contains(Nom(s) Alternatif(s))") + ?.text()?.replace("Nom(s) Alternatif(s) :", "").orEmpty(), + rating = RATING_UNKNOWN, + tags = emptySet(), + author = doc.selectFirst("div.elementor-widget-text-editor ul li:contains(Auteur(s))")?.text() + ?.replace("Auteur(s): ", "").orEmpty(), + description = doc.selectLast("div.elementor-widget-text-editor ul li")?.text().orEmpty(), + state = null, + source = source, + isNsfw = isNsfwSource, + ), + ) + return manga + } + + override suspend fun getAvailableTags(): Set = emptySet() + + override suspend fun getDetails(manga: Manga): Manga { + val fullUrl = manga.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + return manga.copy( + chapters = doc.requireElementById("All_chapters").select("ul li a") + .mapChapters(reversed = true) { i, a -> + val href = a.attrAsRelativeUrl("href") + MangaChapter( + id = generateUid(href), + name = a.text(), + number = i + 1f, + volume = 0, + url = href, + scanlator = null, + uploadDate = 0L, + branch = null, + source = source, + ) + }, + ) + } + + override suspend fun getPages(chapter: MangaChapter): List { + val fullUrl = chapter.url.toAbsoluteUrl(domain) + val doc = webClient.httpGet(fullUrl).parseHtml() + return doc.select("div.elementor-widget-container img").map { img -> + val url = img.src() ?: img.parseFailed("Image src not found") + MangaPage( + id = generateUid(url), + url = url, + preview = null, + source = source, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/BerserkScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/BerserkScan.kt new file mode 100644 index 000000000..f44932872 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/BerserkScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("BERSERKSCAN", "BerserkScan", "fr") +internal class BerserkScan(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.BERSERKSCAN, "berserkscan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/BlueLockScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/BlueLockScan.kt new file mode 100644 index 000000000..1a5cb2c99 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/BlueLockScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("BLUELOCKSCAN", "BlueLockScan", "fr") +internal class BlueLockScan(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.BLUELOCKSCAN, "bluelockscan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/CenturyBoys20Th.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/CenturyBoys20Th.kt new file mode 100644 index 000000000..43bfec0c4 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/CenturyBoys20Th.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("CENTURYBOYS20TH", "20ThCenturyBoys", "fr") +internal class CenturyBoys20Th(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.CENTURYBOYS20TH, "20thcenturyboys.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/ChainsawManScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/ChainsawManScan.kt new file mode 100644 index 000000000..92d512714 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/ChainsawManScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("CHAINSAWMANSCAN", "ChainsawManScan", "fr") +internal class ChainsawManScan(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.CHAINSAWMANSCAN, "chainsawman-scan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/Dandadan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/Dandadan.kt new file mode 100644 index 000000000..3694a017e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/Dandadan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("DANDADAN", "Dandadan", "fr") +internal class Dandadan(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.DANDADAN, "dandadan.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/DemonSlayerScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/DemonSlayerScan.kt new file mode 100644 index 000000000..85de32273 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/DemonSlayerScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("DEMONSLAYERSCAN", "DemonSlayerScan", "fr") +internal class DemonSlayerScan(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.DEMONSLAYERSCAN, "demonslayerscan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/DrStone.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/DrStone.kt new file mode 100644 index 000000000..80480a70b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/DrStone.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("DRSTONE", "DrStone", "fr") +internal class DrStone(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.DRSTONE, "drstone.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/FireForce.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/FireForce.kt new file mode 100644 index 000000000..e61b4b110 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/FireForce.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("FIREFORCE", "FireForce", "fr") +internal class FireForce(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.FIREFORCE, "fireforce.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/Haikyuu.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/Haikyuu.kt new file mode 100644 index 000000000..c49d0bed7 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/Haikyuu.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("HAIKYUU", "Haikyuu", "fr") +internal class Haikyuu(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.HAIKYUU, "haikyuu.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/HellsParadiseScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/HellsParadiseScan.kt new file mode 100644 index 000000000..463daff4b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/HellsParadiseScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("HELLSPARADISESCAN", "HellsParadiseScan", "fr") +internal class HellsParadiseScan(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.HELLSPARADISESCAN, "hellsparadisescan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/HunterXHunterScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/HunterXHunterScan.kt new file mode 100644 index 000000000..4a57ee523 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/HunterXHunterScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("HUNTERXHUNTERSCAN", "HunterXHunterScan", "fr") +internal class HunterXHunterScan(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.HUNTERXHUNTERSCAN, "hunterxhunterscan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/KaijuNo8.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/KaijuNo8.kt new file mode 100644 index 000000000..ae63027ef --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/KaijuNo8.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("KAIJUNO8", "KaijuNo8", "fr") +internal class KaijuNo8(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.KAIJUNO8, "kaijuno8.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/KingdomScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/KingdomScan.kt new file mode 100644 index 000000000..54aec70f5 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/KingdomScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("KINGDOMSCAN", "KingdomScan", "fr") +internal class KingdomScan(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.KINGDOMSCAN, "kingdomscan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/MashleScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/MashleScan.kt new file mode 100644 index 000000000..91381d39f --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/MashleScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("MASHLESCAN", "MashleScan", "fr") +internal class MashleScan(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.MASHLESCAN, "mashlescan.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/MyHeroacAdemiaScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/MyHeroacAdemiaScan.kt new file mode 100644 index 000000000..ca4fad582 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/MyHeroacAdemiaScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("MYHEROACADEMIASCAN", "MyHeroacAdemiaScan", "fr") +internal class MyHeroacAdemiaScan(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.MYHEROACADEMIASCAN, "myheroacademiascan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/OnePieceScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/OnePieceScan.kt new file mode 100644 index 000000000..a6e59d80b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/OnePieceScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("ONEPIECESCAN", "OnePieceScan", "fr") +internal class OnePieceScan(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.ONEPIECESCAN, "onepiecescan.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/OnePunchManScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/OnePunchManScan.kt new file mode 100644 index 000000000..cff3eac71 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/OnePunchManScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("ONEPUNCHMANSCAN", "OnePunchManScan", "fr") +internal class OnePunchManScan(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.ONEPUNCHMANSCAN, "onepunchmanscan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/OshiNoKo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/OshiNoKo.kt new file mode 100644 index 000000000..6509b66f0 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/OshiNoKo.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("OSHINOKO", "OshiNoKo", "fr") +internal class OshiNoKo(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.OSHINOKO, "oshinoko.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/SakamotoDays.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/SakamotoDays.kt new file mode 100644 index 000000000..17960a1f3 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/SakamotoDays.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("SAKAMOTODAYS", "SakamotoDays", "fr") +internal class SakamotoDays(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.SAKAMOTODAYS, "sakamotodays.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/ScanBoruto.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/ScanBoruto.kt new file mode 100644 index 000000000..b595c6641 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/ScanBoruto.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("SCANBORUTO", "ScanBoruto", "fr") +internal class ScanBoruto(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.SCANBORUTO, "scanboruto.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/ScanJujutsuKaisen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/ScanJujutsuKaisen.kt new file mode 100644 index 000000000..8b8faefa1 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/ScanJujutsuKaisen.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("SCANJUJUTSUKAISEN", "ScanJujutsuKaisen", "fr") +internal class ScanJujutsuKaisen(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.SCANJUJUTSUKAISEN, "scanjujutsukaisen.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/SnkScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/SnkScan.kt new file mode 100644 index 000000000..3fc246973 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/SnkScan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("SNKSCAN", "SnkScan", "fr") +internal class SnkScan(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.SNKSCAN, "snkscan.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/TokyoRevengers.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/TokyoRevengers.kt new file mode 100644 index 000000000..2b9855906 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/TokyoRevengers.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("TOKYOREVENGERS", "TokyoRevengers", "fr") +internal class TokyoRevengers(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.TOKYOREVENGERS, "tokyorevengers.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/VinlandSaga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/VinlandSaga.kt new file mode 100644 index 000000000..84f5ecbf3 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/fr/VinlandSaga.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.onemanga.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.onemanga.OneMangaParser + +@MangaSourceParser("VINLANDSAGA", "VinlandSaga", "fr") +internal class VinlandSaga(context: MangaLoaderContext) : + OneMangaParser(context, MangaParserSource.VINLANDSAGA, "vinlandsaga.fr") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/OtakuSanctuaryParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/OtakuSanctuaryParser.kt index 8d454c844..6ca8477f4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/OtakuSanctuaryParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/OtakuSanctuaryParser.kt @@ -13,7 +13,7 @@ import java.util.* internal abstract class OtakuSanctuaryParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 32, ) : PagedMangaParser(context, source, pageSize) { @@ -186,7 +186,8 @@ internal abstract class OtakuSanctuaryParser( MangaChapter( id = generateUid(url), name = name, - number = i, + number = i.toFloat(), + volume = 0, url = url, scanlator = null, uploadDate = parseChapterDate( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/en/OtakusanEn.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/en/OtakusanEn.kt index d9e5bd4d6..ecf090185 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/en/OtakusanEn.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/en/OtakusanEn.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.otakusanctuary.en import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.otakusanctuary.OtakuSanctuaryParser @MangaSourceParser("OTAKUSAN_EN", "OtakuSan-En", "en") internal class OtakusanEn(context: MangaLoaderContext) : - OtakuSanctuaryParser(context, MangaSource.OTAKUSAN_EN, "otakusan.net") { + OtakuSanctuaryParser(context, MangaParserSource.OTAKUSAN_EN, "otakusan.net") { override val lang = "us" override val selectState = ".table-info tr:contains(Status) td" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/vi/OtakusanVi.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/vi/OtakusanVi.kt index 1ac2f863b..a0c36bdae 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/vi/OtakusanVi.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/otakusanctuary/vi/OtakusanVi.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.otakusanctuary.vi import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.otakusanctuary.OtakuSanctuaryParser @MangaSourceParser("OTAKUSAN_VI", "OtakuSan-Vi", "vi") internal class OtakusanVi(context: MangaLoaderContext) : - OtakuSanctuaryParser(context, MangaSource.OTAKUSAN_VI, "otakusan.net") { + OtakuSanctuaryParser(context, MangaParserSource.OTAKUSAN_VI, "otakusan.net") { override val selectState = ".table-info tr:contains(Status) td" override val lang = "vn" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/PizzaReaderParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/PizzaReaderParser.kt index 95635d74f..bd136ef94 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/PizzaReaderParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/PizzaReaderParser.kt @@ -8,13 +8,15 @@ 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 org.koitharu.kotatsu.parsers.util.json.* +import org.koitharu.kotatsu.parsers.util.json.getStringOrNull +import org.koitharu.kotatsu.parsers.util.json.mapJSONIndexed +import org.koitharu.kotatsu.parsers.util.json.toJSONList import java.text.SimpleDateFormat import java.util.* internal abstract class PizzaReaderParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 20, ) : PagedMangaParser(context, source, pageSize) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/fr/FmTeam.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/fr/FmTeam.kt index 94a0636ee..d2cbd9e4e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/fr/FmTeam.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/fr/FmTeam.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.pizzareader.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.pizzareader.PizzaReaderParser @MangaSourceParser("FMTEAM", "FmTeam", "fr") internal class FmTeam(context: MangaLoaderContext) : - PizzaReaderParser(context, MangaSource.FMTEAM, "fmteam.fr") { + PizzaReaderParser(context, MangaParserSource.FMTEAM, "fmteam.fr") { override val ongoingFilter = "en cours" override val completedFilter = "terminé" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/GtoTheGreatSite.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/GtoTheGreatSite.kt index 98b759fde..1af667cb5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/GtoTheGreatSite.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/GtoTheGreatSite.kt @@ -2,9 +2,9 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.pizzareader.PizzaReaderParser @MangaSourceParser("GTOTHEGREATSITE", "GtoTheGreatSite", "it") internal class GtoTheGreatSite(context: MangaLoaderContext) : - PizzaReaderParser(context, MangaSource.GTOTHEGREATSITE, "reader.gtothegreatsite.net") + PizzaReaderParser(context, MangaParserSource.GTOTHEGREATSITE, "reader.gtothegreatsite.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/LupiTeam.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/LupiTeam.kt index 9ebaf2264..0ff66ce0a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/LupiTeam.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/LupiTeam.kt @@ -2,9 +2,9 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.pizzareader.PizzaReaderParser @MangaSourceParser("LUPITEAM", "LupiTeam", "it") internal class LupiTeam(context: MangaLoaderContext) : - PizzaReaderParser(context, MangaSource.LUPITEAM, "lupiteam.net") + PizzaReaderParser(context, MangaParserSource.LUPITEAM, "lupiteam.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/PhoenixScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/PhoenixScans.kt index 3c7ff7cb3..39f0c5aeb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/PhoenixScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/PhoenixScans.kt @@ -2,9 +2,9 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.pizzareader.PizzaReaderParser @MangaSourceParser("PHOENIXSCANS", "PhoenixScans", "it") internal class PhoenixScans(context: MangaLoaderContext) : - PizzaReaderParser(context, MangaSource.PHOENIXSCANS, "www.phoenixscans.com") + PizzaReaderParser(context, MangaParserSource.PHOENIXSCANS, "www.phoenixscans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/TuttoAnimeManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/TuttoAnimeManga.kt index 92496c43e..aafc35e02 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/TuttoAnimeManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pizzareader/it/TuttoAnimeManga.kt @@ -2,11 +2,11 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.pizzareader.PizzaReaderParser @MangaSourceParser("TUTTOANIMEMANGA", "TuttoAnimeManga", "it") internal class TuttoAnimeManga(context: MangaLoaderContext) : - PizzaReaderParser(context, MangaSource.TUTTOANIMEMANGA, "tuttoanimemanga.net") { + PizzaReaderParser(context, MangaParserSource.TUTTOANIMEMANGA, "tuttoanimemanga.net") { override val completedFilter = "completato" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/BrMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/BrMangas.kt index abf5bcfb9..b4bce1f67 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/BrMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/BrMangas.kt @@ -1,6 +1,7 @@ package org.koitharu.kotatsu.parsers.site.pt import okhttp3.Headers +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser @@ -10,8 +11,9 @@ import org.koitharu.kotatsu.parsers.network.UserAgents import org.koitharu.kotatsu.parsers.util.* import java.util.* +@Broken @MangaSourceParser("BRMANGAS", "BrMangas", "pt") -internal class BrMangas(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.BRMANGAS, 25) { +internal class BrMangas(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.BRMANGAS, 25) { override val availableSortOrders: Set = EnumSet.of(SortOrder.POPULARITY, SortOrder.UPDATED) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerManga.kt index 5f60138da..a294a57d2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerManga.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.parsers.site.pt +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.ErrorMessages import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser @@ -10,8 +11,9 @@ import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat import java.util.* +@Broken @MangaSourceParser("LERMANGA", "LerManga", "pt") -class LerManga(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.LERMANGA, 24) { +class LerManga(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.LERMANGA, 24) { override val availableSortOrders: Set = EnumSet.of( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt index 1558df4be..48e07630a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LerMangaOnline.kt @@ -1,6 +1,7 @@ package org.koitharu.kotatsu.parsers.site.pt 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.PagedMangaParser @@ -10,8 +11,9 @@ import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat import java.util.* +@Broken @MangaSourceParser("LERMANGAONLINE", "LerMangaOnline", "pt") -class LerMangaOnline(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.LERMANGAONLINE, 20) { +class LerMangaOnline(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.LERMANGAONLINE, 20) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LuratoonScansParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LuratoonScansParser.kt index 422374e1a..70c730638 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LuratoonScansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/LuratoonScansParser.kt @@ -6,23 +6,21 @@ import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Response import okhttp3.ResponseBody.Companion.toResponseBody import org.json.JSONArray -import org.koitharu.kotatsu.parsers.ErrorMessages -import org.koitharu.kotatsu.parsers.MangaLoaderContext -import org.koitharu.kotatsu.parsers.MangaParser -import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.* import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat import java.util.zip.ZipInputStream -@MangaSourceParser("RANDOMSCANS", "Luratoon Scan", "pt") -internal class LuratoonScansParser(context: MangaLoaderContext) : MangaParser(context, MangaSource.RANDOMSCANS), +@Broken // Not dead but totally changed structure +@MangaSourceParser("RANDOMSCANS", "LuratoonScan", "pt") +internal class LuratoonScansParser(context: MangaLoaderContext) : MangaParser(context, MangaParserSource.RANDOMSCANS), Interceptor { override val availableSortOrders = setOf(SortOrder.ALPHABETICAL) - override val configKeyDomain = ConfigKey.Domain("luratoon.com") + override val configKeyDomain = ConfigKey.Domain("luratoons.com") private val userAgentKey = ConfigKey.UserAgent(context.getDefaultUserAgent()) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MangaOnline.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MangaOnline.kt index b33d8eca1..1dff1b2d3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MangaOnline.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MangaOnline.kt @@ -10,7 +10,7 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("MANGAONLINE", "MangaOnline.biz", "pt") -class MangaOnline(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.MANGAONLINE, 20) { +class MangaOnline(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.MANGAONLINE, 20) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MuitoHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MuitoHentai.kt index 8ec4910de..ef3ce3597 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MuitoHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/MuitoHentai.kt @@ -9,7 +9,7 @@ import org.koitharu.kotatsu.parsers.util.* import java.util.* @MangaSourceParser("MUITOHENTAI", "MuitoHentai", "pt", ContentType.HENTAI) -class MuitoHentai(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.MUITOHENTAI, 24) { +class MuitoHentai(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.MUITOHENTAI, 24) { override val availableSortOrders: Set = EnumSet.of(SortOrder.POPULARITY) @@ -94,7 +94,7 @@ class MuitoHentai(context: MangaLoaderContext) : PagedMangaParser(context, Manga source = source, ) }, - chapters = doc.select(".backgroundpost h3 a").mapChapters() { i, a -> + chapters = doc.select(".backgroundpost h3 a").mapChapters { i, a -> val href = a.attrAsAbsoluteUrl("href") MangaChapter( id = generateUid(href), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/OnePieceEx.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/OnePieceEx.kt index 57419ca41..6cf999f76 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/OnePieceEx.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/OnePieceEx.kt @@ -1,5 +1,6 @@ package org.koitharu.kotatsu.parsers.site.pt +import org.koitharu.kotatsu.parsers.Broken import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.PagedMangaParser @@ -8,8 +9,9 @@ import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.util.* import java.util.* +@Broken @MangaSourceParser("ONEPIECEEX", "OnePieceEx", "pt") -class OnePieceEx(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.ONEPIECEEX, 1) { +class OnePieceEx(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.ONEPIECEEX, 1) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/YugenMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/YugenMangas.kt index 3dc110c3b..595377b26 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/YugenMangas.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/pt/YugenMangas.kt @@ -12,11 +12,11 @@ import java.text.DateFormat import java.text.SimpleDateFormat import java.util.* -@MangaSourceParser("YUGENMANGAS", "YugenMangas.net.br", "pt") -class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.YUGENMANGAS, 28) { +@MangaSourceParser("YUGENMANGAS", "YugenApp", "pt") +class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.YUGENMANGAS, 28) { - override val availableSortOrders: Set = EnumSet.of(SortOrder.ALPHABETICAL, SortOrder.UPDATED) - override val configKeyDomain = ConfigKey.Domain("yugenmangas.net.br") + override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.ALPHABETICAL) + override val configKeyDomain = ConfigKey.Domain("yugenapp.lat") override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { @@ -32,7 +32,7 @@ class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, Manga val url = buildString { append("https://api.") append(domain) - append("/api/series/list/?query=") + append("/api/series/?search=") append(filter.query.urlEncoded()) } webClient.httpGet(url).parseJsonArray() @@ -40,7 +40,6 @@ class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, Manga is MangaListFilter.Advanced -> { - if (filter.sortOrder == SortOrder.UPDATED) { val url = buildString { append("https://api.") @@ -52,7 +51,7 @@ class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, Manga val url = buildString { append("https://api.") append(domain) - append("/api/all_series/") + append("/api/series_novels/all_series/") } webClient.httpGet(url).parseJson().getJSONArray("series") } @@ -73,7 +72,7 @@ class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, Manga val slug = j.getString("slug") val cover = if (!j.getString("cover").startsWith("https://")) { // Some covers don't have the "/" so we ensure that the URL will be spelled correctly. - "https://$domain/media/" + j.getString("cover").removePrefix("/") + "https://api.$domain/media/" + j.getString("cover").removePrefix("/") } else { j.getString("cover") } @@ -97,11 +96,12 @@ class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, Manga override suspend fun getDetails(manga: Manga): Manga { val detailManga = - webClient.httpPost("https://api.$domain/api/serie_details/${manga.url}", emptyMap()).parseJson() + webClient.httpPost("https://api.$domain/api/serie/serie_details/${manga.url}", emptyMap()).parseJson() val body = JSONObject() body.put("serie_slug", manga.url) - val chapterManga = webClient.httpPost("https://api.$domain/api/get_chapters_by_serie/", body).parseJson() - .getJSONArray("chapters") + val chapterManga = + webClient.httpPost("https://api.$domain/api/chapters/get_chapters_by_serie/", body).parseJson() + .getJSONArray("chapters") val dateFormat = SimpleDateFormat("dd/MM/yyyy", sourceLocale) return manga.copy( description = detailManga.getString("synopsis"), @@ -117,11 +117,12 @@ class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, Manga } }, chapters = chapterManga.mapJSON { j -> - val url = "https://api.$domain/api/serie/${manga.url}/chapter/${j.getString("slug")}/images/imgs/" + val url = "https://api.$domain/api/serie/${manga.url}/chapter/${j.getString("slug")}/images/imgs/get/" MangaChapter( id = generateUid(url), name = j.getString("name"), - number = j.getString("name").removePrefix("Capítulo ").toInt(), + number = j.getString("name").removePrefix("Capítulo ").toFloat(), + volume = 0, url = url, scanlator = null, uploadDate = parseChapterDate( @@ -158,7 +159,7 @@ class YugenMangas(context: MangaLoaderContext) : PagedMangaParser(context, Manga val jsonPages = webClient.httpPost(chapter.url, emptyMap()).parseJson().getJSONArray("chapter_images") val pages = ArrayList(jsonPages.length()) for (i in 0 until jsonPages.length()) { - val img = "https://$domain/${jsonPages.getString(i)}" + val img = "https://api.$domain/${jsonPages.getString(i)}" pages.add( MangaPage( id = generateUid(img), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/AComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/AComics.kt index 32102ffc5..28a51de24 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/AComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/AComics.kt @@ -14,7 +14,7 @@ import java.util.* @MangaSourceParser("ACOMICS", "AComics", "ru", ContentType.COMICS) internal class AComics(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.ACOMICS, pageSize = 10) { + PagedMangaParser(context, MangaParserSource.ACOMICS, pageSize = 10) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.ALPHABETICAL, SortOrder.POPULARITY) @@ -142,7 +142,8 @@ internal class AComics(context: MangaLoaderContext) : MangaChapter( id = manga.id, name = manga.title, - number = 1, + number = 1f, + volume = 0, url = manga.url.replace("/about", "/"), scanlator = null, uploadDate = 0, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/DesuMeParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/DesuMeParser.kt index 00c31540a..3e75d2ec2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/DesuMeParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/DesuMeParser.kt @@ -14,7 +14,7 @@ import org.koitharu.kotatsu.parsers.util.json.* import java.util.* @MangaSourceParser("DESUME", "Desu", "ru") -internal class DesuMeParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.DESUME, 20) { +internal class DesuMeParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.DESUME, 20) { override val configKeyDomain = ConfigKey.Domain("desu.win", "desu.me") @@ -71,7 +71,7 @@ internal class DesuMeParser(context: MangaLoaderContext) : PagedMangaParser(cont list += Manga( url = "/manga/api/$id", publicUrl = jo.getString("url"), - source = MangaSource.DESUME, + source = MangaParserSource.DESUME, title = jo.getString("russian"), altTitle = jo.getString("name"), coverUrl = cover.getString("preview"), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt index 63238ba82..27b1715fe 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/MangaWtfParser.kt @@ -18,7 +18,7 @@ import java.util.* @MangaSourceParser("MANGA_WTF", "MangaWtf", "ru") class MangaWtfParser( context: MangaLoaderContext, -) : PagedMangaParser(context, MangaSource.MANGA_WTF, pageSize = 20) { +) : PagedMangaParser(context, MangaParserSource.MANGA_WTF, pageSize = 20) { override val availableSortOrders: Set = EnumSet.of( SortOrder.POPULARITY, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/NudeMoonParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/NudeMoonParser.kt index fe9816561..10b5930ac 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/NudeMoonParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/NudeMoonParser.kt @@ -14,7 +14,7 @@ import java.util.* @MangaSourceParser("NUDEMOON", "Nude-Moon", "ru", type = ContentType.HENTAI) internal class NudeMoonParser( context: MangaLoaderContext, -) : MangaParser(context, MangaSource.NUDEMOON), MangaParserAuthProvider { +) : MangaParser(context, MangaParserSource.NUDEMOON), MangaParserAuthProvider { override val configKeyDomain = ConfigKey.Domain( "x.nude-moon.fun", diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt index 7f81b0512..70d34bac7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/RemangaParser.kt @@ -29,7 +29,7 @@ private const val TOO_MANY_REQUESTS = 429 @MangaSourceParser("REMANGA", "Реманга", "ru") internal class RemangaParser( context: MangaLoaderContext, -) : PagedMangaParser(context, MangaSource.REMANGA, PAGE_SIZE), MangaParserAuthProvider, Interceptor { +) : PagedMangaParser(context, MangaParserSource.REMANGA, PAGE_SIZE), MangaParserAuthProvider, Interceptor { private val userAgentKey = ConfigKey.UserAgent(context.getDefaultUserAgent()) @@ -121,10 +121,10 @@ internal class RemangaParser( MangaTag( title = g.getString("name").toTitleCase(), key = g.getInt("id").toString(), - source = MangaSource.REMANGA, + source = MangaParserSource.REMANGA, ) }.orEmpty(), - source = MangaSource.REMANGA, + source = MangaParserSource.REMANGA, ) } } @@ -157,7 +157,7 @@ internal class RemangaParser( MangaTag( title = g.getString("name").toTitleCase(), key = g.getInt("id").toString(), - source = MangaSource.REMANGA, + source = MangaParserSource.REMANGA, ) }, chapters = chapters.mapChapters { i, jo -> @@ -187,7 +187,7 @@ internal class RemangaParser( }, uploadDate = dateFormat.tryParse(jo.getString("upload_date")), scanlator = publishers?.optJSONObject(0)?.getStringOrNull("name"), - source = MangaSource.REMANGA, + source = MangaParserSource.REMANGA, branch = null, ) }.asReversed(), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/AllHentaiParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/AllHentaiParser.kt index 376fae75b..e4c9e4ddb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/AllHentaiParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/AllHentaiParser.kt @@ -8,7 +8,7 @@ import org.koitharu.kotatsu.parsers.exception.ParseException import org.koitharu.kotatsu.parsers.model.ContentType import org.koitharu.kotatsu.parsers.model.MangaChapter import org.koitharu.kotatsu.parsers.model.MangaPage -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.util.domain import org.koitharu.kotatsu.parsers.util.parseFailed import org.koitharu.kotatsu.parsers.util.parseHtml @@ -17,7 +17,7 @@ import org.koitharu.kotatsu.parsers.util.urlEncoded @MangaSourceParser("ALLHENTAI", "AllHentai", "ru", type = ContentType.HENTAI) internal class AllHentaiParser( context: MangaLoaderContext, -) : GroupleParser(context, MangaSource.ALLHENTAI, 1) { +) : GroupleParser(context, MangaParserSource.ALLHENTAI, 1) { override val configKeyDomain = ConfigKey.Domain( "z.ahen.me", diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/GroupleParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/GroupleParser.kt index 560d54241..7ccb441ef 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/GroupleParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/GroupleParser.kt @@ -35,7 +35,7 @@ private const val RELATED_TITLE = "Связанные произведения" internal abstract class GroupleParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, private val siteId: Int, ) : MangaParser(context, source), MangaParserAuthProvider, Interceptor { @@ -132,6 +132,7 @@ internal abstract class GroupleParser( source = newSource, altTitle = root.selectFirst(".all-names-popover")?.select(".name")?.joinToString { it.text() } ?: manga.altTitle, + publicUrl = response.request.url.toString(), description = root.selectFirst("div.manga-description")?.html(), largeCoverUrl = coverImg?.attr("data-full"), coverUrl = coverImg?.attr("data-thumb") ?: manga.coverUrl, @@ -193,7 +194,7 @@ internal abstract class GroupleParser( } override suspend fun getPages(chapter: MangaChapter): List { - if (chapter.source != source) { // handle redirects between websites + if (chapter.source != source && chapter.source is MangaParserSource) { // handle redirects between websites return context.newParserInstance(chapter.source).getPages(chapter) } val url = chapter.url.toAbsoluteUrl(domain).toHttpUrl().newBuilder().setQueryParameter("mtr", "1").build() @@ -303,10 +304,10 @@ internal abstract class GroupleParser( } protected open fun getSource(url: HttpUrl): MangaSource = when (url.host) { - in SeiMangaParser.domains -> MangaSource.SEIMANGA - in MintMangaParser.domains -> MangaSource.MINTMANGA - in ReadmangaParser.domains -> MangaSource.READMANGA_RU - in SelfMangaParser.domains -> MangaSource.SELFMANGA + in SeiMangaParser.domains -> MangaParserSource.SEIMANGA + in MintMangaParser.domains -> MangaParserSource.MINTMANGA + in ReadmangaParser.domains -> MangaParserSource.READMANGA_RU + in SelfMangaParser.domains -> MangaParserSource.SELFMANGA else -> source } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/MintMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/MintMangaParser.kt index 205225d18..12d34b47a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/MintMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/MintMangaParser.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.ru.grouple import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource @MangaSourceParser("MINTMANGA", "MintManga", "ru") internal class MintMangaParser( context: MangaLoaderContext, -) : GroupleParser(context, MangaSource.MINTMANGA, 2) { +) : GroupleParser(context, MangaParserSource.MINTMANGA, 2) { override val configKeyDomain = ConfigKey.Domain(*domains) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/ReadmangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/ReadmangaParser.kt index 423fec3fc..ac3223638 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/ReadmangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/ReadmangaParser.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.ru.grouple import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource @MangaSourceParser("READMANGA_RU", "ReadManga", "ru") internal class ReadmangaParser( context: MangaLoaderContext, -) : GroupleParser(context, MangaSource.READMANGA_RU, 1) { +) : GroupleParser(context, MangaParserSource.READMANGA_RU, 1) { override val configKeyDomain = ConfigKey.Domain(*domains) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/SeiMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/SeiMangaParser.kt index 173c699cf..eb9816e2c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/SeiMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/SeiMangaParser.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.ru.grouple import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource @MangaSourceParser("SEIMANGA", "SeiManga", "ru") internal class SeiMangaParser( context: MangaLoaderContext, -) : GroupleParser(context, MangaSource.SEIMANGA, 21) { +) : GroupleParser(context, MangaParserSource.SEIMANGA, 21) { override val configKeyDomain = ConfigKey.Domain(*domains) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/SelfMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/SelfMangaParser.kt index 6bd59bc59..2e0e0926d 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/SelfMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/grouple/SelfMangaParser.kt @@ -4,12 +4,12 @@ import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource @MangaSourceParser("SELFMANGA", "SelfManga", "ru", type = ContentType.OTHER) internal class SelfMangaParser( context: MangaLoaderContext, -) : GroupleParser(context, MangaSource.SELFMANGA, 3) { +) : GroupleParser(context, MangaParserSource.SELFMANGA, 3) { override val configKeyDomain = ConfigKey.Domain(*domains) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/ChanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/ChanParser.kt index 9e38105e0..a43f51f49 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/ChanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/ChanParser.kt @@ -13,7 +13,7 @@ import java.util.* internal abstract class ChanParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, ) : MangaParser(context, source), MangaParserAuthProvider { override val availableSortOrders: Set = EnumSet.of( diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/HenChanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/HenChanParser.kt index c14b9d762..9c9b05eb9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/HenChanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/HenChanParser.kt @@ -9,7 +9,7 @@ import org.koitharu.kotatsu.parsers.util.* import java.util.* @MangaSourceParser("HENCHAN", "Хентай-тян", "ru", type = ContentType.HENTAI) -internal class HenChanParser(context: MangaLoaderContext) : ChanParser(context, MangaSource.HENCHAN) { +internal class HenChanParser(context: MangaLoaderContext) : ChanParser(context, MangaParserSource.HENCHAN) { override val configKeyDomain = ConfigKey.Domain( "xxxx.henchan.pro", diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/MangaChanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/MangaChanParser.kt index f1293a9a3..2a1aaedc4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/MangaChanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/MangaChanParser.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.ru.multichan import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource @MangaSourceParser("MANGACHAN", "Манга-тян", "ru") -internal class MangaChanParser(context: MangaLoaderContext) : ChanParser(context, MangaSource.MANGACHAN) { +internal class MangaChanParser(context: MangaLoaderContext) : ChanParser(context, MangaParserSource.MANGACHAN) { override val configKeyDomain = ConfigKey.Domain("manga-chan.me") } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/YaoiChanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/YaoiChanParser.kt index 1d389058a..8eb2c5d32 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/YaoiChanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/multichan/YaoiChanParser.kt @@ -5,12 +5,12 @@ import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.Manga import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.SortOrder import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("YAOICHAN", "Яой-тян", "ru") -internal class YaoiChanParser(context: MangaLoaderContext) : ChanParser(context, MangaSource.YAOICHAN) { +internal class YaoiChanParser(context: MangaLoaderContext) : ChanParser(context, MangaParserSource.YAOICHAN) { override val configKeyDomain = ConfigKey.Domain( "v3.yaoi-chan.me", diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/HentaiLibParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/HentaiLibParser.kt index 092d95e31..e0ffe7657 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/HentaiLibParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/HentaiLibParser.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.ru.rulib 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource @MangaSourceParser("HENTAILIB", "HentaiLib", "ru", type = ContentType.HENTAI) internal class HentaiLibParser(context: MangaLoaderContext) : LibSocialParser( context = context, - source = MangaSource.HENTAILIB, + source = MangaParserSource.HENTAILIB, siteId = 4, siteDomain = "hentailib.me", ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/LibSocialParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/LibSocialParser.kt index b81aa404f..c4f3fe3e3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/LibSocialParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/LibSocialParser.kt @@ -16,7 +16,7 @@ import java.util.* internal abstract class LibSocialParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, protected val siteDomain: String, protected val siteId: Int, ) : PagedMangaParser(context, source, pageSize = 60) { @@ -87,7 +87,7 @@ internal abstract class LibSocialParser( SortOrder.NEWEST -> "created_at" SortOrder.ALPHABETICAL, SortOrder.ALPHABETICAL_DESC, - -> "rus_name" + -> "rus_name" }, ) urlBuilder.addQueryParameter( @@ -98,7 +98,7 @@ internal abstract class LibSocialParser( SortOrder.RATING, SortOrder.NEWEST, SortOrder.ALPHABETICAL_DESC, - -> "desc" + -> "desc" SortOrder.ALPHABETICAL -> "asc" }, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/MangaLibParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/MangaLibParser.kt index bfea325af..5780bef30 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/MangaLibParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/MangaLibParser.kt @@ -2,14 +2,14 @@ package org.koitharu.kotatsu.parsers.site.ru.rulib import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource @MangaSourceParser("MANGALIB", "MangaLib", "ru") internal class MangaLibParser( context: MangaLoaderContext, ) : LibSocialParser( context = context, - source = MangaSource.MANGALIB, + source = MangaParserSource.MANGALIB, siteId = 1, siteDomain = "test-front.mangalib.me", ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/SlashLibParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/SlashLibParser.kt index 0250440ec..a697bff20 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/SlashLibParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/ru/rulib/SlashLibParser.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.ru.rulib import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource @MangaSourceParser("YAOILIB", "SlashLib", "ru") internal class SlashLibParser(context: MangaLoaderContext) : LibSocialParser( context = context, - source = MangaSource.YAOILIB, + source = MangaParserSource.YAOILIB, siteId = 2, siteDomain = "test-front.slashlib.me", ) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/ScanParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/ScanParser.kt index 828f8077b..5731b17fd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/ScanParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/ScanParser.kt @@ -3,40 +3,46 @@ package org.koitharu.kotatsu.parsers.site.scan import androidx.collection.ArrayMap import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock -import org.koitharu.kotatsu.parsers.ErrorMessages +import org.jsoup.Jsoup import org.koitharu.kotatsu.parsers.MangaLoaderContext 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 org.koitharu.kotatsu.parsers.util.json.unescapeJson import java.text.SimpleDateFormat import java.util.* internal abstract class ScanParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 0, ) : PagedMangaParser(context, source, pageSize) { override val availableSortOrders: Set = EnumSet.of(SortOrder.ALPHABETICAL, SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.RATING) - override val isSearchSupported = false override val configKeyDomain = ConfigKey.Domain(domain) + protected open val listUrl = "/manga" + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + var query = false + val url = buildString { append("https://") append(domain) when (filter) { is MangaListFilter.Search -> { - throw IllegalArgumentException(ErrorMessages.SEARCH_NOT_SUPPORTED) // TODO + append("/search?q=") + append(filter.query.urlEncoded()) + query = true } is MangaListFilter.Advanced -> { - append("/manga") + append(listUrl) append("?q=") append( when (filter.sortOrder) { @@ -58,21 +64,32 @@ internal abstract class ScanParser( } null -> { - append("/manga?page=") + append(listUrl) + append("?page=") append(page.toString()) } } } - val doc = webClient.httpGet(url).parseHtml() - return doc.select(".series-paginated .series").map { div -> + val doc = if (query) { + val raw = webClient.httpGet(url).parseRaw() + Jsoup.parseBodyFragment( + raw.unescapeJson(), + domain, + ) + + } else { + webClient.httpGet(url).parseHtml() + } + + return doc.select(".series, .series-paginated .grid-item-series").map { div -> val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href") Manga( id = generateUid(href), url = href, publicUrl = href.toAbsoluteUrl(div.host ?: domain), coverUrl = div.selectFirst("img")?.attr("data-src")?.replace("\t", "").orEmpty(), - title = div.selectFirstOrThrow(".link-series h3").text().orEmpty(), + title = div.selectFirstOrThrow(".link-series h3, .item-title").text().orEmpty(), altTitle = null, rating = RATING_UNKNOWN, tags = emptySet(), @@ -82,6 +99,7 @@ internal abstract class ScanParser( isNsfw = isNsfwSource, ) } + } private var tagCache: ArrayMap? = null @@ -91,11 +109,12 @@ internal abstract class ScanParser( return getOrCreateTagMap().values.toSet() } - private suspend fun getOrCreateTagMap(): Map = mutex.withLock { + protected suspend fun getOrCreateTagMap(): Map = mutex.withLock { tagCache?.let { return@withLock it } val tagMap = ArrayMap() - val tagElements = webClient.httpGet("https://$domain/manga").parseHtml() - .requireElementById("filter-wrapper").select(".form-filters div.form-check") + val tagElements = webClient.httpGet("https://$domain$listUrl").parseHtml() + .requireElementById("filter-wrapper") + .select(".form-filters div.form-check, .form-filters div.custom-control") for (el in tagElements) { val name = el.selectFirstOrThrow("label").text() if (name.isEmpty()) continue @@ -113,29 +132,33 @@ internal abstract class ScanParser( val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() val dateFormat = SimpleDateFormat("MM-dd-yyyy", sourceLocale) val tagMap = getOrCreateTagMap() - val selectTag = doc.select(".card-series-detail .col-6:contains(Categorie) div") + val selectTag = + doc.select(".card-series-detail .col-6:contains(Categorie) div, .card-series-about .mb-3:contains(Categorie) a, .card-series-about .mb-3:contains(Categorias) a") val tags = selectTag.mapNotNullToSet { tagMap[it.text()] } return manga.copy( - rating = doc.selectFirst(".card-series-detail .rate-value span")?.ownText()?.toFloatOrNull()?.div(5f) + rating = doc.selectFirst(".card-series-detail .rate-value span, .card-series-about .rate-value span") + ?.ownText()?.toFloatOrNull()?.div(5f) ?: RATING_UNKNOWN, tags = tags, - author = doc.selectFirst(".card-series-detail .col-6:contains(Autore) div")?.text(), - altTitle = doc.selectFirst(".card div.col-12.mb-4 h2")?.text().orEmpty(), - description = doc.selectFirst(".card div.col-12.mb-4 p")?.html().orEmpty(), - chapters = doc.select(".chapters-list .col-chapter").mapChapters(reversed = true) { i, div -> - val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href") - MangaChapter( - id = generateUid(href), - name = div.selectFirstOrThrow("h5").html().substringBefore(""), - number = i + 1f, - volume = 0, - url = href, - scanlator = null, - uploadDate = dateFormat.tryParse(doc.selectFirstOrThrow("h5 div").text()), - branch = null, - source = source, - ) - }, + author = doc.selectFirst(".card-series-detail .col-6:contains(Autore) div, .card-series-about .mb-3:contains(Autore) a") + ?.text(), + altTitle = doc.selectFirst(".card div.col-12.mb-4 h2, .card-series-about .h6")?.text().orEmpty(), + description = doc.selectFirst(".card div.col-12.mb-4 p, .card-series-desc .mb-4 p")?.html().orEmpty(), + chapters = doc.select(".chapters-list .col-chapter, .card-list-chapter .col-chapter") + .mapChapters(reversed = true) { i, div -> + val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href") + MangaChapter( + id = generateUid(href), + name = div.selectFirstOrThrow("h5").html().substringBefore(""), + number = i + 1f, + volume = 0, + url = href, + scanlator = null, + uploadDate = dateFormat.tryParse(doc.selectFirstOrThrow("h5 div").text()), + branch = null, + source = source, + ) + }, ) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/fr/MangaFr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/fr/MangaFr.kt new file mode 100644 index 000000000..880abf9d7 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/fr/MangaFr.kt @@ -0,0 +1,50 @@ +package org.koitharu.kotatsu.parsers.site.scan.fr + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN +import org.koitharu.kotatsu.parsers.site.scan.ScanParser +import org.koitharu.kotatsu.parsers.util.* +import java.text.SimpleDateFormat + +@MangaSourceParser("MANGAFR", "MangaFr", "fr") +internal class MangaFr(context: MangaLoaderContext) : + ScanParser(context, MangaParserSource.MANGAFR, "www.mangafr.org") { + override val listUrl = "/series" + + override suspend fun getAvailableTags(): Set = emptySet() + + override suspend fun getDetails(manga: Manga): Manga { + val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val dateFormat = SimpleDateFormat("MM-dd-yyyy", sourceLocale) + return manga.copy( + rating = doc.selectFirst(".card-series-detail .rate-value span, .card-series-about .rate-value span") + ?.ownText()?.toFloatOrNull()?.div(5f) + ?: RATING_UNKNOWN, + tags = emptySet(), + author = doc.selectFirst(".card-series-detail .col-6:contains(Autore) div, .card-series-about .mb-3:contains(Autore) a") + ?.text(), + altTitle = doc.selectFirst(".card div.col-12.mb-4 h2, .card-series-about .h6")?.text().orEmpty(), + description = doc.selectFirst(".card div.col-12.mb-4 p, .card-series-desc .mb-4 p")?.html().orEmpty(), + chapters = doc.select(".chapters-list .col-chapter, .card-list-chapter .col-chapter") + .mapChapters(reversed = true) { i, div -> + val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href") + MangaChapter( + id = generateUid(href), + name = div.selectFirstOrThrow("h5").html().substringBefore(""), + number = i + 1f, + volume = 0, + url = href, + scanlator = null, + uploadDate = dateFormat.tryParse(doc.selectFirstOrThrow("h5 div").text()), + branch = null, + source = source, + ) + }, + ) + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/fr/ScanTrad.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/fr/ScanTrad.kt new file mode 100644 index 000000000..44f8c2b0e --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/fr/ScanTrad.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.scan.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.scan.ScanParser + +@MangaSourceParser("SCANTRAD", "ScanTrad", "fr") +internal class ScanTrad(context: MangaLoaderContext) : + ScanParser(context, MangaParserSource.SCANTRAD, "scan-trad.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/fr/ScanVfOrg.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/fr/ScanVfOrg.kt index 41e367d7a..682482cc9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/fr/ScanVfOrg.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/fr/ScanVfOrg.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.scan.fr import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.scan.ScanParser @MangaSourceParser("SCANVFORG", "ScanVf.org", "fr") internal class ScanVfOrg(context: MangaLoaderContext) : - ScanParser(context, MangaSource.SCANVFORG, "scanvf.org") + ScanParser(context, MangaParserSource.SCANVFORG, "scanvf.org") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/it/MangaItalia.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/it/MangaItalia.kt new file mode 100644 index 000000000..8e1a1d5cb --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/it/MangaItalia.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.scan.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.scan.ScanParser + +@MangaSourceParser("MANGAITALIA", "MangaItalia", "pt") +internal class MangaItalia(context: MangaLoaderContext) : + ScanParser(context, MangaParserSource.MANGAITALIA, "manga-italia.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/it/ScanIta.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/it/ScanIta.kt index 27997be08..6f47278df 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/it/ScanIta.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/it/ScanIta.kt @@ -1,10 +1,58 @@ package org.koitharu.kotatsu.parsers.site.scan.it +import kotlinx.coroutines.async +import kotlinx.coroutines.coroutineScope +import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaChapter +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN import org.koitharu.kotatsu.parsers.site.scan.ScanParser +import org.koitharu.kotatsu.parsers.util.* +import java.text.SimpleDateFormat @MangaSourceParser("SCANITA", "ScanIta.org", "it") internal class ScanIta(context: MangaLoaderContext) : - ScanParser(context, MangaSource.SCANITA, "scanita.org") + ScanParser(context, MangaParserSource.SCANITA, "scanita.org") { + + override suspend fun getDetails(manga: Manga): Manga = coroutineScope { + val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() + val tagMap = getOrCreateTagMap() + val selectTag = doc.select(".card-series-detail .col-6:contains(Categorie) div") + val tags = selectTag.mapNotNullToSet { tagMap[it.text()] } + val chaptersDeferred = async { loadChapters(doc) } + manga.copy( + rating = doc.selectFirst(".card-series-detail .rate-value span")?.ownText()?.toFloatOrNull()?.div(5f) + ?: RATING_UNKNOWN, + tags = tags, + author = doc.selectFirst(".card-series-detail .col-6:contains(Autore) div")?.text(), + altTitle = doc.selectFirst(".card div.col-12.mb-4 h2")?.text().orEmpty(), + description = doc.selectFirst(".card div.col-12.mb-4 p")?.html().orEmpty(), + chapters = chaptersDeferred.await(), + ) + } + + private suspend fun loadChapters(document: Document): List { + val id = document.selectFirstOrThrow(".container-fluid button.w-100").attr("data-path") + .substringAfter("/manga/").substringBefore("/books") + val url = "https://$domain/manga/$id/books" + val doc = webClient.httpGet(url).parseHtml() + val dateFormat = SimpleDateFormat("MM-dd-yyyy", sourceLocale) + return doc.select(".chapters-list .col-chapter").mapChapters(reversed = true) { i, div -> + val href = div.selectFirstOrThrow("a").attrAsRelativeUrl("href") + MangaChapter( + id = generateUid(href), + name = div.selectFirstOrThrow("h5").html().substringBefore(""), + number = i + 1f, + volume = 0, + url = href, + scanlator = null, + uploadDate = dateFormat.tryParse(doc.selectFirstOrThrow("h5 div").text()), + branch = null, + source = source, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaBr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaBr.kt new file mode 100644 index 000000000..c86c94b47 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaBr.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.scan.pt + +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.scan.ScanParser + +@MangaSourceParser("MANGABR", "MangaBr", "pt") +internal class MangaBr(context: MangaLoaderContext) : + ScanParser(context, MangaParserSource.MANGABR, "mangabr.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaTerra.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaTerra.kt new file mode 100644 index 000000000..fdf00f2e0 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/scan/pt/MangaTerra.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.scan.pt + +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.scan.ScanParser + +@MangaSourceParser("MANGATERRA", "MangaTerra", "pt") +internal class MangaTerra(context: MangaLoaderContext) : + ScanParser(context, MangaParserSource.MANGATERRA, "manga-terra.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/SinmhParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/SinmhParser.kt index aa4d116bd..d029f159e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/SinmhParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/SinmhParser.kt @@ -11,7 +11,7 @@ import java.util.* internal abstract class SinmhParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 36, ) : PagedMangaParser(context, source, pageSize) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/zh/Gufengmh.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/zh/Gufengmh.kt index 9596e5b07..10b9f5141 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/zh/Gufengmh.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/sinmh/zh/Gufengmh.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.sinmh.zh import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.sinmh.SinmhParser @MangaSourceParser("GUFENGMH", "Gufengmh", "zh") internal class Gufengmh(context: MangaLoaderContext) : - SinmhParser(context, MangaSource.GUFENGMH, "www.gufengmh.com") + SinmhParser(context, MangaParserSource.GUFENGMH, "www.gufengmh9.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/MangaAy.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/MangaAy.kt index c835ce839..5be7dc0aa 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/MangaAy.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/MangaAy.kt @@ -14,7 +14,7 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("MANGAAY", "MangaAy", "tr") -class MangaAy(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.MANGAAY, 45) { +class MangaAy(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.MANGAAY, 45) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/SadScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/SadScans.kt index 837d0e650..ab86836e7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/SadScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/SadScans.kt @@ -10,7 +10,7 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("SADSCANS", "SadScans", "tr") -internal class SadScans(context: MangaLoaderContext) : MangaParser(context, MangaSource.SADSCANS) { +internal class SadScans(context: MangaLoaderContext) : MangaParser(context, MangaParserSource.SADSCANS) { override val availableSortOrders: Set = EnumSet.of(SortOrder.ALPHABETICAL) override val configKeyDomain = ConfigKey.Domain("sadscans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/TrWebtoon.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/TrWebtoon.kt index 9c5a9d620..f9d949ce3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/TrWebtoon.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/TrWebtoon.kt @@ -7,14 +7,13 @@ 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.lang.IllegalArgumentException import java.text.DateFormat import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("TRWEBTOON", "TrWebtoon", "tr") class TrWebtoon(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.TRWEBTOON, pageSize = 21) { + PagedMangaParser(context, MangaParserSource.TRWEBTOON, pageSize = 21) { override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("trwebtoon.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/YaoiFlix.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/YaoiFlix.kt index 370a14922..871d63dd3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/YaoiFlix.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/tr/YaoiFlix.kt @@ -10,11 +10,11 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("YAOIFLIX", "YaoiFlix", "tr", ContentType.HENTAI) -class YaoiFlix(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.YAOIFLIX, 8) { +class YaoiFlix(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.YAOIFLIX, 8) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED) - override val configKeyDomain = ConfigKey.Domain("www.yaoiflix.co") + override val configKeyDomain = ConfigKey.Domain("www.yaoiflix.dev") override val isMultipleTagsSupported = false diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/HentaiUkrParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/HentaiUkrParser.kt index d681cc0b6..4900d8b63 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/HentaiUkrParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/HentaiUkrParser.kt @@ -24,7 +24,7 @@ private const val PAGE_SIZE = 60 // NOTE High profile focus @MangaSourceParser("HENTAIUKR", "HentaiUkr", "uk", ContentType.HENTAI) -class HentaiUkrParser(context: MangaLoaderContext) : MangaParser(context, MangaSource.HENTAIUKR), Interceptor { +class HentaiUkrParser(context: MangaLoaderContext) : MangaParser(context, MangaParserSource.HENTAIUKR), Interceptor { private val date = SimpleDateFormat("yyyy-MM-dd", Locale.US) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/HoneyMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/HoneyMangaParser.kt index 38f2bb558..1d2d0fb76 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/HoneyMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/HoneyMangaParser.kt @@ -24,7 +24,8 @@ private const val HEADER_ENCODING = "Content-Encoding" private const val IMAGE_BASEURL_FALLBACK = "https://hmvolumestorage.b-cdn.net/public-resources" @MangaSourceParser("HONEYMANGA", "HoneyManga", "uk") -class HoneyMangaParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.HONEYMANGA, PAGE_SIZE), +class HoneyMangaParser(context: MangaLoaderContext) : + PagedMangaParser(context, MangaParserSource.HONEYMANGA, PAGE_SIZE), Interceptor { private val urlApi get() = "https://data.api.$domain" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/MangaInUaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/MangaInUaParser.kt index 99799bd15..2ba8d2918 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/MangaInUaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/uk/MangaInUaParser.kt @@ -15,7 +15,7 @@ private const val DEF_BRANCH_NAME = "Основний переклад" @MangaSourceParser("MANGAINUA", "MANGA/in/UA", "uk") class MangaInUaParser(context: MangaLoaderContext) : PagedMangaParser( context = context, - source = MangaSource.MANGAINUA, + source = MangaParserSource.MANGAINUA, pageSize = 24, searchPageSize = 10, ) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/BlogTruyenParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/BlogTruyenParser.kt index f5bee237b..da074f2e9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/BlogTruyenParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/BlogTruyenParser.kt @@ -17,7 +17,7 @@ import java.util.* @MangaSourceParser("BLOGTRUYEN", "BlogTruyen", "vi") class BlogTruyenParser(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.BLOGTRUYEN, pageSize = 20) { + PagedMangaParser(context, MangaParserSource.BLOGTRUYEN, pageSize = 20) { override val configKeyDomain: ConfigKey.Domain get() = ConfigKey.Domain("blogtruyenmoi.com") @@ -197,7 +197,8 @@ class BlogTruyenParser(context: MangaLoaderContext) : MangaChapter( id = generateUid(id), name = name, - number = index + 1, + number = index + 1f, + volume = 0, url = relativeUrl, scanlator = null, uploadDate = uploadDate, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/HentaiVNParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/HentaiVNParser.kt index d5ea7409d..ee35a0d68 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/HentaiVNParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/HentaiVNParser.kt @@ -5,14 +5,12 @@ import kotlinx.coroutines.async import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock -import okhttp3.Headers import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaParser import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey import org.koitharu.kotatsu.parsers.model.* -import org.koitharu.kotatsu.parsers.network.UserAgents import org.koitharu.kotatsu.parsers.util.* import java.text.SimpleDateFormat import java.util.* @@ -21,12 +19,17 @@ private const val PAGE_SIZE = 15 private const val SEARCH_PAGE_SIZE = 10 @MangaSourceParser("HENTAIVN", "HentaiVN", "vi", type = ContentType.HENTAI) -class HentaiVNParser(context: MangaLoaderContext) : MangaParser(context, MangaSource.HENTAIVN) { +class HentaiVNParser(context: MangaLoaderContext) : MangaParser(context, MangaParserSource.HENTAIVN) { - override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("hentaivn.red", "hentaivn.autos", "hentaivn.tv") + override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("zhentaivnz.cc") // hentaivn has created 2 different interfaces for mobile and desktop, and Cloudflare detects whether it's mobile or not even with a desktop user agent. - override val headers: Headers = Headers.Builder().add("User-Agent", UserAgents.CHROME_MOBILE).build() + private val userAgentKey = ConfigKey.UserAgent(context.getDefaultUserAgent()) + + override fun onCreateConfig(keys: MutableCollection>) { + super.onCreateConfig(keys) + keys.add(userAgentKey) + } override val availableSortOrders: Set = EnumSet.of( SortOrder.UPDATED, @@ -244,7 +247,8 @@ class HentaiVNParser(context: MangaLoaderContext) : MangaParser(context, MangaSo MangaChapter( id = generateUid(titleEl.attrAsRelativeUrl("href")), name = titleEl.text(), - number = index + 1, + number = index + 1f, + volume = 0, url = titleEl.attrAsRelativeUrl("href"), scanlator = null, uploadDate = chapterDateFormat.tryParse(dateStr), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/LxManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/LxManga.kt index 986693358..83cc2381b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/LxManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/LxManga.kt @@ -12,7 +12,7 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("LXMANGA", "LxManga", "vi") -internal class LxManga(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.LXMANGA, 60) { +internal class LxManga(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.LXMANGA, 60) { override val availableSortOrders: Set = EnumSet.of( SortOrder.ALPHABETICAL, @@ -23,7 +23,7 @@ internal class LxManga(context: MangaLoaderContext) : PagedMangaParser(context, ) override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED) - override val configKeyDomain = ConfigKey.Domain("lxmanga.net") + override val configKeyDomain = ConfigKey.Domain("lxmanga.life") override val isMultipleTagsSupported = false @@ -142,7 +142,8 @@ internal class LxManga(context: MangaLoaderContext) : PagedMangaParser(context, MangaChapter( id = generateUid(href), name = name, - number = i, + number = i.toFloat(), + volume = 0, url = href, scanlator = null, uploadDate = dateFormat.tryParse(date), diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/Truyenqq.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/Truyenqq.kt index 03acef758..cca21337a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/Truyenqq.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/Truyenqq.kt @@ -10,14 +10,14 @@ import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("TRUYENQQ", "Truyenqq", "vi") -internal class Truyenqq(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.TRUYENQQ, 42) { +internal class Truyenqq(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.TRUYENQQ, 42) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.NEWEST) override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED) - override val configKeyDomain = ConfigKey.Domain("truyenqqvn.com") + override val configKeyDomain = ConfigKey.Domain("truyenqqviet.com") override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt deleted file mode 100644 index e8c1effeb..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/TruyentranhLHParser.kt +++ /dev/null @@ -1,182 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.vi - -import androidx.collection.ArrayMap -import androidx.collection.ArraySet -import kotlinx.coroutines.sync.Mutex -import kotlinx.coroutines.sync.withLock -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.SimpleDateFormat -import java.util.* - -@MangaSourceParser("TRUYENTRANHLH", "TruyentranhLH", "vi") -class TruyentranhLHParser(context: MangaLoaderContext) : - PagedMangaParser(context, source = MangaSource.TRUYENTRANHLH, pageSize = 18) { - - override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("truyenlh.com") - override val availableSortOrders: Set = EnumSet.allOf(SortOrder::class.java) - override val availableStates: Set = - EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED) - - private val mutex = Mutex() - private var tagCache: Map? = null - - override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { - - val url = urlBuilder().apply { - addPathSegment("tim-kiem") - addQueryParameter("page", page.toString()) - when (filter) { - - is MangaListFilter.Search -> { - addQueryParameter("q", filter.query) - } - - is MangaListFilter.Advanced -> { - - addQueryParameter( - "sort", - when (filter.sortOrder) { - SortOrder.UPDATED -> "update" - SortOrder.NEWEST -> "new" - SortOrder.RATING -> "like" - SortOrder.POPULARITY -> "top" - SortOrder.ALPHABETICAL -> "az" - SortOrder.ALPHABETICAL_DESC -> "za" - }, - ) - - if (filter.states.isNotEmpty()) { - filter.states.oneOrThrowIfMany()?.let { - addQueryParameter( - "status", - when (it) { - MangaState.ONGOING -> "1" - MangaState.FINISHED -> "3" - MangaState.PAUSED -> "2" - else -> "0" - }, - ) - } - } - - if (filter.tags.isNotEmpty()) { - val tagsQuery = filter.tags.joinToString(separator = ",") { it.key } - addEncodedQueryParameter("accept_genres", tagsQuery) - } - } - - null -> { - addQueryParameter("sort", "update") - } - } - - }.build() - - return webClient.httpGet(url).parseHtml() - .select(".container .card.card-dark .row > .thumb-item-flow") - .mapNotNull { - val a = it.selectFirstOrThrow(".thumb-wrapper a") - Manga( - id = generateUid(a.attrAsRelativeUrl("href")), - url = a.attrAsRelativeUrl("href"), - publicUrl = a.attrAsAbsoluteUrl("href"), - title = it.select(".thumb_attr.series-title").text(), - altTitle = null, - rating = RATING_UNKNOWN, - isNsfw = false, - coverUrl = a.selectFirst("div[data-bg]")?.attrAsAbsoluteUrl("data-bg").orEmpty(), - tags = emptySet(), - state = null, - author = null, - source = source, - ) - } - } - - override suspend fun getDetails(manga: Manga): Manga { - val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() - val infoHeaderEl = docs.selectFirst("main.section-body") - val infoEl = docs.selectFirst("main.section-body .series-information") - val tags = infoEl?.select(".info-item:contains(Thể loại) > .info-value > a")?.mapNotNullToSet { - getOrCreateTagMap()[it.text().trim()] - } - val state = when (infoEl?.selectFirst(".info-item:contains(Tình trạng) > .info-value")?.text()) { - "Đang tiến hành" -> MangaState.ONGOING - "Đã hoàn thành" -> MangaState.FINISHED - "Tạm ngưng" -> MangaState.PAUSED - else -> null - } - val rating = infoHeaderEl?.let { - val like = it.selectFirst("#like .block.feature-name")?.text()?.toIntOrNull() - val disLike = it.selectFirst("#dislike .block.feature-name")?.text()?.toIntOrNull() - when { - like == null || disLike == null -> RATING_UNKNOWN - like == 0 && disLike == 0 -> RATING_UNKNOWN - else -> like.toFloat() / (like + disLike) - } - } - val chapterDateFormat = SimpleDateFormat("dd/MM/yyyy", Locale.US) - - return manga.copy( - altTitle = infoEl?.selectFirst(".info-item:contains(Tên khác) > .info-value")?.text(), - author = infoEl?.select(".info-item:contains(Tác giả) > .info-value")?.joinToString { it.text() }, - tags = tags ?: emptySet(), - state = state, - rating = rating ?: RATING_UNKNOWN, - description = infoHeaderEl?.selectFirst(".series-summary .summary-content")?.html(), - chapters = docs.select("ul.list-chapters.at-series > a").mapChapters(reversed = true) { index, element -> - MangaChapter( - id = generateUid(element.attrAsRelativeUrl("href")), - name = element.selectFirst(".chapter-name")?.text()?.trim().orEmpty(), - number = index + 1, - url = element.attrAsRelativeUrl("href"), - scanlator = null, - uploadDate = chapterDateFormat.tryParse(element.selectFirst(".chapter-time")?.text()), - branch = null, - source = source, - ) - }, - ) - } - - override suspend fun getPages(chapter: MangaChapter): List { - val url = chapter.url.toAbsoluteUrl(domain) - return webClient.httpGet(url).parseHtml().select("#chapter-content > img").mapNotNull { - val imageUrl = it.attrAsRelativeUrlOrNull("data-src") - ?: it.attrAsRelativeUrlOrNull("src") - ?: return@mapNotNull null - MangaPage( - id = generateUid(imageUrl), - url = imageUrl, - preview = null, - source = source, - ) - } - } - - override suspend fun getAvailableTags(): Set { - return ArraySet(getOrCreateTagMap().values) - } - - private suspend fun getOrCreateTagMap(): Map = mutex.withLock { - tagCache?.let { return it } - val docs = webClient.httpGet("/tim-kiem".toAbsoluteUrl(domain)).parseHtml() - val tags = docs.select(".search-border-left .row > .search-gerne_item").mapNotNull { - MangaTag( - title = it.text().trim(), - key = it.selectFirst("label[data-genre-id]") - ?.attr("data-genre-id") - ?.trim() ?: return@mapNotNull null, - source = source, - ) - } - val tagMap = tags.associateByTo(ArrayMap(tags.size)) { it.title } - tagCache = tagMap - return tagMap - } -} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/YurinekoParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/YurinekoParser.kt index 807fcf51a..8c05fa800 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/YurinekoParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/YurinekoParser.kt @@ -6,17 +6,13 @@ 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.domain -import org.koitharu.kotatsu.parsers.util.generateUid -import org.koitharu.kotatsu.parsers.util.json.* -import org.koitharu.kotatsu.parsers.util.mapChapters import org.koitharu.kotatsu.parsers.util.* +import org.koitharu.kotatsu.parsers.util.json.* import java.text.SimpleDateFormat -import java.util.EnumSet -import java.util.Locale +import java.util.* @MangaSourceParser("YURINEKO", "YuriNeko", "vi", ContentType.HENTAI) -class YurinekoParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.YURINEKO, 20) { +class YurinekoParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaParserSource.YURINEKO, 20) { override val configKeyDomain: ConfigKey.Domain get() = ConfigKey.Domain("yurineko.net") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vmp/VmpParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vmp/VmpParser.kt index 69b9c256e..719338ea2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vmp/VmpParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vmp/VmpParser.kt @@ -10,7 +10,7 @@ import java.util.* internal abstract class VmpParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 24, ) : PagedMangaParser(context, source, pageSize) { @@ -122,7 +122,8 @@ internal abstract class VmpParser( MangaChapter( id = manga.id, name = manga.title, - number = 1, + number = 1f, + volume = 0, url = manga.url, scanlator = null, uploadDate = 0, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vmp/es/VerComicsPorno.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vmp/es/VerComicsPorno.kt index 5d44a9f05..547d1b9bb 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vmp/es/VerComicsPorno.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vmp/es/VerComicsPorno.kt @@ -3,13 +3,13 @@ package org.koitharu.kotatsu.parsers.site.vmp.es 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.vmp.VmpParser // Other domain name : toonx.net @MangaSourceParser("VERCOMICSPORNO", "VerComicsPorno", "es", ContentType.HENTAI) internal class VerComicsPorno(context: MangaLoaderContext) : - VmpParser(context, MangaSource.VERCOMICSPORNO, "vercomicsporno.com") { + VmpParser(context, MangaParserSource.VERCOMICSPORNO, "vercomicsporno.com") { override val listUrl = "comics-porno/" override val geneUrl = "etiquetas/" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vmp/es/VerMangasPorno.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vmp/es/VerMangasPorno.kt index 09dec9095..ddc48d684 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vmp/es/VerMangasPorno.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vmp/es/VerMangasPorno.kt @@ -3,9 +3,9 @@ package org.koitharu.kotatsu.parsers.site.vmp.es 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.vmp.VmpParser @MangaSourceParser("VERMANGASPORNO", "VerMangasPorno", "es", ContentType.HENTAI) internal class VerMangasPorno(context: MangaLoaderContext) : - VmpParser(context, MangaSource.VERMANGASPORNO, "vermangasporno.com") + VmpParser(context, MangaParserSource.VERMANGASPORNO, "vermangasporno.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt index 4105aed5d..a20f85450 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/WpComicsParser.kt @@ -19,7 +19,7 @@ import java.util.* internal abstract class WpComicsParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 48, ) : PagedMangaParser(context, source, pageSize) { @@ -35,7 +35,9 @@ internal abstract class WpComicsParser( override val availableStates: Set = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED) - protected open val listUrl = "/tim-truyen-nang-cao" + override val isMultipleTagsSupported = false + + protected open val listUrl = "/tim-truyen" protected open val datePattern = "dd/MM/yy" @@ -49,12 +51,16 @@ internal abstract class WpComicsParser( protected val ongoing: Set = setOf( "Đang tiến hành", "Ongoing", + "Updating", + "連載中", ) @JvmField protected val finished: Set = setOf( "Hoàn thành", + "Complete", "Completed", + "完結済み", ) override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { @@ -64,7 +70,8 @@ internal abstract class WpComicsParser( val url = buildString { append("https://") append(domain) - append("/tim-truyen?keyword=") + append(listUrl) + append("?keyword=") append(filter.query.urlEncoded()) append("&page=") append(page.toString()) @@ -82,10 +89,14 @@ internal abstract class WpComicsParser( val url = buildString { append("https://") append(domain) - val tagQuery = filter.tags.joinToString(",") { it.key } - append("/tim-truyen-nang-cao?genres=") - append(tagQuery) - append("¬genres=&gender=-1&minchapter=1&sort=") + append(listUrl) + if (filter.tags.isNotEmpty()) { + append('/') + filter.tags.oneOrThrowIfMany()?.let { + append(it.key) + } + } + append("?sort=") append( when (filter.sortOrder) { SortOrder.UPDATED -> 0 @@ -116,32 +127,33 @@ internal abstract class WpComicsParser( val url = buildString { append("https://") append(domain) - append("/tim-truyen-nang-cao?genres=¬genres=&gender=-1&status=-1&minchapter=1&sort=0&page=") + append(listUrl) + append("?sort=0&status=-1&page=") append(page.toString()) } webClient.httpGet(url) } } - val itemsElements = response.parseHtml() - .select("div.ModuleContent > div.items") - .select("div.item") - return itemsElements.mapNotNull { item -> + val tagMap = getOrCreateTagMap() + return parseMangaList(response.parseHtml(), tagMap) + } + + protected open fun parseMangaList(doc: Document, tagMap: ArrayMap): List { + return doc.select("div.items div.item").mapNotNull { item -> val tooltipElement = item.selectFirst("div.box_tootip") ?: return@mapNotNull null val absUrl = item.selectFirst("div.image > a")?.attrAsAbsoluteUrlOrNull("href") ?: return@mapNotNull null val slug = absUrl.substringAfterLast('/') val mangaState = when (tooltipElement.selectFirst("div.message_main > p:contains(Tình trạng)")?.ownText()) { - "Đang tiến hành" -> MangaState.ONGOING - "Hoàn thành" -> MangaState.FINISHED + in ongoing -> MangaState.ONGOING + in finished -> MangaState.FINISHED else -> null } - - val tagMap = getOrCreateTagMap() val tagsElement = tooltipElement.selectFirst("div.message_main > p:contains(Thể loại)")?.ownText().orEmpty() val mangaTags = tagsElement.split(',').mapNotNullToSet { tagMap[it.trim()] } Manga( id = generateUid(slug), - title = tooltipElement.selectFirst("div.title")?.text().orEmpty(), + title = item.selectFirst("div.box_tootip div.title, h3 a")?.text().orEmpty(), altTitle = null, url = absUrl.toRelativeUrl(domain), publicUrl = absUrl, @@ -168,18 +180,17 @@ internal abstract class WpComicsParser( return tagSet } - private val mutex = Mutex() private var tagCache: ArrayMap? = null - private suspend fun getOrCreateTagMap(): ArrayMap = mutex.withLock { + protected open suspend fun getOrCreateTagMap(): ArrayMap = mutex.withLock { tagCache?.let { return@withLock it } - val doc = webClient.httpGet("/tim-truyen-nang-cao".toAbsoluteUrl(domain)).parseHtml() - val tagItems = doc.select("div.genre-item") + val doc = webClient.httpGet(listUrl.toAbsoluteUrl(domain)).parseHtml() + val tagItems = doc.select("div.dropdown-genres select option") val result = ArrayMap(tagItems.size) for (item in tagItems) { val title = item.text() - val key = item.select("span[data-id]").attr("data-id") + val key = item.attr("value").substringAfterLast('/') if (key.isNotEmpty() && title.isNotEmpty()) { result[title] = MangaTag(title = title, key = key, source = source) } @@ -190,35 +201,36 @@ internal abstract class WpComicsParser( protected open val selectDesc = "div.detail-content p" protected open val selectState = "div.col-info li.status p:not(.name)" - protected open val selectAut = "div.col-info li.author p:not(.name)" - protected open val selectTag = "div.col-info li.kind p:not(.name) a" + protected open val selectAut = "div.col-info li.author p:not(.name), li.author p.col-xs-8" + protected open val selectTag = "div.col-info li.kind p:not(.name) a, li.kind p.col-xs-8 a" override suspend fun getDetails(manga: Manga): Manga = coroutineScope { val fullUrl = manga.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(fullUrl).parseHtml() val chaptersDeferred = async { getChapters(doc) } - val desc = doc.selectFirstOrThrow(selectDesc).html() - val stateDiv = doc.selectFirst(selectState) - val state = stateDiv?.let { - when (it.text()) { - in ongoing -> MangaState.ONGOING - in finished -> MangaState.FINISHED - else -> null - } - } - val aut = doc.body().select(selectAut).text() + val tagMap = getOrCreateTagMap() + val tagsElement = doc.select("li.kind p.col-xs-8 a") + val mangaTags = tagsElement.mapNotNullToSet { tagMap[it.text()] } manga.copy( - description = desc, - altTitle = null, - author = aut, - state = state, + description = doc.selectFirst(selectDesc)?.html().orEmpty(), + altTitle = doc.selectFirst("h2.other-name")?.text().orEmpty(), + author = doc.body().select(selectAut).text(), + state = doc.selectFirst(selectState)?.let { + when (it.text()) { + in ongoing -> MangaState.ONGOING + in finished -> MangaState.FINISHED + else -> null + } + }, + tags = mangaTags, + rating = doc.selectFirst("div.star input")?.attr("value")?.toFloatOrNull()?.div(5f) ?: RATING_UNKNOWN, chapters = chaptersDeferred.await(), ) } protected open val selectDate = "div.col-xs-4" - protected open val selectChapter = "div#nt_listchapter li .chapter" + protected open val selectChapter = "div.list-chapter li.row:not(.heading)" protected open suspend fun getChapters(doc: Document): List { return doc.body().select(selectChapter).mapChapters(reversed = true) { i, li -> @@ -248,14 +260,11 @@ internal abstract class WpComicsParser( } } - - protected open val selectPage = "div.reading-detail img" + protected open val selectPage = "div.page-chapter > img, li.blocks-gallery-item img" override suspend fun getPages(chapter: MangaChapter): List { val fullUrl = chapter.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(fullUrl).parseHtml() - - return doc.select(selectPage).map { url -> val img = url.src()?.toRelativeUrl(domain) ?: url.parseFailed("Image src not found") MangaPage( @@ -268,16 +277,14 @@ internal abstract class WpComicsParser( } protected fun parseChapterDate(dateFormat: DateFormat, date: String?): Long { - // Clean date (e.g. 5th December 2019 to 5 December 2019) before parsing it val d = date?.lowercase() ?: return 0 return when { d.endsWith(" ago") || - d.endsWith(" trước") // Handle translated 'ago' in Viêt Nam. + d.endsWith(" trước") -> parseRelativeDate(date) - // Handle 'yesterday' and 'today', using midnight d.startsWith("year") -> Calendar.getInstance().apply { - add(Calendar.DAY_OF_MONTH, -1) // yesterday + add(Calendar.DAY_OF_MONTH, -1) set(Calendar.HOUR_OF_DAY, 0) set(Calendar.MINUTE, 0) set(Calendar.SECOND, 0) @@ -303,49 +310,33 @@ internal abstract class WpComicsParser( } } - // Parses dates in this form: - // 21 hours ago private fun parseRelativeDate(date: String): Long { val number = Regex("""(\d+)""").find(date)?.value?.toIntOrNull() ?: return 0 val cal = Calendar.getInstance() - return when { - WordSet( - "day", - "days", - "d", - "ngày ", - ).anyWordIn(date) -> cal.apply { add(Calendar.DAY_OF_MONTH, -number) }.timeInMillis - - WordSet("jam", "saat", "heure", "hora", "horas", "hour", "hours", "h").anyWordIn(date) -> cal.apply { - add( - Calendar.HOUR, - -number, - ) + + WordSet("second", "giây").anyWordIn(date) -> cal.apply { add(Calendar.SECOND, -number) }.timeInMillis + + WordSet("min", "minute", "minutes", "mins", "phút").anyWordIn(date) -> cal.apply { + add(Calendar.MINUTE, -number) }.timeInMillis - WordSet( - "min", - "minute", - "minutes", - "mins", - "phút", - ).anyWordIn(date) -> cal.apply { - add( - Calendar.MINUTE, - -number, - ) + WordSet("jam", "saat", "heure", "hora", "horas", "hour", "hours", "h", "giờ").anyWordIn(date) -> cal.apply { + add(Calendar.HOUR, -number) + }.timeInMillis + + WordSet("day", "days", "d", "ngày").anyWordIn(date) -> cal.apply { + add(Calendar.DAY_OF_MONTH, -number) }.timeInMillis - WordSet("second").anyWordIn(date) -> cal.apply { + WordSet("month", "months", "tháng").anyWordIn(date) -> cal.apply { add( - Calendar.SECOND, + Calendar.MONTH, -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 + WordSet("year", "năm").anyWordIn(date) -> cal.apply { add(Calendar.YEAR, -number) }.timeInMillis else -> 0 } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/en/XoxoComics.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/en/XoxoComics.kt index e3bfafc05..e3b5eacd6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/en/XoxoComics.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/en/XoxoComics.kt @@ -1,25 +1,22 @@ package org.koitharu.kotatsu.parsers.site.wpcomics.en import kotlinx.coroutines.async -import kotlinx.coroutines.awaitAll import kotlinx.coroutines.coroutineScope -import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.site.wpcomics.WpComicsParser import org.koitharu.kotatsu.parsers.util.* +import java.text.SimpleDateFormat import java.util.* @MangaSourceParser("XOXOCOMICS", "XoxoComics", "en", ContentType.COMICS) internal class XoxoComics(context: MangaLoaderContext) : - WpComicsParser(context, MangaSource.XOXOCOMICS, "xoxocomic.com", 50) { + WpComicsParser(context, MangaParserSource.XOXOCOMICS, "xoxocomic.com", 50) { override val listUrl = "/comic-list" override val datePattern = "MM/dd/yyyy" - override val isMultipleTagsSupported = false - override val availableSortOrders: Set = EnumSet.of( SortOrder.UPDATED, SortOrder.NEWEST, @@ -121,7 +118,7 @@ internal class XoxoComics(context: MangaLoaderContext) : override suspend fun getDetails(manga: Manga): Manga = coroutineScope { val fullUrl = manga.url.toAbsoluteUrl(domain) val doc = webClient.httpGet(fullUrl).parseHtml() - val chaptersDeferred = async { getChapters(doc) } + val chaptersDeferred = async { loadChapters(fullUrl) } val desc = doc.selectFirstOrThrow(selectDesc).html() val stateDiv = doc.selectFirst(selectState) val state = stateDiv?.let { @@ -148,29 +145,37 @@ internal class XoxoComics(context: MangaLoaderContext) : ) } - override suspend fun getChapters(doc: Document): List { - val pages = doc.select("ul.pagination > li:not(.active)") - return if (pages.size <= 1) { - super.getChapters(doc) - } else { - val subPageChapterList = coroutineScope { - pages.mapNotNull { page -> - val a = page.selectFirst("a") ?: return@mapNotNull null - if (a.text().isNumeric()) { - val href = a.attrAsAbsoluteUrl("href") - async { - super.getChapters(webClient.httpGet(href).parseHtml()).asReversed() - } - } else { - null // TODO support pagination with overflow - } - }.awaitAll().flatten() - } - val firstPageChapterList = super.getChapters(doc).asReversed().toMutableList() - firstPageChapterList.addAll(subPageChapterList) - firstPageChapterList.reverse() - firstPageChapterList.mapIndexed { i, x -> x.copy(volume = x.volume, number = (i + 1).toFloat()) } + private val dateFormat = SimpleDateFormat("MM/dd/yyyy", sourceLocale) + + private suspend fun loadChapters(baseUrl: String): List { + val chapters = ArrayList() + var page = 0 + while (true) { + ++page + val doc = webClient.httpGet("$baseUrl?page=$page").parseHtml() + doc.selectFirst("#nt_listchapter nav ul li:not(.heading)") ?: break + chapters.addAll( + doc.select("#nt_listchapter nav ul li:not(.heading)").mapChapters { _, li -> + val a = li.selectFirstOrThrow("a") + val href = a.attr("href") + val dateText = li.selectFirst("div.col-xs-3")?.text() + MangaChapter( + id = generateUid(href), + name = a.text(), + number = 0f, + volume = 0, + url = href, + scanlator = null, + uploadDate = dateFormat.tryParse(dateText), + branch = null, + source = source, + ) + + }, + ) } + chapters.reverse() + return chapters.mapIndexed { i, x -> x.copy(volume = x.volume, number = (i + 1).toFloat()) } } override suspend fun getPages(chapter: MangaChapter): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/ja/MangaRaw.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/ja/MangaRaw.kt new file mode 100644 index 000000000..d07a7c87d --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/ja/MangaRaw.kt @@ -0,0 +1,99 @@ +package org.koitharu.kotatsu.parsers.site.wpcomics.ja + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.exception.NotFoundException +import org.koitharu.kotatsu.parsers.model.Manga +import org.koitharu.kotatsu.parsers.model.MangaListFilter +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.SortOrder +import org.koitharu.kotatsu.parsers.site.wpcomics.WpComicsParser +import org.koitharu.kotatsu.parsers.util.domain +import org.koitharu.kotatsu.parsers.util.oneOrThrowIfMany +import org.koitharu.kotatsu.parsers.util.parseHtml +import org.koitharu.kotatsu.parsers.util.runCatchingCancellable +import org.koitharu.kotatsu.parsers.util.urlEncoded + +// Need to use 0ms.dev Proxy + +@MangaSourceParser("MANGARAW", "MangaRaw", "ja") +internal class MangaRaw(context: MangaLoaderContext) : + WpComicsParser(context, MangaParserSource.MANGARAW, "mangaraw.xyz") { + override val listUrl = "/search/manga" + + override suspend fun getListPage(page: Int, filter: MangaListFilter?): List { + val response = + when (filter) { + is MangaListFilter.Search -> { + val url = buildString { + append("https://") + append(domain) + append(listUrl) + append("?keyword=") + append(filter.query.urlEncoded()) + append("&page=") + append(page.toString()) + } + + val result = runCatchingCancellable { webClient.httpGet(url) } + val exception = result.exceptionOrNull() + if (exception is NotFoundException) { + return emptyList() + } + result.getOrThrow() + } + + is MangaListFilter.Advanced -> { + val url = buildString { + append("https://") + append(domain) + append(listUrl) + append("?sort=") + append( + when (filter.sortOrder) { + SortOrder.UPDATED -> 0 + SortOrder.POPULARITY -> 10 + SortOrder.NEWEST -> 15 + SortOrder.RATING -> 20 + else -> throw IllegalArgumentException("Sort order ${filter.sortOrder.name} not supported") + }, + ) + if (filter.tags.isNotEmpty()) { + append("&genre=") + filter.tags.oneOrThrowIfMany()?.let { + append(it.key) + } + } + filter.states.oneOrThrowIfMany()?.let { + append("&status=") + append( + when (it) { + MangaState.ONGOING -> "1" + MangaState.FINISHED -> "2" + else -> "-1" + }, + ) + } + append("&page=") + append(page.toString()) + } + + webClient.httpGet(url) + } + + null -> { + val url = buildString { + append("https://") + append(domain) + append(listUrl) + append("?genres=¬genres=&gender=-1&status=-1&minchapter=1&sort=0&page=") + append(page.toString()) + } + webClient.httpGet(url) + } + } + val tagMap = getOrCreateTagMap() + return parseMangaList(response.parseHtml(), tagMap) + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyen.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyen.kt index 0a8d6e6c9..101ef545b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyen.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyen.kt @@ -3,18 +3,13 @@ package org.koitharu.kotatsu.parsers.site.wpcomics.vi import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.config.ConfigKey -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.wpcomics.WpComicsParser @MangaSourceParser("NETTRUYEN", "NetTruyen", "vi") internal class NetTruyen(context: MangaLoaderContext) : - WpComicsParser(context, MangaSource.NETTRUYEN, "www.nettruyenlive.com", 36) { + WpComicsParser(context, MangaParserSource.NETTRUYEN, "nettruyenaa.com") { override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain( - "www.nettruyenaz.com", - "www.nettruyenlive.com", - "www.nettruyenio.com", - "www.nettruyento.com", - "nettruyento.com", - "nettruyenin.com", + "nettruyenssr.com", ) } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nettruyenmax.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nettruyenmax.kt deleted file mode 100644 index c4bbdbb1d..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nettruyenmax.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.wpcomics.vi - -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.wpcomics.WpComicsParser - -@MangaSourceParser("NETTRUYENMAX", "NettruyenBing", "vi") -internal class Nettruyenmax(context: MangaLoaderContext) : - WpComicsParser(context, MangaSource.NETTRUYENMAX, "www.nettruyenbb.com", 36) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NhatTruyenVN.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NhatTruyenVN.kt new file mode 100644 index 000000000..6530654fe --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NhatTruyenVN.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.wpcomics.vi + +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.wpcomics.WpComicsParser + +@MangaSourceParser("NHATTRUYENVN", "NhatTruyenVN", "vi") +internal class NhattruyenVN(context: MangaLoaderContext) : + WpComicsParser(context, MangaParserSource.NHATTRUYENVN, "nhattruyenvn.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nhattruyenmin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nhattruyenmin.kt deleted file mode 100644 index 2006b7911..000000000 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/Nhattruyenmin.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.koitharu.kotatsu.parsers.site.wpcomics.vi - -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.wpcomics.WpComicsParser - -@MangaSourceParser("NHATTRUYENMIN", "NhattruyenPlus", "vi") -internal class Nhattruyenmin(context: MangaLoaderContext) : - WpComicsParser(context, MangaSource.NHATTRUYENMIN, "nhattruyenmax.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ZeistMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ZeistMangaParser.kt index e3d7ef967..2ba778ecf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ZeistMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ZeistMangaParser.kt @@ -18,7 +18,7 @@ import java.util.* internal abstract class ZeistMangaParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 12, ) : PagedMangaParser(context, source, pageSize) { @@ -189,7 +189,7 @@ internal abstract class ZeistMangaParser( } } - protected open val selectTags = "article div.mt-15 a, .info-genre a" + protected open val selectTags = "article div.mt-15 a, .info-genre a, dl:contains(Genre) dd a" override suspend fun getDetails(manga: Manga): Manga = coroutineScope { val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() val state = @@ -198,6 +198,7 @@ internal abstract class ZeistMangaParser( ?: doc.selectFirst("ul.infonime li:contains(Status) span") ?: doc.selectFirst("ul.infonime li:contains(Estado) span") ?: doc.selectFirst("span.status-novel") + ?: doc.selectFirst("span[data-status]") val mangaState = state?.text()?.lowercase().let { when (it) { in ongoing -> MangaState.ONGOING @@ -209,11 +210,13 @@ internal abstract class ZeistMangaParser( } val author = doc.selectFirst("div.y6x11p:contains(الكاتب) .dt") ?: doc.selectFirst("div.y6x11p:contains(Author) .dt") + ?: doc.selectFirst("dl:contains(Author) dd") ?: doc.selectFirst("div.y6x11p:contains(Autor) .dt") ?: doc.selectFirst("div.y6x11p:contains(Yazar) .dt") + ?: doc.selectFirst("ul.infonime li:contains(Author) span") val desc = doc.getElementById("synopsis") ?: doc.getElementById("Sinopse") ?: doc.getElementById("sinopas") - ?: doc.selectFirst(".sinopsis") + ?: doc.selectFirst(".sinopsis") ?: doc.selectFirst(".sinopas") val chaptersDeferred = async { loadChapters(manga.url, doc) } manga.copy( author = author?.text(), @@ -254,6 +257,8 @@ internal abstract class ZeistMangaParser( ?.groupValues?.get(1) ?: throw Exception("Failed to find chapter feed") + } else if (doc.selectFirst("#chapterlist") != null) { + doc.selectFirstOrThrow("#chapterlist").attr("data-post-title") } else { doc.selectFirstOrThrow("script:containsData(var label_chapter)").data() .substringAfter("label_chapter = \"").substringBefore("\"") @@ -293,7 +298,8 @@ internal abstract class ZeistMangaParser( } } - protected open val selectPage = "div.check-box img, article#reader .separator img, article.container .separator img" + protected open val selectPage = + "div.check-box img, article#reader .separator img, article.container .separator img, #readarea img, #reader img, #readerarea img" override suspend fun getPages(chapter: MangaChapter): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/ArabsDoujin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/ArabsDoujin.kt new file mode 100644 index 000000000..c4a45b9ca --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/ArabsDoujin.kt @@ -0,0 +1,11 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.ar + +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.zeistmanga.ZeistMangaParser + +@MangaSourceParser("ARABSDOUJIN", "ArabsDoujin", "ar", ContentType.HENTAI) +internal class ArabsDoujin(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.ARABSDOUJIN, "www.arabsdoujin.online") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/Hijala.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/Hijala.kt index 3d68b2ae4..c48da9be3 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/Hijala.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/Hijala.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("HIJALA", "Hijala", "ar") internal class Hijala(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.HIJALA, "hijala.blogspot.com") + ZeistMangaParser(context, MangaParserSource.HIJALA, "hijala.blogspot.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/LonerTl.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/LonerTl.kt index c33e76573..53b281c84 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/LonerTl.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/LonerTl.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("LONERTL", "LonerTranslations", "ar") internal class LonerTl(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.LONERTL, "loner-tl.blogspot.com") { + ZeistMangaParser(context, MangaParserSource.LONERTL, "loner-tl.blogspot.com") { override val sateOngoing: String = "مستمرة" override val sateFinished: String = "مكتملة" override val sateAbandoned: String = "متوقفة" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/MangaAiLand.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/MangaAiLand.kt index 09aee8ab7..35ae299dd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/MangaAiLand.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/MangaAiLand.kt @@ -2,7 +2,7 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser import org.koitharu.kotatsu.parsers.util.domain @@ -12,7 +12,7 @@ import org.koitharu.kotatsu.parsers.util.requireElementById @MangaSourceParser("MANGAAILAND", "MangaAiLand", "ar") internal class MangaAiLand(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.MANGAAILAND, "manga-ai-land.blogspot.com") { + ZeistMangaParser(context, MangaParserSource.MANGAAILAND, "manga-ai-land.blogspot.com") { override val sateOngoing: String = "مستمر" override val sateFinished: String = "مكتملة" override val sateAbandoned: String = "متوقفة" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/MangaHub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/MangaHub.kt new file mode 100644 index 000000000..ee37fee56 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/MangaHub.kt @@ -0,0 +1,33 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.ar + +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.model.MangaState +import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser +import org.koitharu.kotatsu.parsers.util.* +import java.util.* + +@MangaSourceParser("MANGAHUB_LINK", "MangaHub.link", "ar", ContentType.HENTAI) +internal class MangaHub(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.MANGAHUB_LINK, "www.mangahub.link") { + + override val availableStates: Set = + EnumSet.of(MangaState.ONGOING, MangaState.FINISHED) + + override val sateOngoing: String = "مستمر" + override val sateFinished: String = "مكتمل" + + override suspend fun getAvailableTags(): Set { + val doc = webClient.httpGet("https://$domain").parseHtml() + return doc.requireElementById("Genre").select("div.items-center").mapNotNullToSet { + MangaTag( + key = it.selectFirstOrThrow("input").attr("value"), + title = it.selectFirstOrThrow("label").text().substringBefore(')').toTitleCase(sourceLocale), + source = source, + ) + } + } +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/MangaSoul.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/MangaSoul.kt index 6a7fda21b..39fb41a0a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/MangaSoul.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/MangaSoul.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("MANGASOUL", "MangaSoul", "ar") internal class MangaSoul(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.MANGASOUL, "www.manga-soul.com") + ZeistMangaParser(context, MangaParserSource.MANGASOUL, "www.manga-soul.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/ManhaTok.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/ManhaTok.kt index 73286ad61..2f5d91b41 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/ManhaTok.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/ManhaTok.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("MANHATOK", "ManhaTok", "ar") internal class ManhaTok(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.MANHATOK, "manhatok.blogspot.com") { + ZeistMangaParser(context, MangaParserSource.MANHATOK, "manhatok.blogspot.com") { override val selectPage = "#seoneurons-target img" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/YokaiTeam.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/YokaiTeam.kt index df81ea01d..0305ef2c7 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/YokaiTeam.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/YokaiTeam.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("YOKAITEAM", "YokaiTeam", "ar") internal class YokaiTeam(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.YOKAITEAM, "yokai-team.blogspot.com") + ZeistMangaParser(context, MangaParserSource.YOKAITEAM, "yokai-team.blogspot.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/YuriMoonSub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/YuriMoonSub.kt index 4a215049d..0d0eca8f5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/YuriMoonSub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/ar/YuriMoonSub.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.ar import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("YURIMOONSUB", "Yurimoonsub.blogspot.com", "ar") internal class YuriMoonSub(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.YURIMOONSUB, "yurimoonsub.blogspot.com") + ZeistMangaParser(context, MangaParserSource.YURIMOONSUB, "yurimoonsub.blogspot.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/AiyuMangaScanlation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/AiyuMangaScanlation.kt index 2e4953655..340f84c61 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/AiyuMangaScanlation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/AiyuMangaScanlation.kt @@ -2,11 +2,11 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("AIYUMANGASCANLATION", "AiyuManhua", "es") internal class AiyuMangaScanlation(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.AIYUMANGASCANLATION, "www.aiyumanhua.com") { + ZeistMangaParser(context, MangaParserSource.AIYUMANGASCANLATION, "www.aiyumanhua.com") { override val selectPage = "article.chapter img" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/DatgarScanlation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/DatgarScanlation.kt index 5df9353e0..f8b028ed9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/DatgarScanlation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/DatgarScanlation.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.es import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("DATGARSCANLATION", "DatgarScanlation", "es") internal class DatgarScanlation(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.DATGARSCANLATION, "datgarscanlation.blogspot.com") + ZeistMangaParser(context, MangaParserSource.DATGARSCANLATION, "datgarscanlation.blogspot.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/GistamisHouseFansub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/GistamisHouseFansub.kt new file mode 100644 index 000000000..41e97c2f7 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/GistamisHouseFansub.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.es + +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.zeistmanga.ZeistMangaParser + +@MangaSourceParser("GISTAMISHOUSEFANSUB", "GistamisHouseFansub", "es") +internal class GistamisHouseFansub(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.GISTAMISHOUSEFANSUB, "gistamishousefansub.blogspot.com") { + override val sateOngoing: String = "Activo" + override val sateFinished: String = "Completo" + override val sateAbandoned: String = "Cancelado" + override val selectPage = ".post img" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/NekoScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/NekoScans.kt new file mode 100644 index 000000000..219810079 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/es/NekoScans.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.es + +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.zeistmanga.ZeistMangaParser + +@MangaSourceParser("NEKOSCANS", "NekoScans", "es") +internal class NekoScans(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.NEKOSCANS, "nekoscanlationlector.blogspot.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/AsupanKomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/AsupanKomik.kt index 7af128416..8bff2e3ea 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/AsupanKomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/AsupanKomik.kt @@ -1,10 +1,12 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser +@Broken @MangaSourceParser("ASUPANKOMIK", "AsupanKomik", "id") internal class AsupanKomik(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.ASUPANKOMIK, "www.asupankomik.my.id") + ZeistMangaParser(context, MangaParserSource.ASUPANKOMIK, "www.asupankomik.my.id") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/IchiroManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/IchiroManga.kt new file mode 100644 index 000000000..e4c9ceac2 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/IchiroManga.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.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.zeistmanga.ZeistMangaParser + +@MangaSourceParser("ICHIROMANGA", "IchiroManga", "id") +internal class IchiroManga(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.ICHIROMANGA, "www.ichiromanga.my.id") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Kishisan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Kishisan.kt new file mode 100644 index 000000000..30cb77d31 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Kishisan.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.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.zeistmanga.ZeistMangaParser + +@MangaSourceParser("KISHISAN", "Kishisan", "id") +internal class Kishisan(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.KISHISAN, "www.kishisan.site") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KlManhua.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KlManhua.kt index 2ff408b63..1a0a41781 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KlManhua.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KlManhua.kt @@ -3,7 +3,7 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.id 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser import org.koitharu.kotatsu.parsers.util.domain @@ -13,7 +13,7 @@ import org.koitharu.kotatsu.parsers.util.requireElementById @MangaSourceParser("KLMANHUA", "KlManhua", "id", ContentType.HENTAI) internal class KlManhua(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.KLMANHUA, "klmanhua.blogspot.com") { + ZeistMangaParser(context, MangaParserSource.KLMANHUA, "klmanhua.blogspot.com") { override suspend fun getAvailableTags(): Set { val doc = webClient.httpGet("https://$domain").parseHtml() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KomikGes.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KomikGes.kt index 9f01c0305..43014bca6 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KomikGes.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KomikGes.kt @@ -5,7 +5,7 @@ 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.MangaSource +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 @@ -13,7 +13,7 @@ import java.text.SimpleDateFormat @MangaSourceParser("KOMIKGES", "KomikGes", "id") internal class KomikGes(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.KOMIKGES, "www.komikges.my.id") { + ZeistMangaParser(context, MangaParserSource.KOMIKGES, "www.komikges.my.id") { override suspend fun loadChapters(mangaUrl: String, doc: Document): List { val feed = doc.selectFirstOrThrow(".episode-list script").html().substringAfter("('").substringBefore("');") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KomikRealm.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KomikRealm.kt index a01095948..bd3a6cee5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KomikRealm.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/KomikRealm.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("KOMIKREALM", "KomikRealm", "id") internal class KomikRealm(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.KOMIKREALM, "www.komikrealm.my.id") + ZeistMangaParser(context, MangaParserSource.KOMIKREALM, "www.komikrealm.my.id") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Mikoroku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Mikoroku.kt index cdf6b5031..89f91daae 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Mikoroku.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Mikoroku.kt @@ -3,18 +3,14 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.id 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser -import org.koitharu.kotatsu.parsers.util.domain -import org.koitharu.kotatsu.parsers.util.mapNotNullToSet -import org.koitharu.kotatsu.parsers.util.parseHtml -import org.koitharu.kotatsu.parsers.util.requireElementById -import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow +import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("MIKOROKU", "Mikoroku", "id", ContentType.HENTAI) internal class Mikoroku(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.MIKOROKU, "www.mikoroku.web.id") { + ZeistMangaParser(context, MangaParserSource.MIKOROKU, "www.mikoroku.web.id") { override suspend fun getAvailableTags(): Set { val doc = webClient.httpGet("https://$domain").parseHtml() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/MonzeeKomik.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/MonzeeKomik.kt index 9b8072ce0..7ae0d8cc1 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/MonzeeKomik.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/MonzeeKomik.kt @@ -1,22 +1,20 @@ 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser -import org.koitharu.kotatsu.parsers.util.domain -import org.koitharu.kotatsu.parsers.util.generateUid +import org.koitharu.kotatsu.parsers.util.* import org.koitharu.kotatsu.parsers.util.json.toJSONList -import org.koitharu.kotatsu.parsers.util.parseJson -import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow -import org.koitharu.kotatsu.parsers.util.tryParse import java.text.SimpleDateFormat +@Broken @MangaSourceParser("MONZEEKOMIK", "MonzeeKomik", "id") internal class MonzeeKomik(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.MONZEEKOMIK, "www.monzeekomik.my.id") { + ZeistMangaParser(context, MangaParserSource.MONZEEKOMIK, "www.monzeekomik.my.id") { override val selectPage = "article#reader img" override suspend fun loadChapters(mangaUrl: String, doc: Document): List { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Nimemob.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Nimemob.kt new file mode 100644 index 000000000..2b7f20b5c --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Nimemob.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.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.zeistmanga.ZeistMangaParser + +@MangaSourceParser("NIMEMOB", "Nimemob", "id") +internal class Nimemob(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.NIMEMOB, "www.nimemob.my.id") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ReYume.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ReYume.kt new file mode 100644 index 000000000..a444a9b38 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ReYume.kt @@ -0,0 +1,10 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.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.zeistmanga.ZeistMangaParser + +@MangaSourceParser("REYUME", "ReYume", "id") +internal class ReYume(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.REYUME, "www.re-yume.my.id") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ShiyuraSub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ShiyuraSub.kt index 891a5b018..57be769e2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ShiyuraSub.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ShiyuraSub.kt @@ -2,7 +2,7 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser import org.koitharu.kotatsu.parsers.util.domain @@ -11,7 +11,7 @@ import org.koitharu.kotatsu.parsers.util.parseHtml @MangaSourceParser("SHIYURASUB", "ShiyuraSub", "id") internal class ShiyuraSub(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.SHIYURASUB, "shiyurasub.blogspot.com") { + ZeistMangaParser(context, MangaParserSource.SHIYURASUB, "shiyurasub.blogspot.com") { override val selectTags = ".leading-8 div.my-5.gap-2 a" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Sobatmanku.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Sobatmanku.kt index b4f1f2f20..870c3a947 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Sobatmanku.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/Sobatmanku.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("SOBATMANKU", "Sobatmanku", "id") internal class Sobatmanku(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.SOBATMANKU, "www.sobatmanku19.site") + ZeistMangaParser(context, MangaParserSource.SOBATMANKU, "www.sobatmanku19.cab") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ToonCubus.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ToonCubus.kt index 34b09b30f..b9e509385 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ToonCubus.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/id/ToonCubus.kt @@ -5,14 +5,14 @@ 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.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("TOONCUBUS", "ToonCubus", "id", ContentType.HENTAI) internal class ToonCubus(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.TOONCUBUS, "www.tooncubus.top") { + ZeistMangaParser(context, MangaParserSource.TOONCUBUS, "www.tooncubus.top") { override suspend fun getAvailableTags(): Set { val doc = webClient.httpGet("https://$domain/p/genre-list.html").parseHtml() return doc.select(".dzdes-genre ul li a").mapNotNullToSet { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/AnimeXNovel.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/AnimeXNovel.kt index 296e8267c..dccc99fc4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/AnimeXNovel.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/AnimeXNovel.kt @@ -4,14 +4,14 @@ import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser import org.koitharu.kotatsu.parsers.util.* @MangaSourceParser("ANIMEXNOVEL", "AnimeXNovel", "pt") internal class AnimeXNovel(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.ANIMEXNOVEL, "www.animexnovel.com") { + ZeistMangaParser(context, MangaParserSource.ANIMEXNOVEL, "www.animexnovel.com") { override val sateOngoing: String = "Ativo" override val sateFinished: String = "Completo" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/ElevenScanlator.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/ElevenScanlator.kt index 80857a9b2..80835b0d4 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/ElevenScanlator.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/ElevenScanlator.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("ELEVENSCANLATOR", "ElevenScanlator", "pt") internal class ElevenScanlator(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.ELEVENSCANLATOR, "elevenscanlator.blogspot.com") { + ZeistMangaParser(context, MangaParserSource.ELEVENSCANLATOR, "elevenscanlator.blogspot.com") { override val sateOngoing: String = "Lançando" override val sateFinished: String = "Completo" override val sateAbandoned: String = "Dropado" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GalaxScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GalaxScans.kt index d4de4f428..357519195 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GalaxScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GalaxScans.kt @@ -2,12 +2,12 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser -@MangaSourceParser("GALAXSCANS", "GalaxScans", "pt") +@MangaSourceParser("GALAXSCANS", "GalaxScanlator", "pt") internal class GalaxScans(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.GALAXSCANS, "galaxscans.blogspot.com") { + ZeistMangaParser(context, MangaParserSource.GALAXSCANS, "galaxscanlator.blogspot.com") { override val mangaCategory = "Recentes" override val sateOngoing: String = "Lançando" override val sateFinished: String = "Completo" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GuildaTierDraw.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GuildaTierDraw.kt index cd849f49e..1389e8ab5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GuildaTierDraw.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/GuildaTierDraw.kt @@ -2,7 +2,7 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser import org.koitharu.kotatsu.parsers.util.domain @@ -12,7 +12,7 @@ import org.koitharu.kotatsu.parsers.util.requireElementById @MangaSourceParser("GUILDATIERDRAW", "GuildaTierDraw", "pt") internal class GuildaTierDraw(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.GUILDATIERDRAW, "www.guildatierdraw.com") { + ZeistMangaParser(context, MangaParserSource.GUILDATIERDRAW, "www.guildatierdraw.top") { override suspend fun getAvailableTags(): Set { val doc = webClient.httpGet("https://$domain").parseHtml() diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/HeckScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/HeckScans.kt index 90a12d424..7fa935c7e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/HeckScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/HeckScans.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("HECKSCANS", "HeckScans", "pt") internal class HeckScans(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.HECKSCANS, "heckscans.blogspot.com") + ZeistMangaParser(context, MangaParserSource.HECKSCANS, "heckscans.blogspot.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/Ler999.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/Ler999.kt index 5993c064e..706def51e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/Ler999.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/Ler999.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("LER999", "Ler999", "pt") internal class Ler999(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.LER999, "ler999.blogspot.com") + ZeistMangaParser(context, MangaParserSource.LER999, "ler999.blogspot.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/MaxgsScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/MaxgsScan.kt index 8fddc6981..f645d665c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/MaxgsScan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/MaxgsScan.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("MAXGSSCAN", "MaxgsScan", "pt") internal class MaxgsScan(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.MAXGSSCAN, "www.maxgsscan.online") + ZeistMangaParser(context, MangaParserSource.MAXGSSCAN, "www.maxgsscan.online") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/RaysScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/RaysScan.kt new file mode 100644 index 000000000..2e120fbc5 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/RaysScan.kt @@ -0,0 +1,17 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser + +@MangaSourceParser("RAYSSCAN", "RaysScan", "pt") +internal class RaysScan(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.RAYSSCAN, "raysscan.blogspot.com") { + override val availableStates: Set = emptySet() + override suspend fun getAvailableTags(): Set = emptySet() +} + + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/SolooScan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/SolooScan.kt new file mode 100644 index 000000000..1c25abc77 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/SolooScan.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.pt + +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.zeistmanga.ZeistMangaParser + +@MangaSourceParser("SOLOOSCAN", "SolooScan", "pt") +internal class SolooScan(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.SOLOOSCAN, "solooscan.blogspot.com") { + override val mangaCategory = "Recentes" + override val sateOngoing: String = "Lançando" + override val sateFinished: String = "Completo" + override val sateAbandoned: String = "Dropado" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/TemakiMangas.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/TemakiMangas.kt new file mode 100644 index 000000000..1d212030b --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/TemakiMangas.kt @@ -0,0 +1,17 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.pt + +import org.koitharu.kotatsu.parsers.MangaLoaderContext +import org.koitharu.kotatsu.parsers.MangaSourceParser +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.MangaState +import org.koitharu.kotatsu.parsers.model.MangaTag +import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser + +@MangaSourceParser("TEMAKIMANGAS", "TemakiMangas", "pt") +internal class TemakiMangas(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.TEMAKIMANGAS, "www.temakimangas.xyz") { + override val availableStates: Set = emptySet() + override suspend fun getAvailableTags(): Set = emptySet() +} + + diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/TyrantScans.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/TyrantScans.kt index 25d3e7e47..406ebc212 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/TyrantScans.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/TyrantScans.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("TYRANTSCANS", "TyrantScans", "pt") internal class TyrantScans(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.TYRANTSCANS, "www.tyrantscans.com") + ZeistMangaParser(context, MangaParserSource.TYRANTSCANS, "www.tyrantscans.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/WolfScanBr.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/WolfScanBr.kt index 6268f823a..7c853b931 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/WolfScanBr.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/WolfScanBr.kt @@ -2,9 +2,9 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("WOLFSCANBR", "WolfScanBr", "pt") internal class WolfScanBr(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.WOLFSCANBR, "wolfscanbr.blogspot.com") + ZeistMangaParser(context, MangaParserSource.WOLFSCANBR, "wolfscanbr.blogspot.com") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/YaoiFanClub.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/YaoiFanClub.kt new file mode 100644 index 000000000..f509a92f9 --- /dev/null +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/YaoiFanClub.kt @@ -0,0 +1,14 @@ +package org.koitharu.kotatsu.parsers.site.zeistmanga.pt + +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.zeistmanga.ZeistMangaParser + +@MangaSourceParser("YAOIFANCLUB", "YaoiFanClub", "pt") +internal class YaoiFanClub(context: MangaLoaderContext) : + ZeistMangaParser(context, MangaParserSource.YAOIFANCLUB, "www.yaoifanclub.com") { + override val sateOngoing: String = "Ativo" + override val sateFinished: String = "Completo" + override val sateAbandoned: String = "Dropado" +} diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/ZScanlation.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/ZScanlation.kt index 708163e5f..133d1e680 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/ZScanlation.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/pt/ZScanlation.kt @@ -1,14 +1,16 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser +@Broken @MangaSourceParser("ZSCANLATION", "ZScanlation", "pt", ContentType.HENTAI) internal class ZScanlation(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.ZSCANLATION, "www.zscanlation.com") { + ZeistMangaParser(context, MangaParserSource.ZSCANLATION, "www.zscanlation.com") { override val sateOngoing: String = "Em Lançamento" override val sateFinished: String = "Completo" override val sateAbandoned: String = "Dropado" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/EpikMan.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/EpikMan.kt index c48cab99f..aafeb1767 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/EpikMan.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/EpikMan.kt @@ -2,7 +2,7 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.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.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser import org.koitharu.kotatsu.parsers.util.domain @@ -12,7 +12,7 @@ import org.koitharu.kotatsu.parsers.util.requireElementById @MangaSourceParser("EPIKMAN", "EpikMan", "tr") internal class EpikMan(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.EPIKMAN, "www.epikman.ga") { + ZeistMangaParser(context, MangaParserSource.EPIKMAN, "www.epikman.ga") { override val sateOngoing = "Devam Ediyor" override val sateFinished = "Tamamlandı" override val mangaCategory = "Seri" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/Mikrokosmosfb.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/Mikrokosmosfb.kt index 4559b98e2..f27dd7b98 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/Mikrokosmosfb.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/Mikrokosmosfb.kt @@ -3,7 +3,7 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.tr 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser import org.koitharu.kotatsu.parsers.util.domain @@ -13,7 +13,7 @@ import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow @MangaSourceParser("MIKROKOSMOSFB", "Mikrokosmosfb", "tr", ContentType.HENTAI) internal class Mikrokosmosfb(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.MIKROKOSMOSFB, "mikrokosmosfb.blogspot.com") { + ZeistMangaParser(context, MangaParserSource.MIKROKOSMOSFB, "mikrokosmosfb.blogspot.com") { override val sateOngoing: String = "Devam Ediyor" override val sateFinished: String = "Tamamlandı" override val sateAbandoned: String = "Güncel" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/ShadowCeviri.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/ShadowCeviri.kt index 1aa5412a6..86eefebaf 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/ShadowCeviri.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/ShadowCeviri.kt @@ -3,12 +3,12 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.tr 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser @MangaSourceParser("SHADOWCEVIRI", "ShadowCeviri", "tr", ContentType.COMICS) internal class ShadowCeviri(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.SHADOWCEVIRI, "shadowceviri.blogspot.com") { + ZeistMangaParser(context, MangaParserSource.SHADOWCEVIRI, "shadowceviri.blogspot.com") { override val sateOngoing: String = "Devam Ediyor" override val sateFinished: String = "Tamamlandı" override val sateAbandoned: String = "Güncel" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/SnscoeurTurkey.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/SnscoeurTurkey.kt index e369fa189..f13416317 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/SnscoeurTurkey.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zeistmanga/tr/SnscoeurTurkey.kt @@ -3,7 +3,7 @@ package org.koitharu.kotatsu.parsers.site.zeistmanga.tr 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.site.zeistmanga.ZeistMangaParser import org.koitharu.kotatsu.parsers.util.domain @@ -13,7 +13,7 @@ import org.koitharu.kotatsu.parsers.util.selectFirstOrThrow @MangaSourceParser("SNSCOEURTURKEY", "SnscoeurTurkey", "tr", ContentType.HENTAI) internal class SnscoeurTurkey(context: MangaLoaderContext) : - ZeistMangaParser(context, MangaSource.SNSCOEURTURKEY, "snscoeurturkey.blogspot.com") { + ZeistMangaParser(context, MangaParserSource.SNSCOEURTURKEY, "snscoeurturkey.blogspot.com") { override val sateOngoing: String = "Güncel" override val sateFinished: String = "Final" override val sateAbandoned: String = "Düzenleniyor" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zh/Baozimh.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zh/Baozimh.kt index 9fd414208..41b3ca88a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zh/Baozimh.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zh/Baozimh.kt @@ -12,11 +12,10 @@ import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.util.* import org.koitharu.kotatsu.parsers.util.json.mapJSON import java.util.* -import kotlin.collections.HashSet @MangaSourceParser("BAOZIMH", "Baozimh", "zh") internal class Baozimh(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.BAOZIMH, pageSize = 36) { + PagedMangaParser(context, MangaParserSource.BAOZIMH, pageSize = 36) { override val availableSortOrders: Set = EnumSet.of(SortOrder.POPULARITY) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/ZMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/ZMangaParser.kt index 50ea68a7e..fdbff1ff5 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/ZMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/ZMangaParser.kt @@ -14,7 +14,7 @@ import java.util.* internal abstract class ZMangaParser( context: MangaLoaderContext, - source: MangaSource, + source: MangaParserSource, domain: String, pageSize: Int = 16, ) : PagedMangaParser(context, source, pageSize) { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/Hensekai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/Hensekai.kt index f64027767..f2a074b18 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/Hensekai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/Hensekai.kt @@ -1,14 +1,16 @@ package org.koitharu.kotatsu.parsers.site.zmanga.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.ContentType -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zmanga.ZMangaParser -import java.util.Locale +import java.util.* +@Broken @MangaSourceParser("HENSEKAI", "Hensekai", "id", ContentType.HENTAI) internal class Hensekai(context: MangaLoaderContext) : - ZMangaParser(context, MangaSource.HENSEKAI, "hensekai.com") { + ZMangaParser(context, MangaParserSource.HENSEKAI, "hensekai.com") { override val sourceLocale: Locale = Locale.ENGLISH } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/KomikIndoInfo.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/KomikIndoInfo.kt index 075c8d079..7a71f2964 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/KomikIndoInfo.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/KomikIndoInfo.kt @@ -3,11 +3,11 @@ package org.koitharu.kotatsu.parsers.site.zmanga.id 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.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zmanga.ZMangaParser @MangaSourceParser("KOMIKINDO_INFO", "KomikIndo.info", "id", ContentType.HENTAI) internal class KomikIndoInfo(context: MangaLoaderContext) : - ZMangaParser(context, MangaSource.KOMIKINDO_INFO, "komikindo.info") { + ZMangaParser(context, MangaParserSource.KOMIKINDO_INFO, "komikindo.info") { override val datePattern = "dd MMM yyyy" } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/MaidId.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/MaidId.kt index e583cc67c..856dac94a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/MaidId.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/MaidId.kt @@ -4,7 +4,7 @@ import org.jsoup.nodes.Document import org.koitharu.kotatsu.parsers.MangaLoaderContext import org.koitharu.kotatsu.parsers.MangaSourceParser import org.koitharu.kotatsu.parsers.model.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zmanga.ZMangaParser import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl import org.koitharu.kotatsu.parsers.util.generateUid @@ -15,7 +15,7 @@ import java.text.SimpleDateFormat // Info: Some scans are password-protected @MangaSourceParser("MAID_ID", "MaidId", "id") internal class MaidId(context: MangaLoaderContext) : - ZMangaParser(context, MangaSource.MAID_ID, "www.maid.my.id") { + ZMangaParser(context, MangaParserSource.MAID_ID, "www.maid.my.id") { override suspend fun getChapters(doc: Document): List { val dateFormat = SimpleDateFormat(datePattern, sourceLocale) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/ShiroDoujin.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/ShiroDoujin.kt index fc8f58b71..f1ba19ece 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/ShiroDoujin.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/zmanga/id/ShiroDoujin.kt @@ -5,7 +5,7 @@ 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.MangaChapter -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.site.zmanga.ZMangaParser import org.koitharu.kotatsu.parsers.util.attrAsRelativeUrl import org.koitharu.kotatsu.parsers.util.generateUid @@ -15,7 +15,7 @@ import java.text.SimpleDateFormat @MangaSourceParser("SHIRO_DOUJIN", "ShiroDoujin", "id", ContentType.HENTAI) internal class ShiroDoujin(context: MangaLoaderContext) : - ZMangaParser(context, MangaSource.SHIRO_DOUJIN, "shirodoujin.com") { + ZMangaParser(context, MangaParserSource.SHIRO_DOUJIN, "shirodoujin.com") { override suspend fun getChapters(doc: Document): List { val dateFormat = SimpleDateFormat(datePattern, sourceLocale) diff --git a/src/test/kotlin/org/koitharu/kotatsu/parsers/AuthCheckExtension.kt b/src/test/kotlin/org/koitharu/kotatsu/parsers/AuthCheckExtension.kt index 83dc24b39..8b3617636 100644 --- a/src/test/kotlin/org/koitharu/kotatsu/parsers/AuthCheckExtension.kt +++ b/src/test/kotlin/org/koitharu/kotatsu/parsers/AuthCheckExtension.kt @@ -3,7 +3,7 @@ package org.koitharu.kotatsu.parsers import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.extension.BeforeAllCallback import org.junit.jupiter.api.extension.ExtensionContext -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.util.runCatchingCancellable class AuthCheckExtension : BeforeAllCallback { @@ -11,10 +11,7 @@ class AuthCheckExtension : BeforeAllCallback { private val loaderContext: MangaLoaderContext = MangaLoaderContextMock override fun beforeAll(context: ExtensionContext) { - for (source in MangaSource.entries) { - if (source == MangaSource.LOCAL || source == MangaSource.DUMMY) { - continue - } + for (source in MangaParserSource.entries) { val parser = loaderContext.newParserInstance(source) if (parser is MangaParserAuthProvider) { checkAuthorization(source, parser) @@ -22,7 +19,7 @@ class AuthCheckExtension : BeforeAllCallback { } } - private fun checkAuthorization(source: MangaSource, parser: MangaParserAuthProvider) = runTest { + private fun checkAuthorization(source: MangaParserSource, parser: MangaParserAuthProvider) = runTest { runCatchingCancellable { parser.getUsername() }.onSuccess { username -> diff --git a/src/test/kotlin/org/koitharu/kotatsu/parsers/CommonHeadersInterceptor.kt b/src/test/kotlin/org/koitharu/kotatsu/parsers/CommonHeadersInterceptor.kt index 17c296a1a..d0bd4494e 100644 --- a/src/test/kotlin/org/koitharu/kotatsu/parsers/CommonHeadersInterceptor.kt +++ b/src/test/kotlin/org/koitharu/kotatsu/parsers/CommonHeadersInterceptor.kt @@ -3,18 +3,23 @@ package org.koitharu.kotatsu.parsers import okhttp3.Interceptor import okhttp3.Request import okhttp3.Response +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.util.domain import org.koitharu.kotatsu.parsers.util.mergeWith private const val HEADER_REFERER = "Referer" -internal class CommonHeadersInterceptor() : Interceptor { +internal class CommonHeadersInterceptor : Interceptor { override fun intercept(chain: Interceptor.Chain): Response { val request = chain.request() val source = request.tag(MangaSource::class.java) - val parser = source?.let { MangaLoaderContextMock.newParserInstance(it) } + val parser = if (source is MangaParserSource) { + MangaLoaderContextMock.newParserInstance(source) + } else { + null + } val sourceHeaders = parser?.headers val headersBuilder = request.headers.newBuilder() if (sourceHeaders != null) { diff --git a/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt b/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt index 8ca1f8a2e..bdb66622a 100644 --- a/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt +++ b/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt @@ -19,7 +19,7 @@ internal class MangaParserTest { @ParameterizedTest(name = "{index}|list|{0}") @MangaSources - fun list(source: MangaSource) = runTest(timeout = timeout) { + fun list(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) val list = parser.getList(0, null) checkMangaList(list, "list") @@ -28,7 +28,7 @@ internal class MangaParserTest { @ParameterizedTest(name = "{index}|pagination|{0}") @MangaSources - fun pagination(source: MangaSource) = runTest(timeout = timeout) { + fun pagination(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) val page1 = parser.getList(0, filter = null) val page2 = parser.getList(page1.size, filter = null) @@ -48,7 +48,7 @@ internal class MangaParserTest { @ParameterizedTest(name = "{index}|search|{0}") @MangaSources - fun search(source: MangaSource) = runTest(timeout = timeout) { + fun search(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) val subject = parser.getList( offset = 0, @@ -76,7 +76,7 @@ internal class MangaParserTest { @ParameterizedTest(name = "{index}|tags|{0}") @MangaSources - fun tags(source: MangaSource) = runTest(timeout = timeout) { + fun tags(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) val tags = parser.getAvailableTags() assert(tags.isNotEmpty()) { "No tags found" } @@ -105,7 +105,7 @@ internal class MangaParserTest { @ParameterizedTest(name = "{index}|tags_multiple|{0}") @MangaSources - fun tagsMultiple(source: MangaSource) = runTest(timeout = timeout) { + fun tagsMultiple(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) if (!parser.isMultipleTagsSupported) return@runTest val tags = parser.getAvailableTags().shuffled().take(2).toSet() @@ -120,7 +120,7 @@ internal class MangaParserTest { @ParameterizedTest(name = "{index}|locale|{0}") @MangaSources - fun locale(source: MangaSource) = runTest(timeout = timeout) { + fun locale(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) val locales = parser.getAvailableLocales() if (locales.isEmpty()) { @@ -142,7 +142,7 @@ internal class MangaParserTest { @ParameterizedTest(name = "{index}|details|{0}") @MangaSources - fun details(source: MangaSource) = runTest(timeout = timeout) { + fun details(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) val list = parser.getList(0, null) val manga = list[3] @@ -172,7 +172,7 @@ internal class MangaParserTest { @ParameterizedTest(name = "{index}|pages|{0}") @MangaSources - fun pages(source: MangaSource) = runTest(timeout = timeout) { + fun pages(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) val list = parser.getList(0, null) val manga = list.first() @@ -196,7 +196,7 @@ internal class MangaParserTest { @ParameterizedTest(name = "{index}|favicon|{0}") @MangaSources - fun favicon(source: MangaSource) = runTest(timeout = timeout) { + fun favicon(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) val favicons = parser.getFavicons() val types = setOf("png", "svg", "ico", "gif", "jpg", "jpeg") @@ -212,7 +212,7 @@ internal class MangaParserTest { @ParameterizedTest(name = "{index}|domain|{0}") @MangaSources - fun domain(source: MangaSource) = runTest(timeout = timeout) { + fun domain(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) val defaultDomain = parser.domain val url = HttpUrl.Builder().host(defaultDomain).scheme("https").toString() @@ -228,7 +228,7 @@ internal class MangaParserTest { @ParameterizedTest(name = "{index}|authorization|{0}") @MangaSources @Disabled - fun authorization(source: MangaSource) = runTest(timeout = timeout) { + fun authorization(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) if (parser is MangaParserAuthProvider) { val username = parser.getUsername() diff --git a/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaSources.kt b/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaSources.kt index ef660faa0..3b5081f5c 100644 --- a/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaSources.kt +++ b/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaSources.kt @@ -1,7 +1,8 @@ package org.koitharu.kotatsu.parsers import org.junit.jupiter.params.provider.EnumSource -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.junit.jupiter.params.provider.EnumSource.Mode.EXCLUDE +import org.koitharu.kotatsu.parsers.model.MangaParserSource -@EnumSource(MangaSource::class, names = ["LOCAL", "DUMMY"], mode = EnumSource.Mode.EXCLUDE) +@EnumSource(MangaParserSource::class, names = ["DUMMY"], mode = EXCLUDE) internal annotation class MangaSources diff --git a/src/test/kotlin/org/koitharu/kotatsu/test_util/Util.kt b/src/test/kotlin/org/koitharu/kotatsu/test_util/Util.kt index d044fed0a..986336ef6 100644 --- a/src/test/kotlin/org/koitharu/kotatsu/test_util/Util.kt +++ b/src/test/kotlin/org/koitharu/kotatsu/test_util/Util.kt @@ -3,7 +3,7 @@ package org.koitharu.kotatsu.test_util import androidx.collection.ArraySet import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import org.koitharu.kotatsu.parsers.model.Manga -import org.koitharu.kotatsu.parsers.model.MangaSource +import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.RATING_UNKNOWN import org.koitharu.kotatsu.parsers.util.toRelativeUrl @@ -53,7 +53,7 @@ inline operator fun List.component6(): T = get(5) @Suppress("NOTHING_TO_INLINE") inline operator fun List.component7(): T = get(6) -fun mangaOf(source: MangaSource, url: String): Manga { +fun mangaOf(source: MangaParserSource, url: String): Manga { val httpUrl = url.toHttpUrlOrNull() var id = 1125899906842597L source.name.forEach { c -> id = 31 * id + c.code }