diff --git a/README.md b/README.md index 3c0eebad..a7c3c858 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 b51f4bb0..f5883e5f 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 b4d83434..e83d9827 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 ec303d60..4ec426dc 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 892d749c..b7a2144e 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 c5eaeb9e..d7cde2cd 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 739637f5..51333a0a 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 5868bb8f..3d38152a 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 4fe74421..37c2d1d4 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 00000000..20a481f4 --- /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 1d6d60d6..49445d21 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 68b3a9d1..e3261211 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 73bd8ff1..28e8956f 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 7d3a7f2a..f304474f 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 8160cd15..262a3c93 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 a946d0f0..c6818f09 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 67acf346..328e6c79 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 77b7e35f..b586fcd4 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 28cdfc86..a41f31bc 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 ba5e9a16..d9ae470d 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 b25e338b..3848b6f3 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 5d136283..c94d6ec8 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 1d06e03d..48389595 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 64730052..6e7569a7 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 4f9115c3..b87818cc 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 d82508d5..edb06554 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 7278e961..8e47eb77 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 4912109e..1a8fcfa5 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 574cba24..4e0c30de 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 74ed7c70..4d42eac2 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 dc0f301b..83eb7d25 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 0322983b..acd37422 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 3df028ac..5f56e0cb 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 00000000..2f2eb6b0 --- /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 00000000..1c6ad80a --- /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 00000000..c5222923 --- /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 00000000..67b163ed --- /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 00000000..607d5676 --- /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 00000000..0fbb3d2f --- /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 00000000..ad61f7c4 --- /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 00000000..0fd9795c --- /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 2f819f5f..2e3d84d2 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 58636336..246178f9 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 11d246d1..fc46dbae 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 e8d52f1b..e5786013 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 07629010..4854ca3f 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 a3212738..80b332a5 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 4353adca..837367a6 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 3556c697..c9e02c00 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 5ddee824..d6936293 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 e571fa47..f9ff1cb4 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 ccc3ceb3..cee1551e 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 7c88841b..dd2c70b6 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 a3fa9090..2c437996 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 @@ -23,21 +23,18 @@ 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 private val JSON_MEDIA_TYPE get() = "application/json; charset=utf-8".toMediaType() @MangaSourceParser("REAPERCOMICS", "ReaperComics", "en") internal class ReaperComics(context: MangaLoaderContext) : - PagedMangaParser(context, MangaSource.REAPERCOMICS, pageSize = 32) { + PagedMangaParser(context, MangaParserSource.REAPERCOMICS, pageSize = 32) { override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.ALPHABETICAL) 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() @@ -159,9 +156,9 @@ internal class ReaperComics(context: MangaLoaderContext) : keys.add(userAgentKey) } - private fun chapterListNextPageSelector(): String = "button[wire:click*=nextPage]" + private val chapterListNextPageSelector: String = "button[wire:click*=nextPage]" - private fun chapterListSelector() = "div[wire:id] > div > ul[role=list] > li" + private val chapterListSelector: String = "div[wire:id] > div > ul[role=list] > li" override suspend fun getDetails(manga: Manga): Manga { val cachedChapters = chapterCache[manga.url] @@ -171,17 +168,18 @@ internal class ReaperComics(context: MangaLoaderContext) : val doc = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml() val simpleDateFormat = SimpleDateFormat("dd/MM/yyyy", sourceLocale) - var totalChapters = (doc.selectFirst(selectTotalChapter)?.text()?.toIntOrNull() ?: 0) - 1 + var totalChapters = (doc.selectFirst(selectTotalChapter)?.text()?.toFloatOrNull() ?: 0f) - 1f val chapters = mutableSetOf() - var hasNextPage = doc.selectFirst(chapterListNextPageSelector()) != null + var hasNextPage = doc.selectFirst(chapterListNextPageSelector) != null chapters.addAll( - doc.select(chapterListSelector()).mapChapters { _, li -> + doc.select(chapterListSelector).mapChapters { _, li -> val a = li.selectFirstOrThrow("a") val chapterUrl = a.attr("href").toRelativeUrl(domain) MangaChapter( id = generateUid(chapterUrl), name = li.selectFirst("div.truncate p.truncate")?.text().orEmpty(), number = totalChapters--, + volume = 0, url = chapterUrl, scanlator = null, uploadDate = parseChapterDate( @@ -219,7 +217,7 @@ internal class ReaperComics(context: MangaLoaderContext) : var pageToQuery = 2 // Javascript: (Math.random() + 1).toString(36).substring(8) - val generateId = { -> + val generateId = { "1.${ Random.nextLong().toString(36) }".substring(10) @@ -249,13 +247,14 @@ internal class ReaperComics(context: MangaLoaderContext) : serverMemo = mergeLeft(serverMemo, responseData.serverMemo) val chaptersHtml = Jsoup.parse(responseData.effects.html, "https://$domain") chapters.addAll( - chaptersHtml.select(chapterListSelector()).mapChapters { _, li -> + chaptersHtml.select(chapterListSelector).mapChapters { _, li -> val a = li.selectFirstOrThrow("a") val chapterUrl = a.attr("href").toRelativeUrl(domain) MangaChapter( id = generateUid(chapterUrl), name = li.selectFirst("div.truncate p.truncate")?.text().orEmpty(), number = totalChapters--, + volume = 0, url = chapterUrl, scanlator = null, uploadDate = parseChapterDate( @@ -267,7 +266,7 @@ internal class ReaperComics(context: MangaLoaderContext) : ) }, ) - hasNextPage = chaptersHtml.selectFirst(chapterListNextPageSelector()) != null + hasNextPage = chaptersHtml.selectFirst(chapterListNextPageSelector) != null pageToQuery++ } 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 55fa2013..ffe7be3a 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 9a7cb14c..8be6f769 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 581e1ce5..b2a1b72d 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 79420961..d6044a8c 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 d81619bd..e519f50d 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 4255761b..39892edb 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 98aac571..86bdc064 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 b15bf8c9..b3a7869b 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 7c6b12ec..25e59e41 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 d54fc621..32f2f1c2 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 b27e14a3..bddf4ac4 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 ecd1d289..a21779f7 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 6bd2bcf8..bce51116 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 f05eeec1..be7218fc 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 90802ac7..da9bc20f 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 261a6fba..bfa7741c 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 d8a5f3ef..0eae608d 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 39f6844d..eeca13a3 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 cc0a6906..8b146607 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 5aee24f1..413759b6 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 f747b227..45104ff8 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 676a5a2f..9f5ce683 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 05318126..165c6637 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 9b68da1f..09c51c23 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 0cb1eebc..5df1d608 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 00000000..c16b7643 --- /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 f2bd90d0..6f106e34 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 6661c220..f46b20eb 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 e4b70d0b..a9e23f6c 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 b4e4b771..4219efb2 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 cc06c554..03c8ce2a 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 832a689b..aed6ed58 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 ef469c05..d71a21f0 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 dccc423c..af2565c5 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 5fec4f3e..5b22bdac 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 45972561..e61d9b90 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 16d5864a..cbe1f5be 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 b9860795..9edfb7c9 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 80bb6a6b..9fb5d11a 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 5589ea89..04bd383d 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 febe8c2f..b05a8067 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 e187ec7a..4f1c354c 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 f728442d..a7a52ee8 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 66f59eef..9a4943d2 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 bfbdf762..77b9ca05 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 80fe6fda..a49cf2f5 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 6dff7ee6..28cc6293 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 42625374..42f3a05a 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 415dd427..4968b05b 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 14ab5753..2869155c 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 8fc5adbe..627f5b1c 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 8e37063d..e3d48ef9 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 6688d165..d09c8349 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 d1a1b764..69c46421 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 f2318dbf..838d44ed 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 7a0e781d..572ddecb 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 13648f5d..d17e0d18 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 62f933da..3dec2abd 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 4dfa52e1..2c95a59a 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 e9d2632f..6d8a155c 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 5713c483..3fc1cd40 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 45be8dbd..7fbfe235 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 f12c8d0f..6b0dc7b5 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 00000000..e5f08ddc --- /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 00000000..aa4de090 --- /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 00000000..2d6f28c8 --- /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 00000000..d924bb23 --- /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 00000000..2cd4767a --- /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 00000000..808be40c --- /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 00000000..32e97180 --- /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 00000000..d3c45731 --- /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 00000000..f56af7df --- /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 1a8047b5..9db6de11 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 e47ebce9..dab783e5 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 f811530f..87612cb6 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 9a06fd7e..7963ba78 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 9f066899..757a6590 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 e170dc75..fa31a886 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 14c74b92..f347a932 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 d784353f..0994d059 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 1ee299a8..ee37c30c 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 43e73628..acfd17df 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 61678718..2421dfca 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 1c698669..341880d1 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 531d372e..f3cd19b9 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 20122a20..45fc1865 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 00000000..cb5a2053 --- /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 cfc9a59c..7dc2cd10 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 b9a00eeb..90da2ec8 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 af0368f6..5fa44186 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 38a10da0..a6b65aac 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 445212ba..f2f0c0d7 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 85d9c1e4..1c83869c 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 92962e89..b082ab81 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 7fff70af..a87f303e 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 d0986c9b..9d5fe469 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 00000000..3511435b --- /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 97ab9bcd..d644ee71 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 e46dae85..aaaeb5ae 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 a86074f5..82849864 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 a3b0f0bb..3c19c072 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 0cfcac11..afabfff8 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 6ec8ab74..bf80f861 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 3f4e9af1..dbd451b3 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 633875d3..73e6af7f 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 f8ddc69e..e3703054 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 c8636810..ec7eba39 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 70f7a747..41ae4833 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 1a2e61cc..be0696cc 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 c740cf07..efdfc107 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 4e88df6c..a31197c9 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 7da847e1..778cf644 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 fb7f57d2..6327ae36 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 c3cc0a3a..288e23c3 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 b99e4dc6..5223d700 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 00000000..1012ee2c --- /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 00000000..a8b1906d --- /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 c0b7016b..12e2def8 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 f6551ba3..d7704f97 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 ca24cf07..38c68ffb 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 873935df..e07045bc 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 d5926397..c4bd2ae5 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 b0cdb999..3b8a0a58 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 00000000..07dd077c --- /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 2376762a..40afb5b0 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 873a120c..88455c20 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 974f08d2..50707f55 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 906979b7..a5ce4354 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 403ad762..675c771c 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 bb952008..fe30391d 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 3d860d18..c988c13e 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 764bdc62..225d4c1a 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 bef57810..cb8ecd8c 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 9839720d..565b36a0 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 df35f85d..5c919e83 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 1bddea49..2a12a92f 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 38b5bc13..168e4b51 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 efcc96dc..bb4b127d 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 bb887174..22888edb 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 c103b195..4141ff2a 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 704795cb..2d5c18ed 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 2ed02980..6fb98f0b 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 00000000..04865b7e --- /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 381ccb65..a2536dc2 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 8d5a2ef1..8b3a4488 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 d416da6a..00c8d071 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 5eeb4175..5e8bff77 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 280a74ec..a6e4e7e6 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 154359f7..ef709b98 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 08c155f9..6f40805d 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 cc599731..770b4287 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 bd4c2877..6d38b9e4 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 2968cd7b..b9d8b0d7 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 3676ab24..7ff70f2e 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 bd5b7a47..8f310435 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 00000000..0a590286 --- /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 cd2fd322..b8318882 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 668d94cb..b78962c5 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 8ad77e57..21544a05 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 3c54c490..02201592 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 faa03117..0c9e1d93 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 f94715f1..98a2fd43 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 fe316e42..91a065b5 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 9e4112f4..a1aa1878 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 63ee2dd6..4e414009 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 68209c7f..82eb204b 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 6b993c35..dc722c45 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 fa34b9fd..f6ab03ff 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 202b6144..49c7c292 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 793211c5..4b74804a 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 57c373d4..8ec12306 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 ae8fdd93..72452456 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 1c3a8155..800344f7 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 d09fd39c..07c0d099 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 1ced914c..4e9c97c7 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 fdcec31e..b519596f 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 676f8727..fc4a2361 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 bf1edc59..8f96c34d 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 fae05d37..573844e2 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 0e9b75ac..d2314a72 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 4dbaab62..5c2aabee 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 1286488d..b6b89795 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 b8c80b29..398f7928 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 ee2a0b33..89149440 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 443c3f0c..c11d0530 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 36a2e9c3..2d756b1e 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 1efcdef8..8bfaf8a9 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 ec138de6..7444d0d4 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 3dd415ae..319ccecf 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 dd5e4844..7c1107a2 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 7804c87f..1ac88b4a 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 fc8db58c..85568b9d 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 448317e5..2ced20dc 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 00000000..cd1e4f64 --- /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 bf363e1e..382feefd 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 c8b40da0..5f3e6ceb 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 c62bc159..5816311f 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 fe9e0862..dd73977b 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 6ce10d5e..1a6b04da 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 d32e6649..e21a2550 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 fd968be7..9fab0554 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 97efac87..4ec40353 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 7b538a0f..43a44e07 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 3611c6b0..9bdd0bba 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 336782c8..9a370f59 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 30d441ac..3e5c2e20 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 c0e1e4e7..ec942392 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 0399d566..f9f2a286 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 89a6359f..ee0ca528 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 249195c9..cdfe1ba1 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 a404bedc..8cc358f0 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 43c943d0..9a39b9e4 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 5f97f57a..2cf91423 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 2a2a08d2..e64d599d 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 268e55a8..03bf8274 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 fe54bce3..ede2623e 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 00000000..6fe79976 --- /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 e7dd856d..bfacc059 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 1c5a489a..941b7082 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 78044cf5..11a641ff 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 00000000..56253d1d --- /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 948a2bc8..b9ac128b 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 ef5c7b82..ad88ee5c 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 b40f5b72..0d109281 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 4fe251cc..48df7d25 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 4649118e..f5debf78 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 251efd67..f3b625c7 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 957da691..41cd06b3 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 15a749ad..66171da9 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 7e7b3878..de656ace 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 9132cf79..1c0b3a1f 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 daa8091e..1986778d 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 80cf8fe9..bfe85725 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 a4f3ed01..98e9ef15 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 10691108..9f3b67e6 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 168e5a42..9d8d21bb 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 2880265c..6892f1e6 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 09d6cf31..2d54dbc0 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 1cadb31b..f6dcc7cf 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 dcb39863..75079d18 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 e1813372..665f9d2d 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 fcbb01d3..fe6c261f 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 0bf2457f..551b2092 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 34674071..80878417 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 1e577369..3765d011 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 47bdd570..f32517ec 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 66e2333d..4d700a23 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 3484f3df..eda11aa4 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 21e838b8..1f50d481 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 5a460adc..4c24fc11 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 78129fc3..f8d092ac 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 0b2c6e13..4c1fc66e 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 e9d6eaff..af965a9b 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 fe144bdd..f45fe034 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 4e3640df..fe4c6697 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 a4a8a311..c39c264f 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 6ee8e0e4..5cd2d0fa 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 f6b862ea..5b9e3e6b 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 338c2f49..ab1c9a52 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 72d96198..7da9e1a8 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 3ca23d5a..1b736cd0 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 d60d434a..d0b6dddb 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 0cfa5107..9d06a486 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 5a0dbedf..d3f07d92 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 a5d20296..c8fc4b92 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 4368de94..0e33fa1a 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 2abb29c9..00000000 --- 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 2a561a90..b31a4201 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 3774e6da..35138f32 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 27387633..66bde7ef 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 22d99766..644c8225 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 15954058..b82477f5 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 b9a1fcfb..de5b689c 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 46d3b76a..c2f48b66 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 cd541746..fc72435b 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 9ad4b242..247e265c 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 ba1013ba..fa1ddf92 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 f9f71bbf..15071077 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 78cd2c76..95f7deeb 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 c8c9e409..08128228 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 facfc6ea..f9c37d12 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 6f5e3ae4..f68974b3 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 6e936113..fb1b5d6f 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 18f3c2e3..a956ccb6 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 1937b275..c1889c05 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 03b3e57c..d683a16b 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 310ed409..107ecd3a 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 d1b143bb..f11747cc 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 00000000..20f0551d --- /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 37cae7f2..6c3a9d67 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 00000000..33f1f3b4 --- /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 13b71d42..d2f661d2 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 38e44dfb..51d95316 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 19d2db24..34a8e9bc 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 afa28aaf..3e0645fb 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 2dae3155..fa8b31d3 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 d3f74c20..157056f4 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 aa73d7b3..f129f851 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 0965e9d0..b1768a5e 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 febb9201..af1e7b94 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 4f3c4afd..992f7f32 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 86a8ea12..27aceadc 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 00000000..0b0491f3 --- /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 e8f73622..1405587a 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 77c26044..cbf9b97c 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 51bf62b4..c7f87fe7 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 5572e728..987eaa9a 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 42afd6a3..8de6c32e 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 01ea7b87..e97b9fcd 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 00000000..0f4b83e6 --- /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 d3d8e0cf..16361fa4 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 f8694d06..ea29c04c 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 56e6e408..0997c387 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 00000000..8997cede --- /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 00000000..4fc6708f --- /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 00000000..b48a34f6 --- /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 00000000..b743cbb0 --- /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 c240eb40..5dbc7747 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 995b8c0b..e6876f1a 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 8fb7eccc..432fd949 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 0ea5505f..7754f5a2 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 7120cda9..2d84a54a 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 0922afe7..22c728f8 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 8b9edb4a..12c3cf40 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 0a24fa42..cda599a9 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 6e769aca..353e9d64 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 00000000..b023e5de --- /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 e15dccfa..b50f133d 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 f8f589d2..72e248e5 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 fff0fdbb..d72abd5d 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 00000000..7645372a --- /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 539f96b1..134a8322 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 82596c66..90f0043b 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 16bfa7bb..44077227 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 00000000..484787e3 --- /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 00000000..a64a44f6 --- /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 00000000..b7cdb2c8 --- /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 302b46d2..9dba1ce9 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 26facc80..9b245018 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 a60e028e..64a1ddc1 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 cad3a6df..0d1c0709 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 ed3ab820..868043c6 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 76dfcbbd..1954bb45 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 e26fe4f8..10254486 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 2bbbcab4..5104b89f 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 658eca5a..6ecc83be 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 9ef0d056..7f38beb3 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 4d737e2f..567a922d 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 9d24fff8..6f5c21b1 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 c45b0023..c1529aa2 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 30c546d6..0a2127c0 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 3b015999..93d945a0 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 00000000..6c5f781a --- /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 6eaf62d8..dd22ebd8 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 7b852406..d47789f1 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 48b58636..8f175c4a 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 f41074f7..21f5aa56 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 4462e6f7..5b4471e9 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 00000000..4ce4b204 --- /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 4ef13872..90f04a3f 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 94030238..bb067dfb 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 6ccdaf2c..30ffc78a 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 8e18d93b..546a4de2 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 5e9a8be1..b1ffbfbf 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 00000000..84dec32c --- /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 271c2bfe..57495982 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 a308437b..9765a70c 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 79ef1fd5..11b645eb 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 00000000..dfe5c5aa --- /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 3893d6db..43fadcbc 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 24435d70..7512d7a7 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 e087042c..176424b3 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 434e6251..ad51623a 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 36b650dc..c1b25732 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 00000000..cc7a365e --- /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 563d3a05..1c666dd5 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 abfbd96a..488b89c7 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 00000000..313c58a7 --- /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 1a10bc90..3c59cef4 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 be5edd61..4e719ea3 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 fa78dcaf..4eb6091a 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 a5072140..876c9511 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 bedfade9..032663f4 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 4b0182c3..2a15422c 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 28e1f71a..dfdb12a0 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 040a1fbe..3b9794ec 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 49ae6c1a..309872fb 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 0f1a33ea..a2800cae 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 fac63c64..1e12d442 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 a9f1640d..ccd49d29 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 a28a4c69..77c6b0da 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 00000000..ad58a3f6 --- /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 ea88c6c9..fcd6f866 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 a172385e..5d0c8e82 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 8c96e8e7..df1f2680 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 75bf6e6e..406f4cc5 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 a1b53cd7..9d96a77a 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 894d2db7..bc2e33b7 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 596acb46..de1081f8 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 5cf93d8e..338bcfd9 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 b198ef63..58e37bc2 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 72390f6f..0d089a2f 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 43e2d309..ebcdada9 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 b911c32b..ebf9af46 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 00000000..3d18ba7f --- /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 00000000..6becb892 --- /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 00000000..cee2681d --- /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 5f55f35d..5d0c836a 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 00000000..8f1a790f --- /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 00000000..47b97083 --- /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 cf80860b..5784208c 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 00000000..7e88141f --- /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 00000000..d5495eba --- /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 e2f2cd6a..78d1abb8 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 00000000..caf8bc30 --- /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 d4a69525..7cc48a44 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 00000000..b67ff8c1 --- /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 549f6ccf..070906ca 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 d340bcec..d19f7a42 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 75208640..834a1702 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 c35a1291..9a64f03f 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 7cc0f886..6dc642a7 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 993701db..2f3dfd1f 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 709d92e2..90952a59 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 d2c75cab..ba482fe3 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 aedd45ea..3ec87380 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 00000000..6d85679d --- /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 00000000..3a1dba16 --- /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 cdd1de86..f0ef0a97 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 794130f1..d25ac9d3 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 00000000..6be81132 --- /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 62b0d7ba..d51539c1 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 573e11a5..bd4ed95f 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 063c8200..33e8b7fe 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 9e91a1d8..162b9ec3 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 1c4facdf..e93718c5 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 80cc6979..fe600f3c 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 8d4f467c..40fe4224 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 b75748e1..51165a1e 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 cb48a452..2f6b5525 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 0571f2bd..0d55e02f 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 d6b4384d..22e0871f 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 b43c7c73..34ef2cf1 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 20be0e9a..70aee8ad 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 00000000..c3debd9d --- /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 df95e73a..aec03a63 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 00000000..282066f1 --- /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 1b31392d..e6472e56 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 00000000..d86dc01f --- /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 bafd2bac..f2129e8b 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 ef51e7ce..9a21058c 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 00000000..4c53c842 --- /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 161019d9..a4e9c067 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 44e67909..1356b291 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 ee612055..ed4ffdb6 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 d0877738..e55f7416 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 b7586f18..0ab3e403 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 0c810c0b..79ac806a 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 00000000..63800d73 --- /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 36d58242..1334b7d7 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 1ca548c3..c9b48bd4 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 4d46f546..1acacde0 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 16b4f573..93df8952 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 72e48837..45ec457a 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 00000000..808383f4 --- /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 9d5f7568..66909a11 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 f52d9e6c..14e596c1 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 f056d7aa..7da846dd 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 eae48305..d30666fa 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 d1ee428a..c3377e8e 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 d7ce724b..304a0c22 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 676fc7c5..825194f5 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 2b218f32..2be74bef 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 1ed35685..b338ddc4 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 570852a0..57b3faf9 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 a2a78fb8..1859d967 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 db34ac18..d1cb5c39 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 b8606d0d..d49ce43d 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 c919c70f..18d23640 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 fdf1ac87..8a509768 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 b37cf2ea..54e2e1c9 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 671b5ed1..df735e7b 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 649ffb0b..c35d979a 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 64a723d9..4f6c8cb6 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 7e974ecc..e59423cd 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 41546d94..05c4b5e3 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 00000000..4fca33ef --- /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 2a239d7a..b85826d8 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 4475f3b4..afc73f08 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 124b7dd8..bb64fb63 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 613dc3fd..2fb8c874 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 2856b814..5a61118e 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 e423dcdb..f7b13447 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 7004358a..d5f4deef 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 e629b19e..efe45e37 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 bc92bda5..19e8a035 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 9a0330fc..512e1062 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 72091d1f..34b7b743 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 0473a81e..86543755 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 72331a51..d5b2b561 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 082c87a8..679b9466 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 aae8df42..f1419856 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 d401bfd1..652a6c4c 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 7e96baec..2720b7ec 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 31d30593..1293bec9 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 0540db00..f6e45fd8 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 ae95a8cf..232b8e51 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 16c681eb..4624705b 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 ca3a11d6..ed60b153 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 22c93016..0a11797b 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 51feafcb..3be23c31 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 d3efe3fd..7670acc3 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 00000000..6b742b62 --- /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 25049df8..bf1dd979 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 00000000..9d7a418f --- /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 71a2b386..a6b0d370 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 952be460..61e66bfe 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 c6777651..7de55000 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 00000000..f3c801d5 --- /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 2d3a2b78..30e0c1c5 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 f640d06e..436e4367 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 00000000..2d6524fa --- /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 d049c9e3..51e57752 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 b3b5d085..ca651995 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 98a1ddea..f79fbbef 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 00000000..a17eaa13 --- /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 00000000..7f92bf4e --- /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 9b655a5b..f70678a1 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 00000000..49359663 --- /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 00000000..0cbe3edb --- /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 bf9086f4..e80afae6 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 7e3ec7d7..f9d44222 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 f5e65be5..5d9d1a1b 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 f32721cb..55138f9f 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 e538cb98..a5f445c3 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 3cd51a0d..13bbbb54 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 3f4b2f28..efdeaf16 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 0057ff43..e3f50d6a 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 00000000..d6cdb672 --- /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 0d47636f..b711faa1 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 47a0021f..99d411d1 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 9cb51fc3..9b2a8229 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 1d952c28..36a7f862 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 00000000..49c2256d --- /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 00000000..28eed399 --- /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 2bb2ca6e..4556c5d0 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 46e102df..cc5da761 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 00000000..c909f756 --- /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 00000000..88551056 --- /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 38e0b841..2b14077d 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 dc5bd39d..90809a63 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 cb95b7c2..aee80460 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 a231e839..2712c770 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 664d5236..00000000 --- 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 d77ea002..a65b84c3 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 999430e1..4c66f304 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 f84c5642..7410088a 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 b18ca40b..266c37b6 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 cf03402b..59b9468c 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 1fc3a923..497d3e28 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 c316eb13..934b00ba 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 00000000..2f4d559d --- /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 18ded601..45cd820b 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 00000000..78bd3f23 --- /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 00000000..7b5c4e96 --- /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 95826023..2b62099a 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 0bfb8363..c157298b 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 00000000..6768eeb3 --- /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 eff20ff1..e07e439f 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 1d181c9a..e661e64d 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 beba7c85..32b1cedc 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 00000000..4ae86213 --- /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 5aff0c7a..2595158e 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 c4ace344..aed6beb6 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 0c4febe6..0a8b5312 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 909099a1..dba7aa3d 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 a6e4c65f..7836790f 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 2f863cf4..02f46231 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 9645918d..f3e86d06 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 f8eda1e5..f510acb0 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 ce84137b..c343b8ca 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 9d1dadf1..cd29c461 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 34aa29ea..f3dbd46a 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 ef25c4b7..7bb3d198 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 db67959e..0b6cb0b7 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 3c8255ed..e89be803 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 29ec2725..9c5b9bb2 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 71a72bc8..53c29f7c 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 4aee808c..b0b32888 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 febfb707..c807c854 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 8c8101dc..7d6cc59c 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 6e2e0895..6181d3af 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 ba27313c..a887ab0b 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 fb56dc68..71065ded 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 23efaaba..41ca257d 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 5c1f6ced..c6cac7e0 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 09d7f52c..9e95a365 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 061a0736..da550d59 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 0a0e4583..a41005c3 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 d41ddcc0..f19436a8 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 03b90a28..e29b64b2 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 2f601428..de43b01d 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 29f37e6e..2e7eb86a 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 670c6ed9..41986b3c 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 8c68cae7..03e49c17 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 88af3687..00000000 --- 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 0c203a5d..3abdc190 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 7e382908..0d7e342c 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 9639f6fa..590ebf7c 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 713dcbf8..20f4885a 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 a3d2cede..79a3ebde 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 1d1d7a8a..3d8cdb84 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 00000000..b6596c37 --- /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 542c1d76..340004e2 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 00000000..3435fbda --- /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 745f7840..97944d11 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 98596d94..c10eb11b 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 d559cccd..9e108cc8 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 400fa3f1..d47e5dc4 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 266c73cb..e19efbc1 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 035325e1..cd10379a 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 f1ea3938..c5678f7d 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 d0f660eb..57688f76 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 5b7342dc..1840e369 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 aef8f554..cf511e41 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 22dc1a4e..3a04d0f5 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 f3d2c391..3b0214d2 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 5b89a08d..00000000 --- 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 bdc26ee7..3f851c5d 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 12f17b2d..118ddbee 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 9e639f32..e5d664a2 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 82b52c20..9913898a 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 9efbd389..dadf6b07 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 424ac9b0..0d47dd63 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 e39965bb..fff0f3a1 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 50f97088..182db24b 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 00000000..c8a20a21 --- /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 00000000..53cc8f8f --- /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 fcdc78d5..b926e299 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 8020b4d8..0d818b51 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 f02dffa3..dfb0bdb8 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 00000000..1cba6e1f --- /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 56af7aca..8621ea76 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 608eb9dd..87b4972c 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 abe68373..b2411952 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 d257c6ca..536ee42e 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 c72749f8..af7220b3 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 71a7c636..b4697867 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 89e0b69f..f4d0bcde 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 1bd0be33..ca89c2f5 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 00000000..763eb44c --- /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 d52dc06d..46b8a8f1 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 aa37348e..949c229b 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 5c0b7b6f..f2d802dd 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 dc92cf66..58994fa0 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 2db6792a..9f3ae73e 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 ba440e74..b27d5ef0 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 c425e03b..eae66a89 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 d8f24d6d..81df05a8 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 28fd53b8..336616e8 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 696caab3..34e0617d 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 27ecfe51..c7b124bf 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 00000000..f5ccd7e9 --- /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 c0f1659f..37dbdc85 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 00000000..f60e5629 --- /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 bd1d73d2..698eace8 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 00000000..b1cebee2 --- /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 ef0edfa4..06b97082 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 00000000..dfc74821 --- /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 f4c59f0e..e6c505d1 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 c1d45ed4..94945bce 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 97292a2d..72325ae2 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 00000000..6b41a448 --- /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 904df894..b9667d4d 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 00000000..05e25419 --- /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 00000000..edf630c7 --- /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 77d85d70..929d0a2d 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 00000000..f3c54129 --- /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 d15a0ec7..2a7f3154 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 00000000..056fbde3 --- /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 00000000..6dec4109 --- /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 9b7ad34e..3f97cdd5 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 00000000..2f679c7d --- /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 6270faa5..503f9c7a 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 7852b9db..00000000 --- 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 9ddb6559..36f24d81 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 76ac9611..2c89a7fb 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 7dfb79ab..9e728a6f 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 e9b36dea..ec072992 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 f7f6c035..345587fe 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 1c76b521..db1365fe 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 d680febc..cd7fef00 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 f024d1d5..8462106a 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 c8ace111..eb6cb7f9 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 c584280d..1314b7cd 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 00000000..db54e5cf --- /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 1499434b..0f451225 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 00000000..a9b5c6fe --- /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 1c24d6d4..db51bb7f 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 6f796bd7..dc0ff249 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 00000000..4a7b65df --- /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 09a46ab8..04c616af 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 e13da636..0bd6e5e0 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 00000000..da94e929 --- /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 00000000..f2dc8868 --- /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 c19fac46..11b3d28a 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 b578e9f7..8bfbb508 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 dbd2a9f3..6dd9acf8 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 00000000..3aeb4ff4 --- /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 b316b025..e7147838 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 14eb6d13..2c76813d 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 00000000..87bc87fe --- /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 00000000..53271669 --- /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 1188be18..34f550f0 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 c7f9fa4d..81b98120 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 1a5a6636..ae9a58dc 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 055e9051..025aed41 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 498e0dd1..81878798 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 0231e8bd..3b89b14d 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 f09b86af..2fe7e8a0 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 89cbc0fe..2aa19173 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 362166cd..7e3b483c 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 0e3df1d5..3414b12c 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 00000000..65727cc7 --- /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 618a6c74..c3ee1621 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 0d420e44..7b4f2cb1 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 1912bd61..49bfa587 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 00000000..37fae116 --- /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 280ad6e8..53b368ff 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 10b5efbc..98144cc0 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 00000000..f9b1b23f --- /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 00000000..4ddaeed3 --- /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 00000000..06c085b9 --- /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 83e67f13..05a8c428 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 06ce1e97..c7f614c7 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 6a5eef33..ed02edcb 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 eec44203..f0792ad9 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 c2d196ab..d62f377d 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 929f15d4..51c63a5c 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 7bc57fad..94013dc3 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 00000000..beb2f3fd --- /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 cbe38470..731593c0 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 6762e182..e69d264b 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 76fe6abe..05f61f85 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 4d015da4..164deca4 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 33e09073..c7cbc2d0 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 fb2f5c58..a357e077 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 f9ef893a..d23da43f 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 11402b80..778a9a4d 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 0e806718..66db6bc9 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 240694db..56189459 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 cbe942fa..2f66c234 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 00000000..9185128c --- /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 67ced62e..7eb9d7f7 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 c7560816..0cd393c2 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 6c98aed3..1ed808c3 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 eaa14fcb..de88bbc9 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 75f6e159..720c0ba3 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 cf7e1ccd..44ae2566 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 00000000..87775108 --- /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 2f05e06a..c82223bf 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 d740f40c..bdcb708f 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 d310ec5c..86f07d7c 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 2c0c3e0f..9ff7640c 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 6a7870cc..50b05c2a 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 4ef92805..49e3fde5 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 4e5234cd..93fc1f25 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 5dddf7ac..6f019f0b 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 41abf927..c5ee615b 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 883d9dc1..3561099f 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 25b37697..15e29255 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 ac9b2bfd..e1c233d4 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 e0de2e09..812364f7 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 2cab6a21..19099b78 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 a0d60c93..5e93db63 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 6ee6922f..e4ab18c3 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 4b814bfa..4c739ad6 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 7899ae75..6430cccf 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 28c127d2..695e80ca 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 00000000..bd37dbdf --- /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 936a9c45..ee05ebb5 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 d9338878..e63f5608 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 aa21c9c9..ce840f0b 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 7e15c5d4..40ff0319 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 cf9d04b2..0305b196 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 8e448ee8..9255486d 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 443ff174..09ef5854 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 d3da2de1..568cc1a6 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 939f396c..30657c90 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 7e73d0ec..59a765b8 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 52c39a75..4d62b9c5 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 00000000..59e55dee --- /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 00000000..7a84e7e9 --- /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 88624017..600cea5d 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 be7218ce..92223d6e 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 fdb47a6a..5a576982 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 00000000..ba12c809 --- /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 5c97dbf8..f2b469cf 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 7d70e6de..0baf8b1f 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 f5b9f15d..7b3a0831 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 00000000..6c43f394 --- /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 b96e6463..55159826 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 fcacac5e..d25cbe91 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 00000000..29401b44 --- /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 9ecb7b3c..e80e63ad 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 8566245c..bd8f3016 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 40596eaa..4e8baf8f 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 82ac2cd4..0acbf991 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 00000000..7e22381b --- /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 cec60ace..cdbd1900 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 7e01e65a..4e1c7990 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 00000000..16f5da2e --- /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 00000000..f5b12810 --- /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 9c9b7907..328008ad 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 00000000..1d46e727 --- /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 55ef140a..1d0fd2bd 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 2e0a50aa..191b2b29 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 02e3ba83..0dc672f4 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 00000000..93fdb837 --- /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 8f693181..a4d35d2a 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 33307b84..383bb62b 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 8bd5715a..049d3f86 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 2f17473a..00000000 --- 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 9c5217a9..00000000 --- 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 c9c40c91..a58a49b0 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 0d5a1bfe..47c0d79f 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 ff11971e..cd11712c 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 6a839b13..9e4ffbc5 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 00000000..cc4b835a --- /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 d29d33a6..3bce709c 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 33084929..8cae6550 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 00000000..8197e495 --- /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 00000000..d2b01d91 --- /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 00000000..b83bcf4b --- /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 39c41793..2f9f9acd 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 93b07e3e..92de4866 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 2a1db1ea..89b9565b 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 ee00c4ab..fc24b6ee 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 00000000..663a4289 --- /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 cbbde2c4..6199ad6e 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 787f2bcb..814b7dd9 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 83a6cc90..fa4de1e5 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 2be915ee..c6041019 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 42940823..45201025 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 727f748a..aac1938b 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 cdbc705a..89365e19 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 4923fdcc..ac1c288a 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 6d4afecc..b6ba8755 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 9eff63b8..b94c7689 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 fbdfda88..2c5e94d9 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 e0202bfd..62a8ad5e 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 00000000..39ff2bee --- /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 40ab7585..4db7839b 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 5a22aba5..5e3e39cf 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 d382c4b0..b8739c64 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 fbeedb14..da3d070b 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 f0a0bfa7..d6624bc6 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 c1dda728..af7fe80e 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 079c1d3f..bd00031c 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 6c1fb6d9..73f86fac 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 3bca7eca..b9380d8e 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 00000000..65cd6e1d --- /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 00000000..f4493287 --- /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 00000000..1a5cb2c9 --- /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 00000000..43bfec0c --- /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 00000000..92d51271 --- /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 00000000..3694a017 --- /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 00000000..85de3227 --- /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 00000000..80480a70 --- /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 00000000..e61b4b11 --- /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 00000000..c49d0bed --- /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 00000000..463daff4 --- /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 00000000..4a57ee52 --- /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 00000000..ae63027e --- /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 00000000..54aec70f --- /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 00000000..91381d39 --- /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 00000000..ca4fad58 --- /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 00000000..a6e59d80 --- /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 00000000..cff3eac7 --- /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 00000000..6509b66f --- /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 00000000..17960a1f --- /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 00000000..b595c664 --- /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 00000000..8b8faefa --- /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 00000000..3fc24697 --- /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 00000000..2b985590 --- /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 00000000..84f5ecbf --- /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 8d454c84..6ca8477f 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 d9e5bd4d..ecf09018 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 1ac2f863..a0c36bda 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 95635d74..bd136ef9 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 94a0636e..d2cbd9e4 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 98b759fd..1af667cb 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 9ebaf226..0ff66ce0 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 3c7ff7cb..39f0c5ae 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 92496c43..aafc35e0 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 abf5bcfb..b4bce1f6 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 5f60138d..a294a57d 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 1558df4b..48e07630 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 422374e1..70c73063 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 b33d8eca..1dff1b2d 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 8ec4910d..ef3ce359 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 57419ca4..6cf999f7 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 3dc110c3..595377b2 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 32102ffc..28a51de2 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 00c31540..3e75d2ec 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 63238ba8..27b1715f 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 fe981656..10b5930a 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 7f81b051..70d34bac 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 376fae75..e4c9e4dd 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 560d5424..7ccb441e 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 205225d1..12d34b47 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 423fec3f..ac322363 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 173c699c..eb9816e2 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 6bd59bc5..2e0e0926 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 9e38105e..a43f51f4 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 c14b9d76..9c9b05eb 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 f1293a9a..2a1aaedc 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 1d389058..8eb2c5d3 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 092d95e3..e0ffe765 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 b81aa404..c4f3fe3e 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 bfea325a..5780bef3 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 0250440e..a697bff2 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 828f8077..5731b17f 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 00000000..880abf9d --- /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 00000000..44f8c2b0 --- /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 41e367d7..682482cc 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 00000000..8e1a1d5c --- /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 27997be0..6f47278d 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 00000000..c86c94b4 --- /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 00000000..fdf00f2e --- /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 aa4d116b..d029f159 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 9596e5b0..10b9f514 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 c835ce83..5be7dc0a 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 837d0e65..ab86836e 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 9c5a9d62..f9d949ce 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 370a1492..871d63dd 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 d681cc0b..4900d8b6 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 38f2bb55..1d2d0fb7 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 99799bd1..2ba8d291 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 f5bee237..da074f2e 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 d5ea7409..ee35a0d6 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 98669335..83cc2381 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 03acef75..cca21337 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 e8c1effe..00000000 --- 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 807fcf51..8c05fa80 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 69b9c256..719338ea 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 5d44a9f0..547d1b9b 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 09dec909..ddc48d68 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 4105aed5..a20f8545 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 e3bfafc0..e3b5eacd 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 00000000..d07a7c87 --- /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 0a8d6e6c..101ef545 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 c4bbdbb1..00000000 --- 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 00000000..6530654f --- /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 2006b791..00000000 --- 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 e3d7ef96..2ba778ec 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 00000000..c4a45b9c --- /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 3d68b2ae..c48da9be 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 c33e7657..53b281c8 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 09aee8ab..35ae299d 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 00000000..ee37fee5 --- /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 6a7fda21..39fb41a0 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 73286ad6..2f5d91b4 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 df81ea01..0305ef2c 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 4a215049..0d0eca8f 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 2e495365..340f84c6 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 5df9353e..f8b028ed 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 00000000..41e97c2f --- /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 00000000..21981007 --- /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 7af12841..8bff2e3e 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 00000000..e4c9ceac --- /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 00000000..30cb77d3 --- /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 2ff408b6..1a0a4178 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 9f01c030..43014bca 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 a0109594..bd3a6cee 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 cdf6b503..89f91daa 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 9b8072ce..7ae0d8cc 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 00000000..2b7f20b5 --- /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 00000000..a444a9b3 --- /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 891a5b01..57be769e 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 b4f1f2f2..870c3a94 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 34b09b30..b9e50938 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 296e8267..dccc99fc 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 80857a9b..80835b0d 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 d4de4f42..35751919 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 cd849f49..1389e8ab 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 90a12d42..7fa935c7 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 5993c064..706def51 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 8fddc698..f645d665 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 00000000..2e120fbc --- /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 00000000..1c25abc7 --- /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 00000000..1d212030 --- /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 25d3e7e4..406ebc21 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 6268f823..7c853b93 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 00000000..f509a92f --- /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 708163e5..133d1e68 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 c48cab99..aafeb176 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 4559b98e..f27dd7b9 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 1aa5412a..86eefeba 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 e369fa18..f1341631 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 9fd41420..41b3ca88 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 50ea68a7..fdbff1ff 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 f6402776..f2a074b1 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 075c8d07..7a71f296 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 e583cc67..856dac94 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 fc8f58b7..f1ba19ec 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 83dc24b3..8b361763 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 17c296a1..d0bd4494 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 8ca1f8a2..bdb66622 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 ef660faa..3b5081f5 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 d044fed0..986336ef 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 }