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