LectorManga: Fix images couldn't be loaded (#19016)
* Fix * Minor change * bruh I delete the ratelimit * Rename
This commit is contained in:
parent
5176d3bdab
commit
92c5748333
src/es
lectormanga
tumangaonline
|
@ -5,7 +5,7 @@ ext {
|
||||||
extName = 'LectorManga'
|
extName = 'LectorManga'
|
||||||
pkgNameSuffix = 'es.lectormanga'
|
pkgNameSuffix = 'es.lectormanga'
|
||||||
extClass = '.LectorManga'
|
extClass = '.LectorManga'
|
||||||
extVersionCode = 30
|
extVersionCode = 31
|
||||||
isNsfw = true
|
isNsfw = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,15 +51,26 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private val imageCDNUrls = arrayOf(
|
private val imageCDNUrls = arrayOf(
|
||||||
"https://img1.followmanga.com", "https://img1.biggestchef.com",
|
"https://img1.followmanga.com",
|
||||||
"https://img1.indalchef.com", "https://img1.recipesandcook.com",
|
"https://img1.biggestchef.com",
|
||||||
"https://img1.cyclingte.com", "https://img1.japanreader.com",
|
"https://img1.indalchef.com",
|
||||||
|
"https://img1.recipesandcook.com",
|
||||||
|
"https://img1.cyclingte.com",
|
||||||
|
"https://img1.japanreader.com",
|
||||||
|
"https://japanreader.com",
|
||||||
)
|
)
|
||||||
|
|
||||||
private val preferences: SharedPreferences by lazy {
|
private val preferences: SharedPreferences by lazy {
|
||||||
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
|
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun OkHttpClient.Builder.rateLimitImageCDNs(hosts: Array<String>, permits: Int, period: Long): OkHttpClient.Builder {
|
||||||
|
hosts.forEach { host ->
|
||||||
|
rateLimitHost(host.toHttpUrlOrNull()!!, permits, period)
|
||||||
|
}
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
private var loadWebView = true
|
private var loadWebView = true
|
||||||
override val client: OkHttpClient = network.client.newBuilder()
|
override val client: OkHttpClient = network.client.newBuilder()
|
||||||
.rateLimitHost(
|
.rateLimitHost(
|
||||||
|
@ -67,40 +78,15 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() {
|
||||||
preferences.getString(WEB_RATELIMIT_PREF, WEB_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(),
|
preferences.getString(WEB_RATELIMIT_PREF, WEB_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(),
|
||||||
60,
|
60,
|
||||||
)
|
)
|
||||||
.rateLimitHost(
|
.rateLimitImageCDNs(
|
||||||
imageCDNUrls[0].toHttpUrlOrNull()!!,
|
imageCDNUrls,
|
||||||
preferences.getString(IMAGE_CDN_RATELIMIT_PREF, IMAGE_CDN_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(),
|
|
||||||
60,
|
|
||||||
)
|
|
||||||
.rateLimitHost(
|
|
||||||
imageCDNUrls[1].toHttpUrlOrNull()!!,
|
|
||||||
preferences.getString(IMAGE_CDN_RATELIMIT_PREF, IMAGE_CDN_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(),
|
|
||||||
60,
|
|
||||||
)
|
|
||||||
.rateLimitHost(
|
|
||||||
imageCDNUrls[2].toHttpUrlOrNull()!!,
|
|
||||||
preferences.getString(IMAGE_CDN_RATELIMIT_PREF, IMAGE_CDN_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(),
|
|
||||||
60,
|
|
||||||
)
|
|
||||||
.rateLimitHost(
|
|
||||||
imageCDNUrls[3].toHttpUrlOrNull()!!,
|
|
||||||
preferences.getString(IMAGE_CDN_RATELIMIT_PREF, IMAGE_CDN_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(),
|
|
||||||
60,
|
|
||||||
)
|
|
||||||
.rateLimitHost(
|
|
||||||
imageCDNUrls[4].toHttpUrlOrNull()!!,
|
|
||||||
preferences.getString(IMAGE_CDN_RATELIMIT_PREF, IMAGE_CDN_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(),
|
|
||||||
60,
|
|
||||||
)
|
|
||||||
.rateLimitHost(
|
|
||||||
imageCDNUrls[5].toHttpUrlOrNull()!!,
|
|
||||||
preferences.getString(IMAGE_CDN_RATELIMIT_PREF, IMAGE_CDN_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(),
|
preferences.getString(IMAGE_CDN_RATELIMIT_PREF, IMAGE_CDN_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(),
|
||||||
60,
|
60,
|
||||||
)
|
)
|
||||||
.addInterceptor { chain ->
|
.addInterceptor { chain ->
|
||||||
val request = chain.request()
|
val request = chain.request()
|
||||||
val url = request.url.toString()
|
val url = request.url
|
||||||
if (url.startsWith("https://img1.japanreader.com") && loadWebView) {
|
if (url.host.contains("japanreader.com") && loadWebView) {
|
||||||
val handler = Handler(Looper.getMainLooper())
|
val handler = Handler(Looper.getMainLooper())
|
||||||
val latch = CountDownLatch(1)
|
val latch = CountDownLatch(1)
|
||||||
var webView: WebView? = null
|
var webView: WebView? = null
|
||||||
|
@ -121,7 +107,7 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() {
|
||||||
val headers = mutableMapOf<String, String>()
|
val headers = mutableMapOf<String, String>()
|
||||||
headers["Referer"] = baseUrl
|
headers["Referer"] = baseUrl
|
||||||
|
|
||||||
webview.loadUrl(url, headers)
|
webview.loadUrl(url.toString(), headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
latch.await()
|
latch.await()
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
extName = 'TuMangaOnline'
|
extName = 'TuMangaOnline'
|
||||||
pkgNameSuffix = 'es.tumangaonline'
|
pkgNameSuffix = 'es.tumangaonline'
|
||||||
extClass = '.TuMangaOnline'
|
extClass = '.TuMangaOnline'
|
||||||
extVersionCode = 45
|
extVersionCode = 46
|
||||||
isNsfw = true
|
isNsfw = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,18 +50,28 @@ class TuMangaOnline : ConfigurableSource, ParsedHttpSource() {
|
||||||
.add("Referer", "$baseUrl/")
|
.add("Referer", "$baseUrl/")
|
||||||
}
|
}
|
||||||
|
|
||||||
private val imageCDNUrl = "https://img1.japanreader.com"
|
private val imageCDNUrls = arrayOf(
|
||||||
|
"https://japanreader.com",
|
||||||
|
"https://img1.japanreader.com",
|
||||||
|
)
|
||||||
|
|
||||||
private val preferences: SharedPreferences by lazy {
|
private val preferences: SharedPreferences by lazy {
|
||||||
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
|
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun OkHttpClient.Builder.rateLimitImageCDNs(hosts: Array<String>, permits: Int, period: Long): OkHttpClient.Builder {
|
||||||
|
hosts.forEach { host ->
|
||||||
|
rateLimitHost(host.toHttpUrlOrNull()!!, permits, period)
|
||||||
|
}
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
private var loadWebView = true
|
private var loadWebView = true
|
||||||
override val client: OkHttpClient = network.client.newBuilder()
|
override val client: OkHttpClient = network.client.newBuilder()
|
||||||
.addInterceptor { chain ->
|
.addInterceptor { chain ->
|
||||||
val request = chain.request()
|
val request = chain.request()
|
||||||
val url = request.url.toString()
|
val url = request.url
|
||||||
if (url.startsWith(imageCDNUrl) && loadWebView) {
|
if (url.host.contains("japanreader.com") && loadWebView) {
|
||||||
val handler = Handler(Looper.getMainLooper())
|
val handler = Handler(Looper.getMainLooper())
|
||||||
val latch = CountDownLatch(1)
|
val latch = CountDownLatch(1)
|
||||||
var webView: WebView? = null
|
var webView: WebView? = null
|
||||||
|
@ -84,7 +94,7 @@ class TuMangaOnline : ConfigurableSource, ParsedHttpSource() {
|
||||||
val headers = mutableMapOf<String, String>()
|
val headers = mutableMapOf<String, String>()
|
||||||
headers["Referer"] = baseUrl
|
headers["Referer"] = baseUrl
|
||||||
|
|
||||||
webview.loadUrl(url, headers)
|
webview.loadUrl(url.toString(), headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
latch.await()
|
latch.await()
|
||||||
|
@ -98,8 +108,8 @@ class TuMangaOnline : ConfigurableSource, ParsedHttpSource() {
|
||||||
preferences.getString(WEB_RATELIMIT_PREF, WEB_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(),
|
preferences.getString(WEB_RATELIMIT_PREF, WEB_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(),
|
||||||
60,
|
60,
|
||||||
)
|
)
|
||||||
.rateLimitHost(
|
.rateLimitImageCDNs(
|
||||||
imageCDNUrl.toHttpUrlOrNull()!!,
|
imageCDNUrls,
|
||||||
preferences.getString(IMAGE_CDN_RATELIMIT_PREF, IMAGE_CDN_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(),
|
preferences.getString(IMAGE_CDN_RATELIMIT_PREF, IMAGE_CDN_RATELIMIT_PREF_DEFAULT_VALUE)!!.toInt(),
|
||||||
60,
|
60,
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue