From 02852ac4e7712f7d5cf74a561c3ebe0e31658fdd Mon Sep 17 00:00:00 2001 From: devi Date: Sat, 31 Aug 2024 11:12:55 +0200 Subject: [PATCH] Add Exclude Genres and new sort order on ComickFunParser close #1032 --- .../parsers/site/all/ComickFunParser.kt | 54 +++++-------------- 1 file changed, 14 insertions(+), 40 deletions(-) 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 28871b2a..f7bbcbfe 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 @@ -14,10 +14,6 @@ import org.koitharu.kotatsu.parsers.util.json.* import java.text.SimpleDateFormat import java.util.* -/** - * cc - */ - private const val CHAPTERS_LIMIT = 99999 @MangaSourceParser("COMICK_FUN", "ComicK") @@ -31,10 +27,13 @@ internal class ComickFunParser(context: MangaLoaderContext) : keys.add(userAgentKey) } + override val isTagsExclusionSupported = true + override val availableSortOrders: Set = EnumSet.of( SortOrder.POPULARITY, SortOrder.UPDATED, SortOrder.RATING, + SortOrder.NEWEST, ) override val availableStates: Set = @@ -62,17 +61,26 @@ internal class ComickFunParser(context: MangaLoaderContext) : } is MangaListFilter.Advanced -> { - filter.tags.forEach { tag -> - url.addQueryParameter("genres", tag.key) + + filter.tags.forEach { + url.addQueryParameter("genres", it.key) } + + filter.tagsExclude.forEach { + url.addQueryParameter("excludes", it.key) + } + url.addQueryParameter( "sort", when (filter.sortOrder) { SortOrder.POPULARITY -> "view" + SortOrder.UPDATED -> "uploaded" + SortOrder.NEWEST -> "created_at" SortOrder.RATING -> "rating" else -> "uploaded" }, ) + filter.states.oneOrThrowIfMany()?.let { url.addQueryParameter( "status", @@ -217,40 +225,6 @@ internal class ComickFunParser(context: MangaLoaderContext) : source = source, ) } - - - /*val chaptersBuilder = ChaptersListBuilder(list.size) - val branchedChapters = HashMap, MangaChapter>>() - for (jo in list) { - val vol = jo.getStringOrNull("vol") - val chap = jo.getStringOrNull("chap") - val volChap = vol to chap - val locale = Locale.forLanguageTag(jo.getString("lang")) - val lc = locale.getDisplayName(locale).toTitleCase(locale) - val branch = (list.indices).firstNotNullOf { i -> - val b = if (i == 0) lc else "$lc ($i)" - if (branchedChapters[b]?.get(volChap) == null) b else null - } - val chapter = MangaChapter( - id = generateUid(jo.getLong("id")), - name = buildString { - vol?.let { append("Vol ").append(it).append(' ') } - chap?.let { append("Chap ").append(it) } - jo.getStringOrNull("title")?.let { append(": ").append(it) } - }, - number = branchedChapters[branch]?.size?.plus(1) ?: 1, - url = jo.getString("hid"), - scanlator = jo.optJSONArray("group_name")?.asIterable()?.joinToString() - ?.takeUnless { it.isBlank() }, - uploadDate = dateFormat.tryParse(jo.getString("created_at").substringBefore('T')), - branch = branch, - source = source, - ) - if (chaptersBuilder.add(chapter)) { - branchedChapters.getOrPut(branch, ::HashMap)[volChap] = chapter - } - } - return chaptersBuilder.toList()*/ } private fun JSONObject.selectGenres(tags: SparseArrayCompat): Set {