TempleScan(es): Auto update domain (#9651)

* autoupdate domain

* use location header

* remove ci check
This commit is contained in:
kanoou 2025-07-16 10:59:32 -05:00 committed by Draff
parent 46b898fcd4
commit 09bab2593b
Signed by: Draff
GPG Key ID: E8A89F3211677653
2 changed files with 34 additions and 8 deletions

View File

@ -2,8 +2,8 @@ ext {
extName = 'Temple Scan' extName = 'Temple Scan'
extClass = '.TempleScanEsp' extClass = '.TempleScanEsp'
themePkg = 'madara' themePkg = 'madara'
baseUrl = 'https://templescanesp.caserosvive.com.ar' baseUrl = 'https://templescanesp.justep.me'
overrideVersionCode = 3 overrideVersionCode = 4
isNsfw = true isNsfw = true
} }

View File

@ -4,13 +4,16 @@ import android.content.SharedPreferences
import android.widget.Toast import android.widget.Toast
import androidx.preference.EditTextPreference import androidx.preference.EditTextPreference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import androidx.preference.SwitchPreferenceCompat
import eu.kanade.tachiyomi.multisrc.madara.Madara import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.ConfigurableSource
import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import keiyoushi.utils.getPreferences import keiyoushi.utils.getPreferences
import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Locale import java.util.Locale
@ -18,17 +21,30 @@ import java.util.Locale
class TempleScanEsp : class TempleScanEsp :
Madara( Madara(
"Temple Scan", "Temple Scan",
"https://templescanesp.caserosvive.com.ar", "https://templescanesp.justep.me",
"es", "es",
dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("es")), dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("es")),
), ),
ConfigurableSource { ConfigurableSource {
private val isCi = System.getenv("CI") == "true" override val baseUrl get() = preferences.prefBaseUrl
override val baseUrl get() = when { private val fetchedDomainUrl: String by lazy {
isCi -> super.baseUrl if (!preferences.fetchDomainPref()) return@lazy preferences.prefBaseUrl
else -> preferences.prefBaseUrl try {
val initClient = network.cloudflareClient.newBuilder()
.followRedirects(false)
.build()
val headers = super.headersBuilder().build()
val response = initClient.newCall(GET(preferences.prefBaseUrl, headers)).execute()
if (!response.isRedirect) return@lazy preferences.prefBaseUrl
val newHost = response.header("Location")?.toHttpUrlOrNull() ?: return@lazy preferences.prefBaseUrl
val newDomain = "https://${newHost.host}"
preferences.prefBaseUrl = newDomain
newDomain
} catch (_: Exception) {
preferences.prefBaseUrl
}
} }
override val versionId = 4 override val versionId = 4
@ -39,7 +55,7 @@ class TempleScanEsp :
override val client by lazy { override val client by lazy {
super.client.newBuilder() super.client.newBuilder()
.rateLimitHost(baseUrl.toHttpUrl(), 3, 1) .rateLimitHost(fetchedDomainUrl.toHttpUrl(), 3, 1)
.build() .build()
} }
@ -100,8 +116,17 @@ class TempleScanEsp :
true true
} }
}.also { screen.addPreference(it) } }.also { screen.addPreference(it) }
SwitchPreferenceCompat(screen.context).apply {
key = FETCH_DOMAIN_PREF
title = "Buscar dominio automáticamente"
summary = "Intenta buscar el dominio automáticamente al abrir la fuente."
setDefaultValue(true)
}.also { screen.addPreference(it) }
} }
private fun SharedPreferences.fetchDomainPref() = getBoolean(FETCH_DOMAIN_PREF, true)
private var _cachedBaseUrl: String? = null private var _cachedBaseUrl: String? = null
private var SharedPreferences.prefBaseUrl: String private var SharedPreferences.prefBaseUrl: String
get() { get() {
@ -118,5 +143,6 @@ class TempleScanEsp :
companion object { companion object {
private const val BASE_URL_PREF = "overrideBaseUrl" private const val BASE_URL_PREF = "overrideBaseUrl"
private const val DEFAULT_BASE_URL_PREF = "defaultBaseUrl" private const val DEFAULT_BASE_URL_PREF = "defaultBaseUrl"
private const val FETCH_DOMAIN_PREF = "fetchDomain"
} }
} }