From f4e38d617a0755c58bf28f648c53eddfa6aba343 Mon Sep 17 00:00:00 2001 From: Secozzi <49240133+Secozzi@users.noreply.github.com> Date: Tue, 28 Feb 2023 09:30:53 +0100 Subject: [PATCH] Add login support (#1340) --- src/en/hanime/build.gradle | 3 +- .../animeextension/en/hanime/Hanime.kt | 90 ++++++++++++++++++- 2 files changed, 90 insertions(+), 3 deletions(-) diff --git a/src/en/hanime/build.gradle b/src/en/hanime/build.gradle index fe90b7d7c..a5865ba68 100644 --- a/src/en/hanime/build.gradle +++ b/src/en/hanime/build.gradle @@ -1,11 +1,12 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' +apply plugin: 'kotlinx-serialization' ext { extName = 'hanime.tv' pkgNameSuffix = 'en.hanime' extClass = '.Hanime' - extVersionCode = 15 + extVersionCode = 16 libVersion = '13' 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 97b48794d..201517795 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 @@ -15,6 +15,7 @@ import eu.kanade.tachiyomi.animesource.online.AnimeHttpSource import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.POST import eu.kanade.tachiyomi.util.asJsoup +import kotlinx.serialization.Serializable import kotlinx.serialization.decodeFromString import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonArray @@ -25,11 +26,13 @@ import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import kotlinx.serialization.json.long import okhttp3.Headers +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.MediaType.Companion.toMediaType import okhttp3.Request import okhttp3.RequestBody import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.Response +import rx.Observable import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy @@ -45,6 +48,8 @@ class Hanime : ConfigurableAnimeSource, AnimeHttpSource() { override val supportsLatest = true + private var authCookie: String? = null + private val json: Json by injectLazy() private val preferences: SharedPreferences by lazy { @@ -69,8 +74,9 @@ class Hanime : ConfigurableAnimeSource, AnimeHttpSource() { private val popularRequestHeaders = Headers.headersOf("authority", "search.htv-services.com", "accept", "application/json, text/plain, */*", "content-type", "application/json;charset=UTF-8") - override fun popularAnimeRequest(page: Int): Request = - POST("https://search.htv-services.com/", popularRequestHeaders, searchRequestBody("", page, AnimeFilterList())) + override fun popularAnimeRequest(page: Int): Request { + return POST("https://search.htv-services.com/", popularRequestHeaders, searchRequestBody("", page, AnimeFilterList())) + } override fun popularAnimeParse(response: Response): AnimesPage { val responseString = response.body!!.string() @@ -127,6 +133,41 @@ class Hanime : ConfigurableAnimeSource, AnimeHttpSource() { return GET(episode.url) } + override fun fetchVideoList(episode: SEpisode): Observable> { + setAuthCookie() + + if (authCookie != null) { + return fetchVideoListPremium(episode) + } + + return super.fetchVideoList(episode) + } + + private fun fetchVideoListPremium(episode: SEpisode): Observable> { + val videoList = mutableListOf