forked from AlmightyHak/extensions-source
Implemented advanced search feature which is already exists in the TurkAnime website. (#677)
-According to this change, now user could search via tags from anime details page
This commit is contained in:
parent
954c401f8f
commit
65411a254d
2 changed files with 1420 additions and 5 deletions
|
@ -37,6 +37,7 @@ import eu.kanade.tachiyomi.lib.vudeoextractor.VudeoExtractor
|
||||||
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.network.await
|
import eu.kanade.tachiyomi.network.await
|
||||||
|
import eu.kanade.tachiyomi.network.awaitSuccess
|
||||||
import eu.kanade.tachiyomi.util.asJsoup
|
import eu.kanade.tachiyomi.util.asJsoup
|
||||||
import eu.kanade.tachiyomi.util.parallelCatchingFlatMapBlocking
|
import eu.kanade.tachiyomi.util.parallelCatchingFlatMapBlocking
|
||||||
import eu.kanade.tachiyomi.util.parallelMapBlocking
|
import eu.kanade.tachiyomi.util.parallelMapBlocking
|
||||||
|
@ -106,13 +107,70 @@ class TurkAnime : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
|
||||||
|
|
||||||
override fun latestUpdatesNextPageSelector() = popularAnimeNextPageSelector()
|
override fun latestUpdatesNextPageSelector() = popularAnimeNextPageSelector()
|
||||||
|
|
||||||
|
// ============================== Filters ===============================
|
||||||
|
override fun getFilterList(): AnimeFilterList = TurkAnimeFilters.FILTER_LIST
|
||||||
|
|
||||||
// =============================== Search ===============================
|
// =============================== Search ===============================
|
||||||
override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList) =
|
override fun searchAnimeRequest(page: Int, query: String, filters: AnimeFilterList) =
|
||||||
POST(
|
throw UnsupportedOperationException()
|
||||||
"$baseUrl/arama?sayfa=$page",
|
|
||||||
headers,
|
private fun searchAnimeRequest(
|
||||||
FormBody.Builder().add("arama", query).build(),
|
page: Int,
|
||||||
)
|
query: String,
|
||||||
|
filters: TurkAnimeFilters.FilterSearchParams,
|
||||||
|
): Request {
|
||||||
|
return if (query.isBlank()) {
|
||||||
|
POST(
|
||||||
|
"$baseUrl/ajax/animeler?sayfa=$page",
|
||||||
|
xmlHeader,
|
||||||
|
FormBody.Builder().apply {
|
||||||
|
filters.type.takeLast(3).forEach {
|
||||||
|
add("tip[]", it)
|
||||||
|
}
|
||||||
|
filters.genre.takeLast(3).forEach {
|
||||||
|
add("tur[]", it)
|
||||||
|
}
|
||||||
|
filters.year.takeLast(2).forEach {
|
||||||
|
add("yil[]", it)
|
||||||
|
}
|
||||||
|
filters.point.takeLast(2).forEach {
|
||||||
|
add("puan[]", it)
|
||||||
|
}
|
||||||
|
filters.like.takeLast(2).forEach {
|
||||||
|
add("begeni[]", it)
|
||||||
|
}
|
||||||
|
filters.producer.takeLast(3).forEach {
|
||||||
|
add("yapimci[]", it)
|
||||||
|
}
|
||||||
|
filters.studio.takeLast(3).forEach {
|
||||||
|
add("studyo[]", it)
|
||||||
|
}
|
||||||
|
add("listele", filters.list)
|
||||||
|
add("sezon", filters.season)
|
||||||
|
add("sirala", filters.sort)
|
||||||
|
}.build(),
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
POST(
|
||||||
|
"$baseUrl/arama?sayfa=$page",
|
||||||
|
headers,
|
||||||
|
FormBody.Builder().add("arama", query).build(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun getSearchAnime(
|
||||||
|
page: Int,
|
||||||
|
query: String,
|
||||||
|
filters: AnimeFilterList,
|
||||||
|
): AnimesPage {
|
||||||
|
val params = TurkAnimeFilters.getSearchParameters(filters)
|
||||||
|
return client.newCall(searchAnimeRequest(page, query, params))
|
||||||
|
.awaitSuccess()
|
||||||
|
.let { response ->
|
||||||
|
searchAnimeParse(response)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun searchAnimeParse(response: Response): AnimesPage {
|
override fun searchAnimeParse(response: Response): AnimesPage {
|
||||||
val document = response.asJsoup()
|
val document = response.asJsoup()
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue