From 63280837de602df196af0b717634d8d5df0029ea Mon Sep 17 00:00:00 2001 From: jmir1 Date: Wed, 29 Sep 2021 21:27:11 +0200 Subject: [PATCH] hanime: add filters and video quality setting Co-authored-by: Modder4869 --- src/en/hanime/build.gradle | 2 +- .../animeextension/en/hanime/Hanime.kt | 390 +++++++++++++++++- 2 files changed, 376 insertions(+), 16 deletions(-) diff --git a/src/en/hanime/build.gradle b/src/en/hanime/build.gradle index c1a95d4e8..9915c22bd 100644 --- a/src/en/hanime/build.gradle +++ b/src/en/hanime/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'hanime.tv' pkgNameSuffix = 'en.hanime' extClass = '.Hanime' - extVersionCode = 9 + extVersionCode = 10 libVersion = '12' containsNsfw = true } diff --git a/src/en/hanime/src/eu/kanade/tachiyomi/animeextension/en/hanime/Hanime.kt b/src/en/hanime/src/eu/kanade/tachiyomi/animeextension/en/hanime/Hanime.kt index 7c2238973..c9d9897f4 100644 --- a/src/en/hanime/src/eu/kanade/tachiyomi/animeextension/en/hanime/Hanime.kt +++ b/src/en/hanime/src/eu/kanade/tachiyomi/animeextension/en/hanime/Hanime.kt @@ -1,9 +1,15 @@ package eu.kanade.tachiyomi.animeextension.en.hanime +import android.app.Application +import android.content.SharedPreferences +import androidx.preference.ListPreference +import androidx.preference.PreferenceScreen import com.google.gson.JsonArray import com.google.gson.JsonElement import com.google.gson.JsonObject import com.google.gson.JsonParser +import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource +import eu.kanade.tachiyomi.animesource.model.AnimeFilter import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimesPage import eu.kanade.tachiyomi.animesource.model.SAnime @@ -18,8 +24,11 @@ import okhttp3.Request import okhttp3.RequestBody import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.Response +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get +import java.util.Locale -class Hanime : AnimeHttpSource() { +class Hanime : ConfigurableAnimeSource, AnimeHttpSource() { override val name = "hanime.tv" @@ -29,26 +38,25 @@ class Hanime : AnimeHttpSource() { override val supportsLatest = true + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("source_$id", 0x0000) + } + private fun searchRequestBody(query: String, page: Int, filters: AnimeFilterList): RequestBody { - var filterString = "" - for (filter in filters.list) { - filterString += if (filters.lastIndexOf(filter) == filters.lastIndex) { - "\"${filter.name}\"" - } else { - "\"${filter.name}\"," - } - } + val (includedTags, blackListedTags, brands, tagsMode, orderBy, ordering) = getSearchParameters(filters) + return """ {"search_text": "$query", - "tags": [$filterString], - "tags_mode":"AND", - "brands": [], - "blacklist": [], - "order_by": "likes", - "ordering": "desc", + "tags": $includedTags, + "tags_mode":"$tagsMode", + "brands": $brands, + "blacklist": $blackListedTags, + "order_by": "$orderBy", + "ordering": "$ordering", "page": ${page - 1}} """.trimIndent().toRequestBody("application/json".toMediaType()) } + private val popularRequestHeaders = Headers.headersOf("authority", "search.htv-services.com", "accept", "application/json, text/plain, */*", "content-type", "application/json;charset=UTF-8") @@ -132,6 +140,24 @@ class Hanime : AnimeHttpSource() { return linkList } + override fun List