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 3867e32ca..e02271021 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 @@ -28,6 +28,7 @@ internal abstract class MadaraParser( SortOrder.POPULARITY, SortOrder.NEWEST, SortOrder.ALPHABETICAL, + SortOrder.RATING, ) protected open val tagPrefix = "manga-genre/" @@ -176,14 +177,18 @@ internal abstract class MadaraParser( SortOrder.UPDATED -> append("latest") SortOrder.NEWEST -> append("new-manga") SortOrder.ALPHABETICAL -> append("alphabet") - else -> append("latest") + SortOrder.RATING -> append("rating") } } webClient.httpGet(url).parseHtml() } else { val tag = tags.oneOrThrowIfMany() - val payload = createRequestTemplate() - payload["page"] = page.toString() + + val payload = if (sortOrder == SortOrder.RATING) { + createRequestTemplate(ratingRequest) + } else { + createRequestTemplate(defaultRequest) + } when (sortOrder) { SortOrder.POPULARITY -> payload["vars[meta_key]"] = "_wp_manga_views" SortOrder.UPDATED -> payload["vars[meta_key]"] = "_latest_update" @@ -193,8 +198,9 @@ internal abstract class MadaraParser( payload["vars[order]"] = "ASC" } - else -> payload["vars[meta_key]"] = "_latest_update" + SortOrder.RATING -> {} } + payload["page"] = page.toString() payload["vars[wp-manga-genre]"] = tag?.key.orEmpty() payload["vars[s]"] = query?.urlEncoded().orEmpty() webClient.httpPost( @@ -547,14 +553,11 @@ internal abstract class MadaraParser( } } + private val ratingRequest = "action=madara_load_more&page=1&template=madara-core%2Fcontent%2Fcontent-search&vars%5Bs%5D=&vars%5Borderby%5D%5Bquery_avarage_reviews%5D=DESC&vars%5Borderby%5D%5Bquery_total_reviews%5D=DESC&vars%5Bpaged%5D=1&vars%5Btemplate%5D=search&vars%5Bmeta_query%5D%5B0%5D%5Brelation%5D=AND&vars%5Bmeta_query%5D%5B0%5D%5Bquery_avarage_reviews%5D%5Bkey%5D=_manga_avarage_reviews&vars%5Bmeta_query%5D%5B0%5D%5Bquery_total_reviews%5D%5Bkey%5D=_manga_total_votes&vars%5Bmeta_query%5D%5Brelation%5D=AND&vars%5Bpost_type%5D=wp-manga&vars%5Bpost_status%5D=publish&vars%5Bmanga_archives_item_layout%5D=default" + private val defaultRequest = "action=madara_load_more&page=1&template=madara-core%2Fcontent%2Fcontent-search&vars%5Bs%5D=&vars%5Borderby%5D=meta_value_num&vars%5Bpaged%5D=1&vars%5Btemplate%5D=search&vars%5Bmeta_query%5D%5B0%5D%5Brelation%5D=AND&vars%5Bmeta_query%5D%5Brelation%5D=OR&vars%5Bpost_type%5D=wp-manga&vars%5Bpost_status%5D=publish&vars%5Bmeta_key%5D=_latest_update&vars%5Border%5D=desc&vars%5Bmanga_archives_item_layout%5D=default" private companion object { - - private fun createRequestTemplate() = - ("action=madara_load_more&page=1&template=madara-core%2Fcontent%2Fcontent-search&vars%5Bs%5D=&vars%5B" + - "orderby%5D=meta_value_num&vars%5Bpaged%5D=1&vars%5Btemplate%5D=search&vars%5Bmeta_query" + - "%5D%5B0%5D%5Brelation%5D=AND&vars%5Bmeta_query%5D%5Brelation%5D=OR&vars%5Bpost_type" + - "%5D=wp-manga&vars%5Bpost_status%5D=publish&vars%5Bmeta_key%5D=_latest_update&vars%5Border" + - "%5D=desc&vars%5Bmanga_archives_item_layout%5D=default").split( + private fun createRequestTemplate(query : String) = + (query).split( '&', ).map { val pos = it.indexOf('=')