SushiScan: Add random UA (#4479)

Add UA
This commit is contained in:
Chopper 2024-08-07 23:27:23 -03:00 committed by Draff
parent fa0910b72c
commit 4955c0f1e5
No known key found for this signature in database
GPG Key ID: E8A89F3211677653
2 changed files with 41 additions and 2 deletions

View File

@ -3,7 +3,11 @@ ext {
extClass = '.SushiScan' extClass = '.SushiScan'
themePkg = 'mangathemesia' themePkg = 'mangathemesia'
baseUrl = 'https://sushiscan.net' baseUrl = 'https://sushiscan.net'
overrideVersionCode = 11 overrideVersionCode = 12
} }
apply from: "$rootDir/common.gradle" apply from: "$rootDir/common.gradle"
dependencies {
implementation project(':lib:randomua')
}

View File

@ -1,8 +1,15 @@
package eu.kanade.tachiyomi.extension.fr.sushiscan 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.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.interceptor.rateLimit 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.FilterList
import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
@ -13,17 +20,38 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import okhttp3.Request import okhttp3.Request
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Locale import java.util.Locale
import java.util.concurrent.TimeUnit 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() override val client: OkHttpClient = super.client.newBuilder()
.setRandomUserAgent(
preferences.getPrefUAType(),
preferences.getPrefCustomUA(),
)
.rateLimit(2, 1, TimeUnit.SECONDS) .rateLimit(2, 1, TimeUnit.SECONDS)
.build() .build()
override fun headersBuilder(): Headers.Builder = super.headersBuilder() override fun headersBuilder(): Headers.Builder = super.headersBuilder()
.addCustomUA()
.set("Referer", "$baseUrl$mangaUrlDirectory") .set("Referer", "$baseUrl$mangaUrlDirectory")
override val altNamePrefix = "Nom alternatif : " 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://")) } 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 @Serializable
data class TSReader( data class TSReader(
val sources: List<ReaderImageSource>, val sources: List<ReaderImageSource>,