diff --git a/.gitignore b/.gitignore index e1ffa440..56a91252 100644 --- a/.gitignore +++ b/.gitignore @@ -82,3 +82,4 @@ bin/ src/test/resources/cookies.txt local.properties +.kotlin/ diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt index 445992be..e6894333 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/MangaParser.kt @@ -68,7 +68,7 @@ public abstract class MangaParser @InternalParsersApi constructor( * @param order one of [availableSortOrders] or [defaultSortOrder] for default value * @param filter is a set of filter rules */ - public abstract suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List + public abstract suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List /** * Parse details for [Manga]: chapters list, description, large cover, etc. diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/PagedMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/PagedMangaParser.kt index 205f4058..20dff242 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/PagedMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/PagedMangaParser.kt @@ -2,7 +2,7 @@ package org.koitharu.kotatsu.parsers import androidx.annotation.VisibleForTesting import org.koitharu.kotatsu.parsers.model.Manga -import org.koitharu.kotatsu.parsers.model.MangaListFilterV2 +import org.koitharu.kotatsu.parsers.model.MangaListFilter import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.SortOrder import org.koitharu.kotatsu.parsers.util.Paginator @@ -21,7 +21,7 @@ public abstract class PagedMangaParser( @JvmField protected val searchPaginator: Paginator = Paginator(searchPageSize) - final override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List { + final override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List { return getList( paginator = if (filter.query.isNullOrEmpty()) { paginator @@ -34,13 +34,13 @@ public abstract class PagedMangaParser( ) } - public abstract suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List + public abstract suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List private suspend fun getList( paginator: Paginator, offset: Int, order: SortOrder, - filter: MangaListFilterV2, + filter: MangaListFilter, ): List { val page = paginator.getPage(offset) val list = getListPage(page, order, filter) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/SinglePageMangaParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/SinglePageMangaParser.kt index 78f78f14..6e2425af 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/SinglePageMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/SinglePageMangaParser.kt @@ -1,7 +1,7 @@ package org.koitharu.kotatsu.parsers import org.koitharu.kotatsu.parsers.model.Manga -import org.koitharu.kotatsu.parsers.model.MangaListFilterV2 +import org.koitharu.kotatsu.parsers.model.MangaListFilter import org.koitharu.kotatsu.parsers.model.MangaParserSource import org.koitharu.kotatsu.parsers.model.SortOrder @@ -11,12 +11,12 @@ public abstract class SinglePageMangaParser( source: MangaParserSource, ) : MangaParser(context, source) { - final override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List { + final override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List { if (offset > 0) { return emptyList() } return getList(order, filter) } - public abstract suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List + public abstract suspend fun getList(order: SortOrder, filter: MangaListFilter): List } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilterV2.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilter.kt similarity index 90% rename from src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilterV2.kt rename to src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilter.kt index 044b4f84..a90a9169 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilterV2.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilter.kt @@ -2,7 +2,7 @@ package org.koitharu.kotatsu.parsers.model import java.util.* -public data class MangaListFilterV2( +public data class MangaListFilter( @JvmField val query: String? = null, @JvmField val tags: Set = emptySet(), @JvmField val tagsExclude: Set = emptySet(), @@ -33,6 +33,6 @@ public data class MangaListFilterV2( public companion object { @JvmStatic - public val EMPTY: MangaListFilterV2 = MangaListFilterV2() + public val EMPTY: MangaListFilter = MangaListFilter() } } diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilterCapabilities.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilterCapabilities.kt index 40a98a83..33427f2a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilterCapabilities.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilterCapabilities.kt @@ -6,44 +6,44 @@ public data class MangaListFilterCapabilities @InternalParsersApi constructor( /** * Whether parser supports filtering by more than one tag - * @see [MangaListFilterV2.tags] + * @see [MangaListFilter.tags] * @see [MangaListFilterOptions.availableTags] */ - val isMultipleTagsSupported: Boolean, + val isMultipleTagsSupported: Boolean = false, /** * Whether parser supports tagsExclude field in filter - * @see [MangaListFilterV2.tagsExclude] + * @see [MangaListFilter.tagsExclude] * @see [MangaListFilterOptions.availableTags] */ - val isTagsExclusionSupported: Boolean, + val isTagsExclusionSupported: Boolean = false, /** * Whether parser supports searching by string query - * @see [MangaListFilterV2.query] + * @see [MangaListFilter.query] */ - val isSearchSupported: Boolean, + val isSearchSupported: Boolean = false, /** * Whether parser supports searching by string query combined within other filters */ - val isSearchWithFiltersSupported: Boolean, + val isSearchWithFiltersSupported: Boolean = false, /** * Whether parser supports searching/filtering by year - * @see [MangaListFilterV2.year] + * @see [MangaListFilter.year] */ val isYearSupported: Boolean = false, /** * Whether parser supports searching by year range - * @see [MangaListFilterV2.yearFrom] and [MangaListFilterV2.yearTo] + * @see [MangaListFilter.yearFrom] and [MangaListFilter.yearTo] */ val isYearRangeSupported: Boolean = false, /** * Whether parser supports searching Original Languages - * @see [MangaListFilterV2.originalLocale] + * @see [MangaListFilter.originalLocale] * @see [MangaListFilterOptions.availableLocales] */ val isOriginalLocaleSupported: Boolean = false, diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilterOptions.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilterOptions.kt index bc546fba..6dbc69ee 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilterOptions.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/model/MangaListFilterOptions.kt @@ -8,7 +8,7 @@ public data class MangaListFilterOptions @InternalParsersApi constructor( /** * Available tags (genres) */ - public val availableTags: Set, + public val availableTags: Set = emptySet(), /** * Supported [MangaState] variants for filtering. May be empty. 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 a5153675..1d4a1ed5 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 @@ -65,10 +65,6 @@ internal class BatoToParser(context: MangaLoaderContext) : PagedMangaParser( isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -122,7 +118,7 @@ internal class BatoToParser(context: MangaLoaderContext) : PagedMangaParser( "zbato.org", ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { when { !filter.query.isNullOrEmpty() -> { return search(page, filter.query) 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 d6a61a63..c514ea49 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 @@ -41,10 +41,7 @@ internal class ComickFunParser(context: MangaLoaderContext) : isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, isYearRangeSupported = true, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -61,7 +58,7 @@ internal class ComickFunParser(context: MangaLoaderContext) : availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val domain = domain val url = urlBuilder() .host("api.$domain") 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 14775d93..07583572 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 @@ -55,10 +55,6 @@ internal class ExHentaiParser( isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override val isAuthorized: Boolean @@ -87,10 +83,6 @@ internal class ExHentaiParser( override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = tagsMap.get().values.toSet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), availableLocales = setOf( Locale.JAPANESE, Locale.ENGLISH, @@ -110,7 +102,7 @@ internal class ExHentaiParser( ), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val next = nextPages.get(page, 0L) if (page > 0 && next == 0L) { @@ -431,7 +423,7 @@ internal class ExHentaiParser( ?.toLongOrNull() ?: 1 } - private fun MangaListFilterV2.toSearchQuery(): String? { + private fun MangaListFilter.toSearchQuery(): String? { val joiner = StringUtil.StringJoiner(" ") for (tag in tags) { if (tag.key.isNumeric()) { 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 0cee01ae..7c7f32b5 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 @@ -73,15 +73,11 @@ internal class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), availableLocales = localeMap.keys, ) @@ -122,7 +118,7 @@ internal class HitomiLaParser(context: MangaLoaderContext) : MangaParser(context private var cachedSearchIds: List = emptyList() - override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List = when { + override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List = when { filter.query.isNullOrEmpty() -> { if (filter.tags.isEmpty()) { when (order) { 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 29c1c49e..fb5262b7 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 @@ -25,9 +25,7 @@ internal class ImHentai(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -45,7 +43,7 @@ internal class ImHentai(context: MangaLoaderContext) : override suspend fun getListPage( page: Int, order: SortOrder, - filter: MangaListFilterV2, + filter: MangaListFilter, ): List { val url = buildString { append("https://") 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 040affdf..98ab058a 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 @@ -25,16 +25,11 @@ internal abstract class LineWebtoonsParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) private val signer by lazy { @@ -147,7 +142,7 @@ internal abstract class LineWebtoonsParser( } } - override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List { val manga = when { !filter.query.isNullOrEmpty() -> { makeRequest("/lineWebtoon/webtoon/searchChallenge?query=${filter.query.urlEncoded()}&startIndex=${offset + 1}&pageSize=20") 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 e525f369..2d21c9b9 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 @@ -64,7 +64,7 @@ internal class MangaDexParser(context: MangaLoaderContext) : MangaParser(context ) } - override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List { val domain = domain val url = buildString { append("https://api.") 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 9ecb7174..bf9f148b 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 @@ -76,10 +76,6 @@ internal abstract class MangaFireParser( isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -91,7 +87,7 @@ internal abstract class MangaFireParser( availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = "https://$domain/filter".toHttpUrl().newBuilder().apply { addQueryParameter("page", page.toString()) addQueryParameter("language[]", siteLang) 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 c1629144..8783e9f3 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 @@ -26,10 +26,6 @@ internal class MangaPark(context: MangaLoaderContext) : isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -73,7 +69,7 @@ internal class MangaPark(context: MangaLoaderContext) : context.cookieJar.insertCookies(domain, "nsfw", "2") } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 51d7d26e..601e5092 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 @@ -42,21 +42,14 @@ internal abstract class MangaPlusParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() private val extraHeaders = Headers.headersOf("Session-Token", UUID.randomUUID().toString()) - override suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(order: SortOrder, filter: MangaListFilter): List { return when { filter.query.isNullOrEmpty() -> { when (order) { 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 465bbba2..034e740d 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 @@ -71,12 +71,7 @@ internal class MangaReaderToParser(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -88,7 +83,7 @@ internal class MangaReaderToParser(context: MangaLoaderContext) : availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = "https://$domain".toHttpUrl().newBuilder().apply { when { !filter.query.isNullOrEmpty() -> { 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 db76a5f7..d1f14a25 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 @@ -45,10 +45,6 @@ internal abstract class NineMangaParser( isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -73,7 +69,7 @@ internal abstract class NineMangaParser( return chain.proceed(newRequest) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 b1dae8d3..c0f90105 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 @@ -36,21 +36,11 @@ internal class NineNineNineHentaiParser(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), availableLocales = setOf( Locale.ENGLISH, Locale.CHINESE, @@ -118,7 +108,7 @@ internal class NineNineNineHentaiParser(context: MangaLoaderContext) : } } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { return if (filter.query.isNullOrEmpty()) { if (filter.tags.isEmpty() && order == SortOrder.POPULARITY) { getPopularList(page, filter.locale) 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 84f40273..f86b1090 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 @@ -49,10 +49,7 @@ internal abstract class WebtoonsParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override val userAgentKey = ConfigKey.UserAgent("nApps (Android 12;; linewebtoon; 3.1.0)") @@ -192,7 +189,7 @@ internal abstract class WebtoonsParser( } - override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List { val webtoons = when { !filter.query.isNullOrEmpty() -> { makeRequest("/lineWebtoon/webtoon/searchWebtoon?query=${filter.query.urlEncoded()}").getJSONObject("webtoonSearch") 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 31b42c2d..f0c440e1 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 @@ -42,25 +42,14 @@ internal abstract class AnimeBootstrapParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 b845ffc5..9beffb8d 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 @@ -28,7 +28,7 @@ internal class PapScan(context: MangaLoaderContext) : SortOrder.ALPHABETICAL_DESC, ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 dbf55810..0a80545f 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 @@ -24,12 +24,7 @@ internal class FlixScans(context: MangaLoaderContext) : PagedMangaParser(context override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -46,7 +41,7 @@ internal class FlixScans(context: MangaLoaderContext) : PagedMangaParser(context keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val json = when { !filter.query.isNullOrEmpty() -> { if (page > 1) { 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 cc5daa77..23328529 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 @@ -19,17 +19,10 @@ internal class MangaStorm(context: MangaLoaderContext) : PagedMangaParser(contex override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() override val userAgentKey = ConfigKey.UserAgent(UserAgents.CHROME_DESKTOP) @@ -38,7 +31,7 @@ internal class MangaStorm(context: MangaLoaderContext) : PagedMangaParser(contex keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 a152a121..23461a6b 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 @@ -27,13 +27,7 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -45,7 +39,7 @@ internal class TeamXNovel(context: MangaLoaderContext) : PagedMangaParser(contex availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 285e8979..357cce50 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 @@ -28,15 +28,11 @@ internal class AnibelParser(context: MangaLoaderContext) : MangaParser(context, override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -48,7 +44,7 @@ internal class AnibelParser(context: MangaLoaderContext) : MangaParser(context, SortOrder.NEWEST, ) - override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List { val filters = when { !filter.query.isNullOrEmpty() -> { return if (offset == 0) { 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 index d0e70af3..6dac79be 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/CupFoxParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/cupfox/CupFoxParser.kt @@ -29,13 +29,7 @@ internal abstract class CupFoxParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -47,7 +41,7 @@ internal abstract class CupFoxParser( availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 index 5d35c656..7f27b748 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/AsuraScansParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/AsuraScansParser.kt @@ -30,12 +30,7 @@ internal class AsuraScansParser(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -52,7 +47,7 @@ internal class AsuraScansParser(context: MangaLoaderContext) : keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 cc0cc7e4..9d118d96 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 @@ -24,25 +24,14 @@ internal class BeeToon(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 c9a31a5e..f0b7f1a2 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 @@ -20,24 +20,17 @@ internal class CloneMangaParser(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() override fun onCreateConfig(keys: MutableCollection>) { super.onCreateConfig(keys) keys.add(userAgentKey) } - override suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(order: SortOrder, filter: MangaListFilter): List { if (!filter.query.isNullOrEmpty()) { return emptyList() } 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 72bac265..c9824aae 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 @@ -23,10 +23,7 @@ internal class ComicExtra(context: MangaLoaderContext) : PagedMangaParser(contex override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -40,7 +37,7 @@ internal class ComicExtra(context: MangaLoaderContext) : PagedMangaParser(contex keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 dc5da390..3bd3708e 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 @@ -27,16 +27,11 @@ internal class DynastyScans(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -44,7 +39,7 @@ internal class DynastyScans(context: MangaLoaderContext) : keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { when { !filter.query.isNullOrEmpty() -> { val url = buildString { 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 38beb32d..dd07d84f 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 @@ -25,9 +25,6 @@ internal class FlixScansOrg(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, - isSearchSupported = false, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -41,7 +38,7 @@ internal class FlixScansOrg(context: MangaLoaderContext) : keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val json = when { !filter.query.isNullOrEmpty() -> { throw IllegalArgumentException(ErrorMessages.SEARCH_NOT_SUPPORTED) 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 d7c248cb..f6f253ce 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 @@ -21,16 +21,11 @@ internal class MangaGeko(context: MangaLoaderContext) : PagedMangaParser(context override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -38,7 +33,7 @@ internal class MangaGeko(context: MangaLoaderContext) : PagedMangaParser(context keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaKawaiiEn.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaKawaiiEn.kt index a5ba583e..676e0955 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaKawaiiEn.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/MangaKawaiiEn.kt @@ -22,16 +22,11 @@ internal class MangaKawaiiEn(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -43,7 +38,7 @@ internal class MangaKawaiiEn(context: MangaLoaderContext) : .add("Accept-Language", "en") .build() - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 7ecabca5..4539cfd5 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 @@ -30,10 +30,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -45,7 +42,7 @@ internal class MangaTownParser(context: MangaLoaderContext) : availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 98057d14..c11bf064 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 @@ -33,12 +33,7 @@ internal class Mangaowl(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -58,7 +53,7 @@ internal class Mangaowl(context: MangaLoaderContext) : override suspend fun getListPage( page: Int, order: SortOrder, - filter: MangaListFilterV2, + filter: MangaListFilter, ): List { val url = buildString { append("https://") 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 ec549315..fafd8113 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 @@ -36,7 +36,6 @@ internal class Manhwa18Parser(context: MangaLoaderContext) : isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -58,7 +57,7 @@ internal class Manhwa18Parser(context: MangaLoaderContext) : ) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 4dd978ef..64ed63f2 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 @@ -26,10 +26,7 @@ internal class ManhwasMen(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -41,7 +38,7 @@ internal class ManhwasMen(context: MangaLoaderContext) : override suspend fun getListPage( page: Int, order: SortOrder, - filter: MangaListFilterV2, + filter: MangaListFilter, ): List { val url = buildString { append("https://") 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 171d6869..a13cae0b 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 @@ -17,24 +17,17 @@ internal class Po2Scans(context: MangaLoaderContext) : SinglePageMangaParser(con override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() override fun onCreateConfig(keys: MutableCollection>) { super.onCreateConfig(keys) keys.add(userAgentKey) } - override suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 b21969e9..c91c0367 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 @@ -24,16 +24,11 @@ internal class Pururin(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -41,7 +36,7 @@ internal class Pururin(context: MangaLoaderContext) : keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/VyManga.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/VyManga.kt index a9a9c15d..aab04fbd 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/VyManga.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/en/VyManga.kt @@ -34,10 +34,7 @@ internal class VyManga(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -46,7 +43,7 @@ internal class VyManga(context: MangaLoaderContext) : availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 321e6184..ae3b7de2 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 @@ -27,26 +27,11 @@ internal class TempleScanEsp(context: MangaLoaderContext) : } override val filterCapabilities: MangaListFilterCapabilities - get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, - isSearchSupported = false, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, - ) + get() = MangaListFilterCapabilities() - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 3499ff76..30ff75ce 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 @@ -41,18 +41,15 @@ internal class TuMangaOnlineParser(context: MangaLoaderContext) : PagedMangaPars override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), availableContentRating = EnumSet.of(ContentRating.SAFE, ContentRating.ADULT), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 c5821da6..a99b10c9 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 @@ -44,10 +44,6 @@ internal abstract class FmreaderParser( isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) init { @@ -88,7 +84,7 @@ internal abstract class FmreaderParser( availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 d4dddc46..c3134873 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 @@ -22,7 +22,7 @@ internal class Manhwa18Com(context: MangaLoaderContext) : override val selectPage = "div#chapter-content img" override val selectBodyTag = "div.advanced-wrapper .genre_label" - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 3c4d98c5..547aed23 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 @@ -21,7 +21,7 @@ internal class OlimpoScans(context: MangaLoaderContext) : isTagsExclusionSupported = false, ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 94584aed..131401be 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 @@ -34,13 +34,7 @@ internal abstract class FoolSlideParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) init { @@ -48,16 +42,9 @@ internal abstract class FoolSlideParser( searchPaginator.firstPage = 1 } - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val doc = when { !filter.query.isNullOrEmpty() -> { if (page > 1) { 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 58c60e99..108e5b27 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 @@ -47,7 +47,6 @@ internal class BentomangaParser(context: MangaLoaderContext) : isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -56,7 +55,7 @@ internal class BentomangaParser(context: MangaLoaderContext) : availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = urlBuilder() .host(domain) .addPathSegment("manga_list") 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 bfd9f2ad..dc6170a8 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 @@ -25,18 +25,9 @@ internal class FuryoSociety(context: MangaLoaderContext) : override val userAgentKey = ConfigKey.UserAgent(UserAgents.CHROME_DESKTOP) override val filterCapabilities: MangaListFilterCapabilities - get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, - isSearchSupported = false, - isSearchWithFiltersSupported = false, - ) + get() = MangaListFilterCapabilities() - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() override fun onCreateConfig(keys: MutableCollection>) { super.onCreateConfig(keys) @@ -52,7 +43,7 @@ internal class FuryoSociety(context: MangaLoaderContext) : ) } - override suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 78a41089..37eecc83 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 @@ -22,9 +22,7 @@ internal class LegacyScansParser(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -38,7 +36,7 @@ internal class LegacyScansParser(context: MangaLoaderContext) : keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val end = page * pageSize val start = end - (pageSize - 1) 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 38095d67..50dbeb34 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 @@ -20,16 +20,11 @@ internal class LireScan(context: MangaLoaderContext) : PagedMangaParser(context, override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -37,7 +32,7 @@ internal class LireScan(context: MangaLoaderContext) : PagedMangaParser(context, keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val doc = when { !filter.query.isNullOrEmpty() -> { if (page > 1) { 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 d18a2e7a..69bf0150 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 @@ -30,12 +30,6 @@ internal class LugnicaScans(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, - isSearchSupported = false, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -68,7 +62,7 @@ internal class LugnicaScans(context: MangaLoaderContext) : ) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { when { !filter.query.isNullOrEmpty() -> { throw IllegalArgumentException(ErrorMessages.SEARCH_NOT_SUPPORTED) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/MangaKawaii.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/MangaKawaii.kt index 055dad2c..8dda82ed 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/MangaKawaii.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/MangaKawaii.kt @@ -21,16 +21,11 @@ internal class MangaKawaii(context: MangaLoaderContext) : PagedMangaParser(conte override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -42,7 +37,7 @@ internal class MangaKawaii(context: MangaLoaderContext) : PagedMangaParser(conte .add("Accept-Language", "fr") .build() - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 index da07799e..5f005b9c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/MangaMana.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fr/MangaMana.kt @@ -36,10 +36,7 @@ internal class MangaMana(context: MangaLoaderContext) : PagedMangaParser(context override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -53,7 +50,7 @@ internal class MangaMana(context: MangaLoaderContext) : PagedMangaParser(context keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val postData = buildString { append("page=") append(page) 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 bf7a218c..2014ba87 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 @@ -29,22 +29,11 @@ internal class ScansMangasMe(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -52,7 +41,7 @@ internal class ScansMangasMe(context: MangaLoaderContext) : keys.add(userAgentKey) } - override suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 779c3381..f9740c21 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 @@ -26,22 +26,11 @@ internal class ScantradUnion(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -49,7 +38,7 @@ internal class ScantradUnion(context: MangaLoaderContext) : keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fuzzydoodle/FuzzyDoodleParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fuzzydoodle/FuzzyDoodleParser.kt index 15945fc5..5a6a479c 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fuzzydoodle/FuzzyDoodleParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/fuzzydoodle/FuzzyDoodleParser.kt @@ -67,21 +67,19 @@ internal abstract class FuzzyDoodleParser( protected open val pausedValue = "haitus" protected open val abandonedValue = "dropped" - override val filterCapabilities: MangaListFilterCapabilities - get() = MangaListFilterCapabilities( - isMultipleTagsSupported = true, - isTagsExclusionSupported = false, - isSearchSupported = true, - isSearchWithFiltersSupported = false, - ) - - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = fetchAvailableTags(), - availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED, MangaState.ABANDONED), - availableContentRating = emptySet(), - ) - - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override val filterCapabilities: MangaListFilterCapabilities + get() = MangaListFilterCapabilities( + isMultipleTagsSupported = true, + isSearchSupported = true, + ) + + override suspend fun getFilterOptions() = MangaListFilterOptions( + availableTags = fetchAvailableTags(), + availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED, MangaState.ABANDONED), + availableContentRating = emptySet(), + ) + + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) @@ -258,7 +256,7 @@ internal abstract class FuzzyDoodleParser( protected open val selectTagsList = "div.mt-1 div.items-center:has(label)" - private suspend fun fetchAvailableTags(): Set { + private suspend fun fetchAvailableTags(): Set { val doc = webClient.httpGet("https://$domain/manga").parseHtml() return doc.select(selectTagsList).mapNotNullToSet { val key = it.selectFirst("input")?.attr("value") ?: return@mapNotNullToSet null 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 a9d57b17..24dfa5e2 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 @@ -32,21 +32,11 @@ internal abstract class GalleryAdultsParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), availableLocales = setOf( Locale.ENGLISH, Locale.FRENCH, @@ -68,7 +58,7 @@ internal abstract class GalleryAdultsParser( override suspend fun getListPage( page: Int, order: SortOrder, - filter: MangaListFilterV2, + filter: MangaListFilter, ): List { val url = buildString { append("https://") 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 2a930744..69a57475 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 @@ -42,7 +42,7 @@ internal class Hentai3(context: MangaLoaderContext) : ), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 1eca964d..c1b64e56 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 @@ -38,7 +38,7 @@ internal class HentaiEnvy(context: MangaLoaderContext) : ), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 e9aab678..0394583a 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 @@ -45,7 +45,7 @@ internal class HentaiEra(context: MangaLoaderContext) : ) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 8d973bdd..5a39fb09 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 @@ -53,7 +53,7 @@ internal class HentaiForce(context: MangaLoaderContext) : return doc.selectFirstOrThrow(idImg).src() ?: doc.parseFailed("Image src not found") } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 df0e2830..60d5a62a 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 @@ -25,7 +25,7 @@ internal class HentaiFox(context: MangaLoaderContext) : override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 6cec2e02..c06fa41f 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 @@ -42,7 +42,7 @@ internal class NHentaiParser(context: MangaLoaderContext) : .set("User-Agent", config[userAgentKey]) .build() - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 9d6a3fdd..b0a08a80 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 @@ -27,21 +27,16 @@ internal abstract class GattsuParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) protected open val tagPrefix = "tag" - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 77202ced..950f19d4 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 @@ -16,15 +16,11 @@ internal class UniversoHentai(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) private suspend fun fetchAvailableTags(): Set { 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 e2ffeb0f..6a90e50b 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 @@ -18,23 +18,10 @@ internal abstract class GuyaParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() override fun onCreateConfig(keys: MutableCollection>) { super.onCreateConfig(keys) @@ -43,7 +30,7 @@ internal abstract class GuyaParser( override val configKeyDomain = ConfigKey.Domain(domain) - override suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 871117d7..99e8bb0a 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 @@ -48,12 +48,7 @@ internal abstract class HeanCms( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -65,7 +60,7 @@ internal abstract class HeanCms( availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(apiPath) 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 fbc153dd..c0dffcfb 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 @@ -32,12 +32,7 @@ internal abstract class HeanCmsAlt( protected open val datePattern = "MMMM d, yyyy" override val filterCapabilities: MangaListFilterCapabilities - get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, - isSearchSupported = false, - isSearchWithFiltersSupported = false, - ) + get() = MangaListFilterCapabilities() init { paginator.firstPage = 1 @@ -47,13 +42,9 @@ internal abstract class HeanCmsAlt( protected open val selectManga = "div.grid.grid-cols-2 div:not([class]):contains(M)" protected open val selectMangaTitle = "h5" - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/hotcomics/HotComicsParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/hotcomics/HotComicsParser.kt index 85ad1469..35b29f9a 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/hotcomics/HotComicsParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/hotcomics/HotComicsParser.kt @@ -37,31 +37,20 @@ internal abstract class HotComicsParser( protected open val isSearchSupported: Boolean = true - override val filterCapabilities: MangaListFilterCapabilities + final override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = isSearchSupported, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) override fun getRequestHeaders(): Headers = Headers.Builder() .add("User-Agent", UserAgents.CHROME_DESKTOP) .build() - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { if (onePage && page > 1) { return emptyList() } 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 30cea1b8..d711d39e 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 @@ -28,15 +28,12 @@ internal class DoujinDesuParser(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED), - availableContentRating = emptySet(), ) override fun getRequestHeaders(): Headers = Headers.Builder() @@ -44,7 +41,7 @@ internal class DoujinDesuParser(context: MangaLoaderContext) : .add("Referer", "https://$domain/") .build() - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = urlBuilder().apply { addPathSegment("manga") addPathSegment("page") diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/HentaiCrot.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/HentaiCrot.kt index 0ce41e83..2eb3fcd9 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/HentaiCrot.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/HentaiCrot.kt @@ -19,16 +19,11 @@ internal class HentaiCrot(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -36,7 +31,7 @@ internal class HentaiCrot(context: MangaLoaderContext) : keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/PixHentai.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/PixHentai.kt index 6e81445a..d968d04b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/PixHentai.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/id/PixHentai.kt @@ -19,16 +19,11 @@ internal class PixHentai(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -36,7 +31,7 @@ internal class PixHentai(context: MangaLoaderContext) : keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/iken/IkenParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/iken/IkenParser.kt index bc7e3035..0e6c19fc 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/iken/IkenParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/iken/IkenParser.kt @@ -31,12 +31,7 @@ internal abstract class IkenParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -47,13 +42,9 @@ internal abstract class IkenParser( MangaState.ABANDONED, MangaState.UPCOMING, ), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 6ee13b68..53255806 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 @@ -23,16 +23,11 @@ internal class NicovideoSeigaParser(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -60,7 +55,7 @@ internal class NicovideoSeigaParser(context: MangaLoaderContext) : override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("nicovideo.jp") - override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List { val page = (offset / 20f).toIntUp().inc() val domain = getDomain("seiga") val url = when { 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 index 1e7bb635..ab7ffc3e 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/KeyoappParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/keyoapp/KeyoappParser.kt @@ -57,19 +57,14 @@ internal abstract class KeyoappParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) - override suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(order: SortOrder, filter: MangaListFilter): List { var query = "" var tag = "" 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 f074184e..4b9d4e5d 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 @@ -34,19 +34,15 @@ internal abstract class LikeMangaParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED), - availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 05a58883..4c8a36f6 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 @@ -32,19 +32,12 @@ internal abstract class MadaraParser( isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.allOf(MangaState::class.java), availableContentRating = EnumSet.of(ContentRating.SAFE, ContentRating.ADULT), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -208,7 +201,7 @@ internal abstract class MadaraParser( // can be changed to retrieve tags see getTags protected open val listUrl = "manga/" - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { if (withoutAjax) { val pages = page + 1 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 6e5b0dfa..1050bd89 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 @@ -30,7 +30,7 @@ internal class Manga18Fx(context: MangaLoaderContext) : availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 67c357db..f58a64d2 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 @@ -37,7 +37,7 @@ internal class Manhwa18Cc(context: MangaLoaderContext) : availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 dd2425e8..d8f904d7 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 @@ -1,10 +1,6 @@ package org.koitharu.kotatsu.parsers.site.madara.en -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.async -import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.delay -import kotlinx.coroutines.withContext +import kotlinx.coroutines.* import okhttp3.Headers import okhttp3.Request import okhttp3.RequestBody @@ -16,170 +12,170 @@ 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("ADULT_WEBTOON", "AdultWebtoon", "en", ContentType.HENTAI) internal class AdultWebtoon(context: MangaLoaderContext) : - MadaraParser(context, MangaParserSource.ADULT_WEBTOON, "adultwebtoon.com") { - override val tagPrefix = "adult-webtoon-genre/" - override val listUrl = "adult-webtoon/" - override val postReq = true - override val withoutAjax = true - override val availableSortOrders: Set = - EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.NEWEST, SortOrder.ALPHABETICAL, SortOrder.RATING) - - override val filterCapabilities: MangaListFilterCapabilities - get() = super.filterCapabilities.copy( - isTagsExclusionSupported = false, - ) - - override suspend fun getFilterOptions() = super.getFilterOptions().copy( - availableStates = emptySet(), - availableContentRating = emptySet(), - ) - - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { - val pages = page + 1 - - val url = buildString { - append("https://") - append(domain) - when { - !filter.query.isNullOrEmpty() -> { - if (pages > 1) { - append("/page/") - append(pages.toString()) - } - append("/?s=") - append(filter.query.urlEncoded()) - append("&post_type=wp-manga") - } - - else -> { - - if (filter.tags.isNotEmpty()) { - filter.tags.oneOrThrowIfMany()?.let { - append('/') - append(tagPrefix) - append(it.key) - append('/') - } - } else { - append('/') - append(listUrl) - } - - if (pages > 1) { - append("page/") - append(pages) - append('/') - } - - append("?m_orderby=") - when (order) { - SortOrder.POPULARITY -> append("views") - SortOrder.UPDATED -> append("latest") - SortOrder.NEWEST -> append("new-manga") - SortOrder.ALPHABETICAL -> append("alphabet") - SortOrder.RATING -> append("rating") - else -> append("latest") - } - } - } - } - return parseMangaList(webClient.httpGet(url).parseHtml()) - } - - 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)")?.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() - - 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 mangaId = document.select("div#manga-chapters-holder").attr("data-id") - val url = "https://$domain/wp-admin/admin-ajax.php" - val postData = "post_id=$mangaId&action=ajax_chap" - val headers = Headers.Builder().add("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8").build() - val doc = makeRequest(url, postData.toRequestBody(), headers) - 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, - ) - } - } - - 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 context.httpClient.newCall(request).execute().parseHtml() - - } catch (e: Exception) { - // Log or handle the exception as needed - if (++retryCount <= 5) { - withContext(Dispatchers.Default) { - delay(backoffDelay) - } - } else { - throw e - } - } - } - } + MadaraParser(context, MangaParserSource.ADULT_WEBTOON, "adultwebtoon.com") { + override val tagPrefix = "adult-webtoon-genre/" + override val listUrl = "adult-webtoon/" + override val postReq = true + override val withoutAjax = true + override val availableSortOrders: Set = + EnumSet.of(SortOrder.UPDATED, SortOrder.POPULARITY, SortOrder.NEWEST, SortOrder.ALPHABETICAL, SortOrder.RATING) + + override val filterCapabilities: MangaListFilterCapabilities + get() = super.filterCapabilities.copy( + isTagsExclusionSupported = false, + ) + + override suspend fun getFilterOptions() = super.getFilterOptions().copy( + availableStates = emptySet(), + availableContentRating = emptySet(), + ) + + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { + val pages = page + 1 + + val url = buildString { + append("https://") + append(domain) + when { + !filter.query.isNullOrEmpty() -> { + if (pages > 1) { + append("/page/") + append(pages.toString()) + } + append("/?s=") + append(filter.query.urlEncoded()) + append("&post_type=wp-manga") + } + + else -> { + + if (filter.tags.isNotEmpty()) { + filter.tags.oneOrThrowIfMany()?.let { + append('/') + append(tagPrefix) + append(it.key) + append('/') + } + } else { + append('/') + append(listUrl) + } + + if (pages > 1) { + append("page/") + append(pages) + append('/') + } + + append("?m_orderby=") + when (order) { + SortOrder.POPULARITY -> append("views") + SortOrder.UPDATED -> append("latest") + SortOrder.NEWEST -> append("new-manga") + SortOrder.ALPHABETICAL -> append("alphabet") + SortOrder.RATING -> append("rating") + else -> append("latest") + } + } + } + } + return parseMangaList(webClient.httpGet(url).parseHtml()) + } + + 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)")?.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() + + 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 mangaId = document.select("div#manga-chapters-holder").attr("data-id") + val url = "https://$domain/wp-admin/admin-ajax.php" + val postData = "post_id=$mangaId&action=ajax_chap" + val headers = Headers.Builder().add("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8").build() + val doc = makeRequest(url, postData.toRequestBody(), headers) + 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, + ) + } + } + + 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 context.httpClient.newCall(request).execute().parseHtml() + + } catch (e: Exception) { + // Log or handle the exception as needed + if (++retryCount <= 5) { + withContext(Dispatchers.Default) { + delay(backoffDelay) + } + } else { + throw e + } + } + } + } } 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 ec77fab9..3b20e8c6 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 @@ -30,7 +30,7 @@ internal class Hentai4Free(context: MangaLoaderContext) : searchPaginator.firstPage = 1 } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 bc7e0fe8..f16f6b19 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 @@ -32,7 +32,7 @@ internal class HentaiManga(context: MangaLoaderContext) : availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val pages = page + 1 val url = buildString { 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 39196be1..20c3d4aa 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 @@ -1,10 +1,6 @@ package org.koitharu.kotatsu.parsers.site.madara.en -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.async -import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.delay -import kotlinx.coroutines.withContext +import kotlinx.coroutines.* import okhttp3.Headers import okhttp3.Request import okhttp3.RequestBody @@ -16,7 +12,7 @@ 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("HENTAIWEBTOON", "HentaiWebtoon", "en", ContentType.HENTAI) internal class HentaiWebtoon(context: MangaLoaderContext) : @@ -36,7 +32,7 @@ internal class HentaiWebtoon(context: MangaLoaderContext) : availableStates = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val pages = page + 1 val url = buildString { 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 f4a1a76f..0d853c4b 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 @@ -31,7 +31,7 @@ internal class IsekaiScan(context: MangaLoaderContext) : availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 cb94d4c9..73582520 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 @@ -27,7 +27,7 @@ internal class IsekaiScanEuParser(context: MangaLoaderContext) : searchPaginator.firstPage = 1 } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 fd3f020b..8ed4a970 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 @@ -37,7 +37,7 @@ internal class MangaDass(context: MangaLoaderContext) : availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 ed89ec41..e5f57c8d 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 @@ -9,7 +9,7 @@ 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("MANGADNA", "MangaDna", "en", ContentType.HENTAI) internal class MangaDna(context: MangaLoaderContext) : @@ -32,7 +32,7 @@ internal class MangaDna(context: MangaLoaderContext) : availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 cc288405..f0207d7b 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 @@ -35,7 +35,7 @@ internal class MangaPure(context: MangaLoaderContext) : ) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 89a42cae..aac1e460 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 @@ -38,7 +38,7 @@ internal class Manhwaz(context: MangaLoaderContext) : availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 1a9162bd..e020d005 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 @@ -1,10 +1,6 @@ package org.koitharu.kotatsu.parsers.site.madara.en -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.async -import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.delay -import kotlinx.coroutines.withContext +import kotlinx.coroutines.* import okhttp3.Headers import okhttp3.Request import okhttp3.RequestBody @@ -16,7 +12,7 @@ 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("MANYTOON", "ManyToon", "en", ContentType.HENTAI) internal class ManyToon(context: MangaLoaderContext) : @@ -40,7 +36,7 @@ internal class ManyToon(context: MangaLoaderContext) : ) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val pages = page + 1 val url = buildString { 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 7d1d360f..78116c8e 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,73 +2,76 @@ 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.Manga +import org.koitharu.kotatsu.parsers.model.MangaListFilter +import org.koitharu.kotatsu.parsers.model.MangaParserSource +import org.koitharu.kotatsu.parsers.model.SortOrder 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, MangaParserSource.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 selectPage = "div#chapter_imgs img" + override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED) - init { - paginator.firstPage = 1 - searchPaginator.firstPage = 1 - } + init { + paginator.firstPage = 1 + searchPaginator.firstPage = 1 + } - override suspend fun getFilterOptions() = super.getFilterOptions().copy( - availableStates = emptySet(), - availableContentRating = emptySet(), - ) + override suspend fun getFilterOptions() = super.getFilterOptions().copy( + availableStates = emptySet(), + availableContentRating = emptySet(), + ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { - val url = buildString { - append("https://") - append(domain) - when { - !filter.query.isNullOrEmpty() -> { - append("/mangas?buscar=") - append(filter.query.urlEncoded()) - append("&page=") - append(page.toString()) - } + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { + val url = buildString { + append("https://") + append(domain) + when { + !filter.query.isNullOrEmpty() -> { + append("/mangas?buscar=") + append(filter.query.urlEncoded()) + append("&page=") + append(page.toString()) + } - else -> { + else -> { - append("/mangas?page=") - append(page.toString()) + append("/mangas?page=") + append(page.toString()) - val tag = filter.tags.oneOrThrowIfMany() - if (filter.tags.isNotEmpty()) { - append("&tag=") - append(tag?.key.orEmpty()) - } - } - } - } + val tag = filter.tags.oneOrThrowIfMany() + if (filter.tags.isNotEmpty()) { + append("&tag=") + append(tag?.key.orEmpty()) + } + } + } + } - val doc = webClient.httpGet(url).parseHtml() + val doc = webClient.httpGet(url).parseHtml() - return doc.select("div.video-bg div.col-6 ").map { div -> - val href = - div.selectFirst("a.series-link")?.attrAsRelativeUrlOrNull("href") ?: div.parseFailed("Link not found") - Manga( - id = generateUid(href), - url = href, - publicUrl = href.toAbsoluteUrl(div.host ?: domain), - coverUrl = div.selectFirst("img.thumb-img")?.src().orEmpty(), - title = div.selectFirst("div.series-box h5")?.text().orEmpty(), - altTitle = null, - rating = div.selectFirst("span.total_votes")?.ownText()?.toFloatOrNull()?.div(5f) ?: -1f, - tags = emptySet(), - author = null, - state = null, - source = source, - isNsfw = isNsfwSource, - ) - } - } + return doc.select("div.video-bg div.col-6 ").map { div -> + val href = + div.selectFirst("a.series-link")?.attrAsRelativeUrlOrNull("href") ?: div.parseFailed("Link not found") + Manga( + id = generateUid(href), + url = href, + publicUrl = href.toAbsoluteUrl(div.host ?: domain), + coverUrl = div.selectFirst("img.thumb-img")?.src().orEmpty(), + title = div.selectFirst("div.series-box h5")?.text().orEmpty(), + altTitle = null, + rating = div.selectFirst("span.total_votes")?.ownText()?.toFloatOrNull()?.div(5f) ?: -1f, + tags = emptySet(), + author = null, + state = null, + source = source, + isNsfw = isNsfwSource, + ) + } + } } 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 294a297d..eea7b35a 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 @@ -33,7 +33,7 @@ internal class TmoManga(context: MangaLoaderContext) : availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 2cb5fba7..f3e73176 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 @@ -34,7 +34,7 @@ internal class ManhwaHub(context: MangaLoaderContext) : availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 97e962b9..b5eff57a 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 @@ -6,11 +6,9 @@ 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.MangaState import org.koitharu.kotatsu.parsers.site.madara.MadaraParser import org.koitharu.kotatsu.parsers.util.* import java.util.* -import kotlin.collections.Set @Broken @MangaSourceParser("SAYTRUYENHAY", "PheTruyen", "vi") @@ -38,7 +36,7 @@ internal class Saytruyenhay(context: MangaLoaderContext) : availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 bd328526..2eb51d13 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 @@ -60,24 +60,15 @@ internal abstract class MadthemeParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 dd56d843..f9a5c911 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 @@ -17,7 +17,7 @@ internal class ManhuaScan(context: MangaLoaderContext) : override val sourceLocale: Locale = Locale.ENGLISH override val listUrl = "search" - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 380d9332..49bad9bd 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 @@ -54,19 +54,14 @@ internal abstract class Manga18Parser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 d3c82569..964b614c 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 @@ -55,16 +55,14 @@ internal abstract class MangaboxParser( isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED), - availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 7856b6b0..f1507d0d 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 @@ -37,7 +37,7 @@ internal class Mangairo(context: MangaLoaderContext) : isMultipleTagsSupported = false, ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 65fa76d2..f333a350 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 @@ -27,7 +27,7 @@ internal class Mangakakalot(context: MangaLoaderContext) : override val otherDomain = "chapmanganato.com" override val listUrl = "/manga_list" - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 4aff52b3..6de10c3f 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 @@ -28,7 +28,7 @@ internal class MangakakalotTv(context: MangaLoaderContext) : isMultipleTagsSupported = false, ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 8adc54ab..d7ae5404 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 @@ -41,10 +41,6 @@ internal abstract class MangAdventureParser( isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -56,15 +52,12 @@ internal abstract class MangAdventureParser( MangaState.PAUSED, ), availableContentRating = EnumSet.of(ContentRating.SAFE), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) override suspend fun getListPage( page: Int, order: SortOrder, - filter: MangaListFilterV2, + filter: MangaListFilter, ): List { val url = apiUrl.addEncodedPathSegment("series") .addEncodedQueryParameter("limit", pageSize.toString()) 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 a09fa227..8c957f0b 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 @@ -48,16 +48,11 @@ internal abstract class MangaReaderParser( isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = getOrCreateTagMap().values.toSet(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED), - availableContentRating = emptySet(), availableContentTypes = EnumSet.of( ContentType.MANGA, ContentType.MANHWA, @@ -65,8 +60,6 @@ internal abstract class MangaReaderParser( ContentType.COMICS, ContentType.NOVEL, ), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) protected open val listUrl = "/manga" @@ -76,7 +69,7 @@ internal abstract class MangaReaderParser( protected var tagCache: ArrayMap? = null protected val mutex = Mutex() - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 2b42c806..835b9bd2 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 @@ -21,7 +21,7 @@ internal class Normoyun(context: MangaLoaderContext) : isTagsExclusionSupported = false, ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 cd6edb3d..8a0a0fa4 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 @@ -63,7 +63,7 @@ internal class RizzComic(context: MangaLoaderContext) : availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { if (page > 1) { return emptyList() } 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 c5cf8300..c595f418 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 @@ -29,7 +29,7 @@ internal class Zahard(context: MangaLoaderContext) : availableStates = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 index 70cfaa0f..b6fcf510 100644 --- 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 @@ -17,7 +17,7 @@ internal class HentaiReader(context: MangaLoaderContext) : isTagsExclusionSupported = false, ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 index 9a4761d1..469ffe85 100644 --- 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 @@ -16,7 +16,7 @@ internal class LectorHentai(context: MangaLoaderContext) : isTagsExclusionSupported = false, ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 index 6cd9aa30..3077b566 100644 --- 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 @@ -17,7 +17,7 @@ internal class MangaTv(context: MangaLoaderContext) : ) override val datePattern = "yyyy-MM-dd" - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 62f5bfe3..33056dd8 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 @@ -28,7 +28,7 @@ internal class TuManhwas(context: MangaLoaderContext) : availableStates = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 index b1d43fb1..e3522f91 100644 --- 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 @@ -27,7 +27,7 @@ internal class RevolutionScantrad(context: MangaLoaderContext) : isSearchSupported = false, ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { if (page > 1) { return emptyList() } 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 index 82570c25..dd94661e 100644 --- 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 @@ -26,7 +26,7 @@ internal class XxxRevolutionScantrad(context: MangaLoaderContext) : isTagsExclusionSupported = false, ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { if (page > 1) { return emptyList() } 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 b52d5b77..e4f667c6 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 @@ -23,7 +23,7 @@ internal class KomikSan(context: MangaLoaderContext) : isTagsExclusionSupported = false, ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 324c2012..5a662a75 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 @@ -30,7 +30,7 @@ internal class Komikcast(context: MangaLoaderContext) : availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangaworld/MangaWorldParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangaworld/MangaWorldParser.kt index c788dc74..b5263435 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangaworld/MangaWorldParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/mangaworld/MangaWorldParser.kt @@ -32,15 +32,12 @@ internal abstract class MangaWorldParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.ABANDONED, MangaState.PAUSED), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -48,7 +45,7 @@ internal abstract class MangaWorldParser( keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") 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 e1d2d754..8662f877 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 @@ -67,24 +67,14 @@ internal abstract class MmrcmsParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { when { !filter.query.isNullOrEmpty() -> { val url = buildString { 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 879d940f..90d99dea 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 @@ -42,13 +42,11 @@ internal abstract class NepnepParser( isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.allOf(MangaState::class.java), - availableContentRating = emptySet(), ) data class MangaWithLastUpdate( @@ -57,7 +55,7 @@ internal abstract class NepnepParser( val views: String, ) - override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List { val doc = searchDoc.get() val json = JSONArray( doc.selectFirstOrThrow("script:containsData(MainFunction)").data() 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 index c615de14..4f645007 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/OneMangaParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/onemanga/OneMangaParser.kt @@ -23,26 +23,11 @@ internal abstract class OneMangaParser( override val availableSortOrders: Set = EnumSet.of(SortOrder.UPDATED) override val filterCapabilities: MangaListFilterCapabilities - get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, - isSearchSupported = false, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, - ) + get() = MangaListFilterCapabilities() - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() - override suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(order: SortOrder, filter: MangaListFilter): List { val url = "https://$domain" val doc = webClient.httpGet(url).parseHtml() val manga = ArrayList() 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 9d7b25d1..cebff999 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 @@ -22,16 +22,11 @@ internal abstract class OtakuSanctuaryParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -59,7 +54,7 @@ internal abstract class OtakuSanctuaryParser( "Done", ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val doc = when { !filter.query.isNullOrEmpty() -> { if (page > 1) { 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 4098634a..b3462790 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 @@ -34,11 +34,9 @@ internal abstract class PizzaReaderParser( isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED, MangaState.ABANDONED), availableContentRating = EnumSet.of(ContentRating.SAFE, ContentRating.ADULT), ) @@ -80,7 +78,7 @@ internal abstract class PizzaReaderParser( protected open val hiatusFilter = "in pausa" protected open val abandonedFilter = "droppato" - override suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(order: SortOrder, filter: MangaListFilter): List { var foundTag = true var foundTagExclude = true var foundState = true 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 805da15b..cf60ee0e 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 @@ -22,16 +22,11 @@ internal class BrMangas(context: MangaLoaderContext) : PagedMangaParser(context, override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -39,7 +34,7 @@ internal class BrMangas(context: MangaLoaderContext) : PagedMangaParser(context, keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 7a416b6b..0c6a9dc9 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 @@ -26,17 +26,10 @@ internal class LerManga(context: MangaLoaderContext) : PagedMangaParser(context, override val configKeyDomain = ConfigKey.Domain("lermanga.org") override val filterCapabilities: MangaListFilterCapabilities - get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, - isSearchSupported = false, - isSearchWithFiltersSupported = false, - ) + get() = MangaListFilterCapabilities() override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -44,7 +37,7 @@ internal class LerManga(context: MangaLoaderContext) : PagedMangaParser(context, keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 1c3c18d2..f0f3d021 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 @@ -27,19 +27,14 @@ internal class LerMangaOnline(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 93d24ee8..8aeec24b 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 @@ -26,20 +26,11 @@ internal class LuratoonScansParser(context: MangaLoaderContext) : override fun getRequestHeaders(): Headers = Headers.Builder().add("User-Agent", config[userAgentKey]).build() override val filterCapabilities: MangaListFilterCapabilities - get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, - isSearchSupported = false, - isSearchWithFiltersSupported = false, - ) + get() = MangaListFilterCapabilities() - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() - override suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(order: SortOrder, filter: MangaListFilter): List { require(filter.query.isNullOrEmpty()) { ErrorMessages.SEARCH_NOT_SUPPORTED } val url = urlBuilder() val tag = filter.tags.oneOrThrowIfMany() 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 b56c4e2f..3c956d86 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 @@ -23,19 +23,14 @@ internal class MangaOnline(context: MangaLoaderContext) : PagedMangaParser(conte override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 3487b0df..9c8438ef 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 @@ -22,19 +22,14 @@ internal class MuitoHentai(context: MangaLoaderContext) : PagedMangaParser(conte override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 19457c6f..a4547b68 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 @@ -18,31 +18,16 @@ internal class OnePieceEx(context: MangaLoaderContext) : SinglePageMangaParser(c override val configKeyDomain = ConfigKey.Domain("onepieceex.net") override val filterCapabilities: MangaListFilterCapabilities - get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, - isSearchSupported = false, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, - ) + get() = MangaListFilterCapabilities() - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() override fun onCreateConfig(keys: MutableCollection>) { super.onCreateConfig(keys) keys.add(userAgentKey) } - override suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(order: SortOrder, filter: MangaListFilter): List { return listOf( Manga( id = generateUid("https://$domain/mangas/leitor/"), 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 dcfe8f4b..58c2c456 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 @@ -21,30 +21,17 @@ internal class YugenMangas(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() override fun onCreateConfig(keys: MutableCollection>) { super.onCreateConfig(keys) keys.add(userAgentKey) } - override suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(order: SortOrder, filter: MangaListFilter): List { val json = when { !filter.query.isNullOrEmpty() -> { 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 5d251f77..aaa4974e 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 @@ -27,12 +27,7 @@ internal class AComics(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) init { @@ -44,16 +39,12 @@ internal class AComics(context: MangaLoaderContext) : override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = getOrCreateTagMap().values.toSet(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) override suspend fun getListPage( page: Int, order: SortOrder, - filter: MangaListFilterV2, + filter: MangaListFilter, ): List { val url = buildString { append("https://") 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 d158daa3..d8a946c5 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 @@ -28,15 +28,12 @@ internal class DesuMeParser(context: MangaLoaderContext) : PagedMangaParser(cont override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, isSearchWithFiltersSupported = true, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = tagsCache.get().values.toSet(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun getRequestHeaders(): Headers = Headers.Builder() @@ -45,7 +42,7 @@ internal class DesuMeParser(context: MangaLoaderContext) : PagedMangaParser(cont private val tagsCache = SuspendLazy(::fetchTags) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { if (!filter.query.isNullOrEmpty() && page != searchPaginator.firstPage) { return emptyList() } 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 91db673a..967a3d9b 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 @@ -36,7 +36,6 @@ internal class MangaWtfParser( isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( @@ -55,7 +54,7 @@ internal class MangaWtfParser( searchPaginator.firstPage = 0 } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = urlBuilder("api") .addPathSegment("v2") 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 54b31f24..65940674 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 @@ -40,9 +40,7 @@ internal class NudeMoonParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) init { @@ -55,11 +53,9 @@ internal class NudeMoonParser( override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) - override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List { val domain = domain val url = when { 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 c842cbc1..35995fd4 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 @@ -62,15 +62,11 @@ internal class RemangaParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun intercept(chain: Interceptor.Chain): Response { @@ -83,7 +79,7 @@ internal class RemangaParser( return response } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { copyCookies() val domain = domain val urlBuilder = StringBuilder() 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 c34fcba8..cdb6a14e 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 @@ -69,24 +69,16 @@ internal abstract class GroupleParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, isSearchWithFiltersSupported = true, - isYearSupported = false, isYearRangeSupported = true, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) - override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List { val domain = domain val doc = when { !filter.query.isNullOrEmpty() && filter.tags.isEmpty() -> webClient.httpPost( @@ -337,7 +329,7 @@ internal abstract class GroupleParser( else -> null } - private suspend fun advancedSearch(domain: String, filter: MangaListFilterV2): Response { + private suspend fun advancedSearch(domain: String, filter: MangaListFilter): Response { val url = "https://$domain/search/advanced" // Step 1: map catalog genres names to advanced-search genres ids val tagsIndex = 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 45e66037..42083a4c 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 @@ -34,16 +34,13 @@ internal abstract class ChanParser( isMultipleTagsSupported = true, isTagsExclusionSupported = true, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) - override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List { val domain = domain val doc = webClient.httpGet(buildUrl(offset, order, filter)).parseHtml() val root = doc.body().selectFirst("div.main_fon")?.getElementById("content") @@ -191,7 +188,7 @@ internal abstract class ChanParser( protected open fun buildUrl( offset: Int, order: SortOrder, - filter: MangaListFilterV2, + filter: MangaListFilter, ): HttpUrl { val builder = urlBuilder() builder.addQueryParameter("offset", offset.toString()) 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 7d41370f..cc5c2221 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 @@ -59,7 +59,7 @@ internal class HenChanParser(context: MangaLoaderContext) : ChanParser(context, ) } - override fun buildUrl(offset: Int, order: SortOrder, filter: MangaListFilterV2): HttpUrl = when { + override fun buildUrl(offset: Int, order: SortOrder, filter: MangaListFilter): HttpUrl = when { filter.query.isNullOrEmpty() && filter.tags.isEmpty() && filter.tagsExclude.isEmpty() -> { val builder = urlBuilder().addQueryParameter("offset", offset.toString()) when (order) { 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 3a24011f..2010bc87 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 @@ -38,18 +38,11 @@ internal abstract class LibSocialParser( isTagsExclusionSupported = true, isSearchSupported = true, isSearchWithFiltersSupported = true, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.allOf(MangaState::class.java), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) private val statesMap = intObjectMapOf( @@ -73,7 +66,7 @@ internal abstract class LibSocialParser( defaultValue = null, ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val urlBuilder = urlBuilder("api") .addPathSegment("api") .addPathSegment("manga") 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 3322e5c4..58ff0645 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 @@ -25,21 +25,11 @@ internal abstract class ScanParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = getOrCreateTagMap().values.toSet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -52,7 +42,7 @@ internal abstract class ScanParser( protected open val listUrl = "/manga" - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { var query = false val url = buildString { 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 4ec93e10..874f669c 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 @@ -48,19 +48,15 @@ internal abstract class SinmhParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED), - availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 7c466e95..8e17fb33 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 @@ -27,19 +27,14 @@ internal class MangaAy(context: MangaLoaderContext) : PagedMangaParser(context, override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = getOrCreateTagMap().values.toSet(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { when { !filter.query.isNullOrEmpty() -> { if (page > 1) { 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 f4ec73c0..4a0c4171 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 @@ -17,24 +17,17 @@ internal class SadScans(context: MangaLoaderContext) : SinglePageMangaParser(con override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() override fun onCreateConfig(keys: MutableCollection>) { super.onCreateConfig(keys) keys.add(userAgentKey) } - override suspend fun getList(order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 f22ff01d..515695b1 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 @@ -33,19 +33,15 @@ internal class TrWebtoon(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED), - availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { when { !filter.query.isNullOrEmpty() -> { val url = buildString { 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 68ac83a6..3b082568 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 @@ -23,25 +23,14 @@ internal class YaoiFlix(context: MangaLoaderContext) : PagedMangaParser(context, override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 0bd7cdda..6c6a10ea 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 @@ -44,15 +44,12 @@ internal class HentaiUkrParser(context: MangaLoaderContext) : MangaParser(contex override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, isSearchWithFiltersSupported = true, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -88,7 +85,7 @@ internal class HentaiUkrParser(context: MangaLoaderContext) : MangaParser(contex ) } - override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List { // Get all manga val json = allManga.get().toMutableList() 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 f54c8620..f33ad13b 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 @@ -42,15 +42,11 @@ internal class HoneyMangaParser(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -100,7 +96,7 @@ internal class HoneyMangaParser(context: MangaLoaderContext) : ) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val body = JSONObject() body.put("page", page) body.put("pageSize", PAGE_SIZE) 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 2fe7695e..4ccc9e1c 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 @@ -35,19 +35,14 @@ internal class MangaInUaParser(context: MangaLoaderContext) : PagedMangaParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = when { !filter.query.isNullOrEmpty() -> ("/index.php?do=search&subaction=search&search_start=$page&full_search=1&story=${filter.query}&titleonly=3").toAbsoluteUrl( domain, 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 6039b567..1749d8ba 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 @@ -36,19 +36,14 @@ internal class BlogTruyenParser(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = cacheTags.get().values.toSet(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { return when { !filter.query.isNullOrEmpty() -> { val searchUrl = "https://${domain}/timkiem/nangcao/1/0/-1/-1?txt=${filter.query.urlEncoded()}&p=$page" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/BlogTruyenVNParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/BlogTruyenVNParser.kt index e9768888..6e2e6916 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/BlogTruyenVNParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/BlogTruyenVNParser.kt @@ -36,19 +36,14 @@ internal class BlogTruyenVNParser(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = cacheTags.get().values.toSet(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { return when { !filter.query.isNullOrEmpty() -> { val searchUrl = "https://${domain}/timkiem/nangcao/1/0/-1/-1?txt=${filter.query.urlEncoded()}&p=$page" diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/CuuTruyenParser.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/CuuTruyenParser.kt index 53d3a315..f06c970f 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/CuuTruyenParser.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/vi/CuuTruyenParser.kt @@ -34,17 +34,10 @@ internal class CuuTruyenParser(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) - override suspend fun getFilterOptions() = MangaListFilterOptions( - availableTags = emptySet(), - availableStates = emptySet(), - availableContentRating = emptySet(), - ) + override suspend fun getFilterOptions() = MangaListFilterOptions() override fun getRequestHeaders(): Headers = Headers.Builder() .add("User-Agent", UserAgents.KOTATSU) @@ -52,7 +45,7 @@ internal class CuuTruyenParser(context: MangaLoaderContext) : private val decryptionKey = "3141592653589793" - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 23342870..b06e3f6a 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 @@ -38,18 +38,14 @@ internal class HentaiVNParser(context: MangaLoaderContext) : MangaParser(context override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = getOrCreateTagMap().values.toSet(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) - override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getList(offset: Int, order: SortOrder, filter: MangaListFilter): List { return when { !filter.query.isNullOrEmpty() -> { val page = (offset / PAGE_SIZE.toFloat()).toIntUp() + 1 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 79aafc21..27cf622d 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 @@ -27,16 +27,12 @@ internal class LxManga(context: MangaLoaderContext) : PagedMangaParser(context, override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -44,7 +40,7 @@ internal class LxManga(context: MangaLoaderContext) : PagedMangaParser(context, keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 1f93c0c8..7dc352a8 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 @@ -20,15 +20,12 @@ internal class Truyenqq(context: MangaLoaderContext) : PagedMangaParser(context, override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED), - availableContentRating = emptySet(), ) override fun onCreateConfig(keys: MutableCollection>) { @@ -36,7 +33,7 @@ internal class Truyenqq(context: MangaLoaderContext) : PagedMangaParser(context, keys.add(userAgentKey) } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = when { !filter.query.isNullOrEmpty() -> { buildString { 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 f9afd11a..fe49b6be 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 @@ -30,24 +30,14 @@ internal class YurinekoParser(context: MangaLoaderContext) : PagedMangaParser(co override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val listUrl = when { !filter.query.isNullOrEmpty() -> { "/search?query=${filter.query.urlEncoded()}&page=$page" 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 73040069..16d73e09 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 @@ -29,16 +29,11 @@ internal abstract class VmpParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), - availableStates = emptySet(), - availableContentRating = emptySet(), ) init { @@ -46,7 +41,7 @@ internal abstract class VmpParser( searchPaginator.firstPage = 1 } - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 ce477c6e..5cb3287e 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 @@ -64,25 +64,15 @@ internal abstract class WpComicsParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val response = when { !filter.query.isNullOrEmpty() -> { 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 2f1040a6..0a79be57 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 @@ -26,7 +26,7 @@ internal class XoxoComics(context: MangaLoaderContext) : SortOrder.ALPHABETICAL, ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) 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 index 619df08b..25ccbb29 100644 --- 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 @@ -14,7 +14,7 @@ internal class MangaRaw(context: MangaLoaderContext) : WpComicsParser(context, MangaParserSource.MANGARAW, "mangaraw.xyz") { override val listUrl = "/search/manga" - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val response = when { !filter.query.isNullOrEmpty() -> { val url = buildString { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenHE.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenHE.kt index 883d4ac2..4aa10f2b 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenHE.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenHE.kt @@ -35,7 +35,7 @@ internal class NetTruyenHE(context: MangaLoaderContext) : availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED, MangaState.ABANDONED), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val response = when { !filter.query.isNullOrEmpty() -> { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenLL.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenLL.kt index 1a86c63c..f9fc04c2 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenLL.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenLL.kt @@ -35,7 +35,7 @@ internal class NetTruyenLL(context: MangaLoaderContext) : SortOrder.ALPHABETICAL_DESC, ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val response = when { !filter.query.isNullOrEmpty() -> { diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenSSR.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenSSR.kt index 3ac8e725..5a171232 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenSSR.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/site/wpcomics/vi/NetTruyenSSR.kt @@ -35,7 +35,7 @@ internal class NetTruyenSSR(context: MangaLoaderContext) : availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.PAUSED, MangaState.ABANDONED), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val response = when { !filter.query.isNullOrEmpty() -> { 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 a1340428..0b8beec7 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 @@ -36,13 +36,7 @@ internal abstract class ZeistMangaParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) @JvmField @@ -91,13 +85,9 @@ internal abstract class ZeistMangaParser( override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED, MangaState.ABANDONED), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val startIndex = maxMangaResults * (page - 1) + 1 val url = buildString { 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 11150b92..3714c145 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 @@ -30,19 +30,15 @@ internal class Baozimh(context: MangaLoaderContext) : override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( - isMultipleTagsSupported = false, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = tagsMap.get().values.toSet(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED), - availableContentRating = emptySet(), ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { when { !filter.query.isNullOrEmpty() -> { if (page > 1) return emptyList() 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 dc480cb2..695f0ce5 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 @@ -41,21 +41,12 @@ internal abstract class ZMangaParser( override val filterCapabilities: MangaListFilterCapabilities get() = MangaListFilterCapabilities( isMultipleTagsSupported = true, - isTagsExclusionSupported = false, isSearchSupported = true, - isSearchWithFiltersSupported = false, - isYearSupported = false, - isYearRangeSupported = false, - isOriginalLocaleSupported = false, ) override suspend fun getFilterOptions() = MangaListFilterOptions( availableTags = fetchAvailableTags(), availableStates = EnumSet.of(MangaState.ONGOING, MangaState.FINISHED), - availableContentRating = emptySet(), - availableContentTypes = emptySet(), - availableDemographics = emptySet(), - availableLocales = emptySet(), ) init { @@ -75,7 +66,7 @@ internal abstract class ZMangaParser( "Completed", ) - override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilterV2): List { + override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List { val url = buildString { append("https://") append(domain) diff --git a/src/main/kotlin/org/koitharu/kotatsu/parsers/util/RelatedMangaFinder.kt b/src/main/kotlin/org/koitharu/kotatsu/parsers/util/RelatedMangaFinder.kt index 36792c0a..c118a298 100644 --- a/src/main/kotlin/org/koitharu/kotatsu/parsers/util/RelatedMangaFinder.kt +++ b/src/main/kotlin/org/koitharu/kotatsu/parsers/util/RelatedMangaFinder.kt @@ -6,7 +6,7 @@ import kotlinx.coroutines.awaitAll import kotlinx.coroutines.coroutineScope import org.koitharu.kotatsu.parsers.MangaParser import org.koitharu.kotatsu.parsers.model.Manga -import org.koitharu.kotatsu.parsers.model.MangaListFilterV2 +import org.koitharu.kotatsu.parsers.model.MangaListFilter import org.koitharu.kotatsu.parsers.model.SortOrder class RelatedMangaFinder( @@ -36,7 +36,7 @@ class RelatedMangaFinder( } val results = words.map { keyword -> scope.async { - val result = parser.getList(0, SortOrder.RELEVANCE, MangaListFilterV2(query = keyword)) + val result = parser.getList(0, SortOrder.RELEVANCE, MangaListFilter(query = keyword)) result.filter { it.id != seed.id && it.containKeyword(keyword) } } }.awaitAll() diff --git a/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt b/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt index 8293362b..33819830 100644 --- a/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt +++ b/src/test/kotlin/org/koitharu/kotatsu/parsers/MangaParserTest.kt @@ -21,7 +21,7 @@ internal class MangaParserTest { @MangaSources fun list(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) - val list = parser.getList(0, parser.defaultSortOrder, MangaListFilterV2.EMPTY) + val list = parser.getList(0, parser.defaultSortOrder, MangaListFilter.EMPTY) checkMangaList(list, "list") assert(list.all { it.source == source }) } @@ -33,8 +33,8 @@ internal class MangaParserTest { if (parser is SinglePageMangaParser) { return@runTest } - val page1 = parser.getList(0, parser.defaultSortOrder, MangaListFilterV2.EMPTY) - val page2 = parser.getList(page1.size, parser.defaultSortOrder, MangaListFilterV2.EMPTY) + val page1 = parser.getList(0, parser.defaultSortOrder, MangaListFilter.EMPTY) + val page2 = parser.getList(page1.size, parser.defaultSortOrder, MangaListFilter.EMPTY) if (parser is PagedMangaParser) { assert(parser.pageSize >= page1.size) { "Page size is ${page1.size} but ${parser.pageSize} expected" @@ -56,13 +56,13 @@ internal class MangaParserTest { val subject = parser.getList( offset = 0, order = SortOrder.POPULARITY, - filter = MangaListFilterV2.EMPTY, + filter = MangaListFilter.EMPTY, ).minByOrNull { it.title.length } ?: error("No manga found") val query = subject.title check(query.isNotBlank()) { "Manga title '$query' is blank" } - val list = parser.getList(0, SortOrder.RELEVANCE, MangaListFilterV2(query = query)) + val list = parser.getList(0, SortOrder.RELEVANCE, MangaListFilter(query = query)) assert(list.isNotEmpty()) { "Empty search results by \"$query\"" } assert(list.singleOrNull { it.url == subject.url && it.id == subject.id } != null) { "Single subject '${subject.title} (${subject.publicUrl})' not found in search results" @@ -93,7 +93,7 @@ internal class MangaParserTest { val list = parser.getList( offset = 0, order = parser.defaultSortOrder, - filter = MangaListFilterV2(tags = setOf(tag)), + filter = MangaListFilter(tags = setOf(tag)), ) checkMangaList(list, "${tag.title} (${tag.key})") assert(list.all { it.source == source }) @@ -106,7 +106,7 @@ internal class MangaParserTest { if (!parser.filterCapabilities.isMultipleTagsSupported) return@runTest val tags = parser.getFilterOptions().availableTags.shuffled().take(2).toSet() - val filter = MangaListFilterV2(tags = tags) + val filter = MangaListFilter(tags = tags) val list = parser.getList(0, parser.defaultSortOrder, filter) checkMangaList(list, "${tags.joinToString { it.title }} (${tags.joinToString { it.key }})") assert(list.all { it.source == source }) @@ -120,7 +120,7 @@ internal class MangaParserTest { if (locales.isEmpty()) { return@runTest } - val filter = MangaListFilterV2( + val filter = MangaListFilter( locale = locales.random(), originalLocale = locales.random(), ) @@ -134,7 +134,7 @@ internal class MangaParserTest { @MangaSources fun details(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) - val list = parser.getList(0, parser.defaultSortOrder, MangaListFilterV2.EMPTY) + val list = parser.getList(0, parser.defaultSortOrder, MangaListFilter.EMPTY) val manga = list[3] parser.getDetails(manga).apply { assert(!chapters.isNullOrEmpty()) { "Chapters are null or empty" } @@ -164,7 +164,7 @@ internal class MangaParserTest { @MangaSources fun pages(source: MangaParserSource) = runTest(timeout = timeout) { val parser = context.newParserInstance(source) - val list = parser.getList(0, parser.defaultSortOrder, MangaListFilterV2.EMPTY) + val list = parser.getList(0, parser.defaultSortOrder, MangaListFilter.EMPTY) val manga = list.first() val chapter = parser.getDetails(manga).chapters?.firstOrNull() ?: error("Chapter is null at ${manga.publicUrl}") val pages = parser.getPages(chapter)