[RU]Libmanga/hentai real content type image (#10954)
This commit is contained in:
parent
2df17713ad
commit
7c566ae604
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'HentaiLib'
|
extName = 'HentaiLib'
|
||||||
pkgNameSuffix = 'ru.libhentai'
|
pkgNameSuffix = 'ru.libhentai'
|
||||||
extClass = '.LibHentai'
|
extClass = '.LibHentai'
|
||||||
extVersionCode = 6
|
extVersionCode = 7
|
||||||
isNsfw = true
|
isNsfw = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,9 +31,12 @@ import kotlinx.serialization.json.jsonObject
|
||||||
import kotlinx.serialization.json.jsonPrimitive
|
import kotlinx.serialization.json.jsonPrimitive
|
||||||
import okhttp3.Headers
|
import okhttp3.Headers
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
||||||
|
import okhttp3.Interceptor
|
||||||
|
import okhttp3.MediaType.Companion.toMediaType
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
|
import okhttp3.ResponseBody.Companion.toResponseBody
|
||||||
import org.jsoup.nodes.Element
|
import org.jsoup.nodes.Element
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
|
@ -63,13 +66,25 @@ class LibHentai : ConfigurableSource, HttpSource() {
|
||||||
add("Accept", "image/webp,*/*;q=0.8")
|
add("Accept", "image/webp,*/*;q=0.8")
|
||||||
add("Referer", baseUrl)
|
add("Referer", baseUrl)
|
||||||
}
|
}
|
||||||
|
private fun imageContentTypeIntercept(chain: Interceptor.Chain): Response {
|
||||||
|
val originalRequest = chain.request()
|
||||||
|
val response = chain.proceed(originalRequest)
|
||||||
|
val urlRequest = originalRequest.url.toString()
|
||||||
|
val possibleType = urlRequest.substringAfterLast("/").split(".")
|
||||||
|
return if (!urlRequest.contains(baseUrl) and (possibleType.size == 2)) {
|
||||||
|
val realType = possibleType[1]
|
||||||
|
val image = response.body?.byteString()?.toResponseBody("image/$realType".toMediaType())
|
||||||
|
response.newBuilder().body(image).build()
|
||||||
|
} else
|
||||||
|
response
|
||||||
|
}
|
||||||
private val authClient = network.cloudflareClient
|
private val authClient = network.cloudflareClient
|
||||||
|
|
||||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||||
.connectTimeout(10, TimeUnit.SECONDS)
|
.connectTimeout(10, TimeUnit.SECONDS)
|
||||||
.readTimeout(30, TimeUnit.SECONDS)
|
.readTimeout(30, TimeUnit.SECONDS)
|
||||||
.addNetworkInterceptor(RateLimitInterceptor(3))
|
.addNetworkInterceptor(RateLimitInterceptor(3))
|
||||||
|
.addInterceptor { imageContentTypeIntercept(it) }
|
||||||
.addInterceptor { chain ->
|
.addInterceptor { chain ->
|
||||||
val originalRequest = chain.request()
|
val originalRequest = chain.request()
|
||||||
if (originalRequest.url.toString().contains(baseUrl))
|
if (originalRequest.url.toString().contains(baseUrl))
|
||||||
|
|
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'MangaLib'
|
extName = 'MangaLib'
|
||||||
pkgNameSuffix = 'ru.libmanga'
|
pkgNameSuffix = 'ru.libmanga'
|
||||||
extClass = '.LibManga'
|
extClass = '.LibManga'
|
||||||
extVersionCode = 62
|
extVersionCode = 63
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
|
@ -31,9 +31,12 @@ import kotlinx.serialization.json.jsonObject
|
||||||
import kotlinx.serialization.json.jsonPrimitive
|
import kotlinx.serialization.json.jsonPrimitive
|
||||||
import okhttp3.Headers
|
import okhttp3.Headers
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
||||||
|
import okhttp3.Interceptor
|
||||||
|
import okhttp3.MediaType.Companion.toMediaType
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
|
import okhttp3.ResponseBody.Companion.toResponseBody
|
||||||
import org.jsoup.nodes.Element
|
import org.jsoup.nodes.Element
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
|
@ -56,11 +59,23 @@ class LibManga : ConfigurableSource, HttpSource() {
|
||||||
override val lang = "ru"
|
override val lang = "ru"
|
||||||
|
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
private fun imageContentTypeIntercept(chain: Interceptor.Chain): Response {
|
||||||
|
val originalRequest = chain.request()
|
||||||
|
val response = chain.proceed(originalRequest)
|
||||||
|
val urlRequest = originalRequest.url.toString()
|
||||||
|
val possibleType = urlRequest.substringAfterLast("/").split(".")
|
||||||
|
return if (!urlRequest.contains(baseUrl) and (possibleType.size == 2)) {
|
||||||
|
val realType = possibleType[1]
|
||||||
|
val image = response.body?.byteString()?.toResponseBody("image/$realType".toMediaType())
|
||||||
|
response.newBuilder().body(image).build()
|
||||||
|
} else
|
||||||
|
response
|
||||||
|
}
|
||||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||||
.connectTimeout(10, TimeUnit.SECONDS)
|
.connectTimeout(10, TimeUnit.SECONDS)
|
||||||
.readTimeout(30, TimeUnit.SECONDS)
|
.readTimeout(30, TimeUnit.SECONDS)
|
||||||
.addNetworkInterceptor(RateLimitInterceptor(3))
|
.addNetworkInterceptor(RateLimitInterceptor(3))
|
||||||
|
.addInterceptor { imageContentTypeIntercept(it) }
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
private val baseOrig: String = "https://mangalib.me"
|
private val baseOrig: String = "https://mangalib.me"
|
||||||
|
|
Loading…
Reference in New Issue