diff --git a/src/fr/sushiscan/build.gradle b/src/fr/sushiscan/build.gradle index b38650f60..b88ddce26 100644 --- a/src/fr/sushiscan/build.gradle +++ b/src/fr/sushiscan/build.gradle @@ -3,7 +3,11 @@ ext { extClass = '.SushiScan' themePkg = 'mangathemesia' baseUrl = 'https://sushiscan.net' - overrideVersionCode = 11 + overrideVersionCode = 12 } apply from: "$rootDir/common.gradle" + +dependencies { + implementation project(':lib:randomua') +} diff --git a/src/fr/sushiscan/src/eu/kanade/tachiyomi/extension/fr/sushiscan/SushiScan.kt b/src/fr/sushiscan/src/eu/kanade/tachiyomi/extension/fr/sushiscan/SushiScan.kt index 9f5cdf4cc..c25827756 100644 --- a/src/fr/sushiscan/src/eu/kanade/tachiyomi/extension/fr/sushiscan/SushiScan.kt +++ b/src/fr/sushiscan/src/eu/kanade/tachiyomi/extension/fr/sushiscan/SushiScan.kt @@ -1,8 +1,15 @@ package eu.kanade.tachiyomi.extension.fr.sushiscan +import android.app.Application +import androidx.preference.PreferenceScreen +import eu.kanade.tachiyomi.lib.randomua.addRandomUAPreferenceToScreen +import eu.kanade.tachiyomi.lib.randomua.getPrefCustomUA +import eu.kanade.tachiyomi.lib.randomua.getPrefUAType +import eu.kanade.tachiyomi.lib.randomua.setRandomUserAgent import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.interceptor.rateLimit +import eu.kanade.tachiyomi.source.ConfigurableSource import eu.kanade.tachiyomi.source.model.FilterList import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.SManga @@ -13,17 +20,38 @@ import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import okhttp3.Request import org.jsoup.nodes.Document +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit -class SushiScan : MangaThemesia("Sushi-Scan", "https://sushiscan.net", "fr", mangaUrlDirectory = "/catalogue", dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.FRENCH)) { +class SushiScan : + MangaThemesia( + "Sushi-Scan", + "https://sushiscan.net", + "fr", + mangaUrlDirectory = "/catalogue", + dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale.FRENCH), + ), + ConfigurableSource { + + private val preferences = Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000) + + override fun setupPreferenceScreen(screen: PreferenceScreen) { + addRandomUAPreferenceToScreen(screen) + } override val client: OkHttpClient = super.client.newBuilder() + .setRandomUserAgent( + preferences.getPrefUAType(), + preferences.getPrefCustomUA(), + ) .rateLimit(2, 1, TimeUnit.SECONDS) .build() override fun headersBuilder(): Headers.Builder = super.headersBuilder() + .addCustomUA() .set("Referer", "$baseUrl$mangaUrlDirectory") override val altNamePrefix = "Nom alternatif : " @@ -58,6 +86,13 @@ class SushiScan : MangaThemesia("Sushi-Scan", "https://sushiscan.net", "fr", man return imageUrls.mapIndexed { index, imageUrl -> Page(index, document.location(), imageUrl.replace("http://", "https://")) } } + private fun Headers.Builder.addCustomUA(): Headers.Builder { + preferences.getPrefCustomUA() + .takeIf { !it.isNullOrBlank() } + ?.let { set("User-Agent", it) } + return this + } + @Serializable data class TSReader( val sources: List<ReaderImageSource>,