Fix MangaRock filters (closes #984)
This commit is contained in:
parent
fc3a2bf425
commit
e3cdc833b7
@ -5,12 +5,13 @@ ext {
|
||||
appName = 'Tachiyomi: Manga Rock'
|
||||
pkgNameSuffix = 'en.mangarock'
|
||||
extClass = '.MangaRock'
|
||||
extVersionCode = 6
|
||||
extVersionCode = 7
|
||||
libVersion = '1.0'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly 'com.google.code.gson:gson:2.8.2'
|
||||
compileOnly 'com.google.code.gson:gson:2.8.5'
|
||||
compileOnly 'com.github.salomonbrys.kotson:kotson:2.5.0'
|
||||
}
|
||||
|
||||
apply from: "$rootDir/common.gradle"
|
||||
|
@ -1,13 +1,24 @@
|
||||
package eu.kanade.tachiyomi.extension.en.mangarock
|
||||
|
||||
import com.google.gson.GsonBuilder
|
||||
import com.github.salomonbrys.kotson.jsonObject
|
||||
import com.github.salomonbrys.kotson.set
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.network.POST
|
||||
import eu.kanade.tachiyomi.source.model.*
|
||||
import eu.kanade.tachiyomi.source.model.Filter
|
||||
import eu.kanade.tachiyomi.source.model.FilterList
|
||||
import eu.kanade.tachiyomi.source.model.MangasPage
|
||||
import eu.kanade.tachiyomi.source.model.Page
|
||||
import eu.kanade.tachiyomi.source.model.SChapter
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import eu.kanade.tachiyomi.source.online.HttpSource
|
||||
import okhttp3.*
|
||||
import okhttp3.MediaType
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.RequestBody
|
||||
import okhttp3.Response
|
||||
import okhttp3.ResponseBody
|
||||
import org.json.JSONObject
|
||||
import java.util.*
|
||||
import java.util.ArrayList
|
||||
import kotlin.experimental.and
|
||||
import kotlin.experimental.xor
|
||||
|
||||
@ -59,14 +70,13 @@ class MangaRock : HttpSource() {
|
||||
|
||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||
val jsonType = MediaType.parse("application/jsonType; charset=utf-8")
|
||||
val gson = GsonBuilder().create()
|
||||
|
||||
// Filter
|
||||
if (query.isBlank()) {
|
||||
var status = ""
|
||||
var rank = ""
|
||||
var orderBy = ""
|
||||
var genres = ""
|
||||
val genres = jsonObject()
|
||||
filters.forEach { filter ->
|
||||
when (filter) {
|
||||
is StatusFilter -> {
|
||||
@ -83,22 +93,27 @@ class MangaRock : HttpSource() {
|
||||
orderBy = filter.toUriPart()
|
||||
}
|
||||
is GenreList -> {
|
||||
genres = filter.state
|
||||
.filter { genre -> genre.state != Filter.TriState.STATE_IGNORE }
|
||||
.map { genre ->
|
||||
"\"${genre.id}\": ${if (genre.state == Filter.TriState.STATE_INCLUDE) "true" else "false"}"
|
||||
}
|
||||
.joinToString(",")
|
||||
filter.state
|
||||
.filter { it.state != Filter.TriState.STATE_IGNORE }
|
||||
.forEach { genres[it.id] = it.state == Filter.TriState.STATE_INCLUDE }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val body = RequestBody.create(jsonType, gson.toJson(mapOf("status" to status, "genres" to genres, "rank" to rank, "order" to orderBy)))
|
||||
val body = RequestBody.create(jsonType, jsonObject(
|
||||
"status" to status,
|
||||
"genres" to genres,
|
||||
"rank" to rank,
|
||||
"order" to orderBy
|
||||
).toString())
|
||||
return POST("$baseUrl/mrs_filter", headers, body)
|
||||
}
|
||||
|
||||
// Regular search
|
||||
val body = RequestBody.create(jsonType, gson.toJson(mapOf("type" to "series", "keywords" to query)))
|
||||
val body = RequestBody.create(jsonType, jsonObject(
|
||||
"type" to "series",
|
||||
"keywords" to query
|
||||
).toString())
|
||||
return POST("$baseUrl/mrs_search", headers, body)
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user