From 812e9c2e54f8cc37b56009a20eba168c49af964d Mon Sep 17 00:00:00 2001 From: Arkai1 Date: Thu, 10 Apr 2025 10:39:58 +0530 Subject: [PATCH] Update HiAnime.kt --- .../animeextension/en/zoro/HiAnime.kt | 63 +++++++++++++++---- 1 file changed, 50 insertions(+), 13 deletions(-) diff --git a/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/HiAnime.kt b/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/HiAnime.kt index f05e35d3..36863dc4 100644 --- a/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/HiAnime.kt +++ b/src/en/zoro/src/eu/kanade/tachiyomi/animeextension/en/zoro/HiAnime.kt @@ -1,5 +1,11 @@ package eu.kanade.tachiyomi.animeextension.en.zoro +import android.app.Application +import android.content.SharedPreferences +import android.widget.Toast +import androidx.preference.EditTextPreference +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.Video import eu.kanade.tachiyomi.lib.megacloudextractor.MegaCloudExtractor @@ -8,17 +14,16 @@ import eu.kanade.tachiyomi.multisrc.zorotheme.ZoroTheme import eu.kanade.tachiyomi.network.GET import okhttp3.Request import org.jsoup.nodes.Element +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get -class HiAnime : ZoroTheme( - "en", - "HiAnime", - "https://hianime.to", - hosterNames = listOf( - "HD-1", - "HD-2", - "StreamTape", - ), +class HiAnime : ConfigurableAnimeSource, ZoroTheme( + lang = "en", + name = "HiAnime", + baseUrl = preferences.getString(PREF_BASE_URL_KEY, DEFAULT_BASE_URL)!!, + hosterNames = listOf("HD-1", "HD-2", "StreamTape"), ) { + override val id = 6706411382606718900L override val ajaxRoute = "/v2" @@ -26,7 +31,9 @@ class HiAnime : ZoroTheme( private val streamtapeExtractor by lazy { StreamTapeExtractor(client) } private val megaCloudExtractor by lazy { MegaCloudExtractor(client, headers, preferences) } - override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/recently-updated?page=$page", docHeaders) + override fun latestUpdatesRequest(page: Int): Request { + return GET("$baseUrl/recently-updated?page=$page", docHeaders) + } override fun popularAnimeFromElement(element: Element): SAnime { return super.popularAnimeFromElement(element).apply { @@ -38,11 +45,41 @@ class HiAnime : ZoroTheme( return when (server.name) { "StreamTape" -> { streamtapeExtractor.videoFromUrl(server.link, "Streamtape - ${server.type}") - ?.let(::listOf) - ?: emptyList() + ?.let(::listOf) ?: emptyList() + } + "HD-1", "HD-2" -> { + megaCloudExtractor.getVideosFromUrl(server.link, server.type, server.name) } - "HD-1", "HD-2" -> megaCloudExtractor.getVideosFromUrl(server.link, server.type, server.name) else -> emptyList() } } + + override fun setupPreferenceScreen(screen: PreferenceScreen) { + val baseUrlPref = EditTextPreference(screen.context).apply { + key = PREF_BASE_URL_KEY + title = "Custom domain" + summary = "Set a custom domain to override the default ($DEFAULT_BASE_URL)" + dialogTitle = "Custom domain" + setDefaultValue(DEFAULT_BASE_URL) + setOnPreferenceChangeListener { _, newValue -> + Toast.makeText( + screen.context, + "Restart Aniyomi to apply changes.", + Toast.LENGTH_LONG + ).show() + true // Save the preference + } + } + + screen.addPreference(baseUrlPref) + } + + companion object { + private const val PREF_BASE_URL_KEY = "pref_base_url" + private const val DEFAULT_BASE_URL = "https://hianime.to" + + private val preferences: SharedPreferences by lazy { + Injekt.get().getSharedPreferences("hianime", 0) + } + } }