Fix Build

pull/431/head
devi 2 years ago
parent c602355e65
commit a2e9f19814

@ -95,6 +95,7 @@ abstract class MangaParser @InternalParsersApi constructor(
offset: Int,
query: String?,
tags: Set<MangaTag>?,
tagsExclude: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> = throw NotImplementedError("Please implement getList(offset, filter) instead")
@ -130,18 +131,29 @@ abstract class MangaParser @InternalParsersApi constructor(
"org.koitharu.kotatsu.parsers.model.MangaListFilter",
),
)
open suspend fun getList(offset: Int, tags: Set<MangaTag>?, sortOrder: SortOrder?): List<Manga> {
open suspend fun getList(
offset: Int,
tags: Set<MangaTag>?,
tagsExclude: Set<MangaTag>?,
sortOrder: SortOrder?,
): List<Manga> {
return getList(
offset,
MangaListFilter.Advanced(sortOrder ?: defaultSortOrder, tags.orEmpty(), null, emptySet()),
MangaListFilter.Advanced(
sortOrder ?: defaultSortOrder,
tags.orEmpty(),
tagsExclude.orEmpty(),
null,
emptySet(),
),
)
}
open suspend fun getList(offset: Int, filter: MangaListFilter?): List<Manga> {
return when (filter) {
is MangaListFilter.Advanced -> getList(offset, null, filter.tags, filter.sortOrder)
is MangaListFilter.Search -> getList(offset, filter.query, null, defaultSortOrder)
null -> getList(offset, null, null, defaultSortOrder)
is MangaListFilter.Advanced -> getList(offset, null, filter.tags, filter.tagsExclude, filter.sortOrder)
is MangaListFilter.Search -> getList(offset, filter.query, null, null, defaultSortOrder)
null -> getList(offset, null, null, null, defaultSortOrder)
}
}

@ -36,6 +36,7 @@ abstract class PagedMangaParser(
offset: Int,
query: String?,
tags: Set<MangaTag>?,
tagsExclude: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> = throw UnsupportedOperationException("You should use getListPage for PagedMangaParser")
@ -43,14 +44,15 @@ abstract class PagedMangaParser(
page: Int,
query: String?,
tags: Set<MangaTag>?,
tagsExclude: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> = throw NotImplementedError("Please implement getListPage(page, filter) instead")
open suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
return when (filter) {
is MangaListFilter.Advanced -> getListPage(page, null, filter.tags, filter.sortOrder)
is MangaListFilter.Search -> getListPage(page, filter.query, null, defaultSortOrder)
null -> getListPage(page, null, null, defaultSortOrder)
is MangaListFilter.Advanced -> getListPage(page, null, filter.tags, filter.tagsExclude, filter.sortOrder)
is MangaListFilter.Search -> getListPage(page, filter.query, null, null, defaultSortOrder)
null -> getListPage(page, null, null, null, defaultSortOrder)
}
}

@ -31,6 +31,7 @@ internal class AnibelParser(context: MangaLoaderContext) : MangaParser(context,
offset: Int,
query: String?,
tags: Set<MangaTag>?,
tagsExclude: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> {
if (!query.isNullOrEmpty()) {

@ -37,6 +37,7 @@ internal class DesuMeParser(context: MangaLoaderContext) : PagedMangaParser(cont
page: Int,
query: String?,
tags: Set<MangaTag>?,
tagsExclude: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> {
if (query != null && page != searchPaginator.firstPage) {

@ -48,6 +48,7 @@ internal class NudeMoonParser(
offset: Int,
query: String?,
tags: Set<MangaTag>?,
tagsExclude: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> {
val domain = domain

@ -77,6 +77,7 @@ internal class RemangaParser(
page: Int,
query: String?,
tags: Set<MangaTag>?,
tagsExclude: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> {
copyCookies()

@ -32,6 +32,7 @@ internal abstract class ChanParser(
offset: Int,
query: String?,
tags: Set<MangaTag>?,
tagsExclude: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> {
val domain = domain

@ -44,6 +44,7 @@ internal open class MangaLibParser(
page: Int,
query: String?,
tags: Set<MangaTag>?,
tagsExclude: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> {
if (!query.isNullOrEmpty()) {

@ -67,7 +67,13 @@ class HentaiUkrParser(context: MangaLoaderContext) : MangaParser(context, MangaS
)
}
override suspend fun getList(offset: Int, query: String?, tags: Set<MangaTag>?, sortOrder: SortOrder): List<Manga> {
override suspend fun getList(
offset: Int,
query: String?,
tags: Set<MangaTag>?,
tagsExclude: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> {
// Get all manga
val json = allManga.get().toMutableList()

@ -80,6 +80,7 @@ class HoneyMangaParser(context: MangaLoaderContext) : PagedMangaParser(context,
page: Int,
query: String?,
tags: Set<MangaTag>?,
tagsExclude: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> {
val body = JSONObject()

@ -34,6 +34,7 @@ class MangaInUaParser(context: MangaLoaderContext) : PagedMangaParser(
page: Int,
query: String?,
tags: Set<MangaTag>?,
tagsExclude: Set<MangaTag>?,
sortOrder: SortOrder,
): List<Manga> {
val url = when {

@ -28,7 +28,7 @@ internal class MangaParserTest {
@MangaSources
fun list(source: MangaSource) = runTest(timeout = timeout) {
val parser = context.newParserInstance(source)
val list = parser.getList(0, sortOrder = SortOrder.POPULARITY, tags = null)
val list = parser.getList(0, sortOrder = SortOrder.POPULARITY, tags = null, tagsExclude = null)
checkMangaList(list, "list")
assert(list.all { it.source == source })
}
@ -61,7 +61,7 @@ internal class MangaParserTest {
offset = 0,
filter = MangaListFilter.Advanced(
sortOrder = SortOrder.POPULARITY,
tags = emptySet(), locale = null, states = emptySet(),
tags = emptySet(), locale = null, states = emptySet(), tagsExclude = emptySet(),
),
).minByOrNull {
it.title.length
@ -92,7 +92,7 @@ internal class MangaParserTest {
assert(tags.all { it.source == source })
val tag = tags.last()
val list = parser.getList(offset = 0, tags = setOf(tag), sortOrder = null)
val list = parser.getList(offset = 0, tags = setOf(tag), tagsExclude = setOf(tag), sortOrder = null)
checkMangaList(list, "${tag.title} (${tag.key})")
assert(list.all { it.source == source })
}
@ -104,7 +104,7 @@ internal class MangaParserTest {
val tags = parser.getAvailableTags().shuffled().take(2).toSet()
val list = try {
parser.getList(offset = 0, tags = tags, sortOrder = null)
parser.getList(offset = 0, tags = tags, tagsExclude = tags, sortOrder = null)
} catch (e: IllegalArgumentException) {
if (e.message == "Multiple genres are not supported by this source") {
return@runTest
@ -127,6 +127,7 @@ internal class MangaParserTest {
val filter = MangaListFilter.Advanced(
sortOrder = parser.availableSortOrders.first(),
tags = setOf(),
tagsExclude = setOf(),
locale = locales.random(),
states = setOf(),
)
@ -140,7 +141,7 @@ internal class MangaParserTest {
@MangaSources
fun details(source: MangaSource) = runTest(timeout = timeout) {
val parser = context.newParserInstance(source)
val list = parser.getList(0, sortOrder = SortOrder.POPULARITY, tags = null)
val list = parser.getList(0, sortOrder = SortOrder.POPULARITY, tags = null, tagsExclude = null)
val manga = list[3]
parser.getDetails(manga).apply {
assert(!chapters.isNullOrEmpty()) { "Chapters are null or empty" }
@ -169,7 +170,7 @@ internal class MangaParserTest {
@MangaSources
fun pages(source: MangaSource) = runTest(timeout = timeout) {
val parser = context.newParserInstance(source)
val list = parser.getList(0, sortOrder = SortOrder.UPDATED, tags = null)
val list = parser.getList(0, sortOrder = SortOrder.UPDATED, tags = null, tagsExclude = null)
val manga = list.first()
val chapter = parser.getDetails(manga).chapters?.firstOrNull() ?: error("Chapter is null at ${manga.publicUrl}")
val pages = parser.getPages(chapter)

Loading…
Cancel
Save