[ImmortalUpdates] Update descrambling logic (#15157)
* [ImmortalUpdates] Update descrambling logic * Bump version
This commit is contained in:
parent
9b3420734e
commit
24e5d03a62
|
@ -11,6 +11,7 @@ import android.graphics.Rect
|
||||||
import app.cash.quickjs.QuickJs
|
import app.cash.quickjs.QuickJs
|
||||||
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.GET
|
||||||
|
import eu.kanade.tachiyomi.network.interceptor.rateLimit
|
||||||
import eu.kanade.tachiyomi.source.model.Page
|
import eu.kanade.tachiyomi.source.model.Page
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||||
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
||||||
|
@ -23,21 +24,23 @@ class ImmortalUpdates : Madara("Immortal Updates", "https://immortalupdates.com"
|
||||||
|
|
||||||
override val useNewChapterEndpoint: Boolean = true
|
override val useNewChapterEndpoint: Boolean = true
|
||||||
|
|
||||||
override val client = super.client.newBuilder().addInterceptor { chain ->
|
override val client = super.client.newBuilder()
|
||||||
val response = chain.proceed(chain.request())
|
.rateLimit(1, 2)
|
||||||
|
.addInterceptor { chain ->
|
||||||
|
val response = chain.proceed(chain.request())
|
||||||
|
|
||||||
if (response.request.url.fragment?.contains(DESCRAMBLE) != true) {
|
if (response.request.url.fragment?.contains(DESCRAMBLE) != true) {
|
||||||
return@addInterceptor response
|
return@addInterceptor response
|
||||||
}
|
}
|
||||||
val fragment = response.request.url.fragment!!
|
val fragment = response.request.url.fragment!!
|
||||||
val args = fragment.substringAfter("$DESCRAMBLE=").split(",")
|
val args = fragment.substringAfter("$DESCRAMBLE=").split(",")
|
||||||
|
|
||||||
val image = unscrambleImage(response.body!!.byteStream(), args)
|
val image = unscrambleImage(response.body!!.byteStream(), args)
|
||||||
val body = image.toResponseBody("image/jpeg".toMediaTypeOrNull())
|
val body = image.toResponseBody("image/jpeg".toMediaTypeOrNull())
|
||||||
return@addInterceptor response.newBuilder()
|
return@addInterceptor response.newBuilder()
|
||||||
.body(body)
|
.body(body)
|
||||||
.build()
|
.build()
|
||||||
}.build()
|
}.build()
|
||||||
|
|
||||||
override fun pageListParse(document: Document): List<Page> {
|
override fun pageListParse(document: Document): List<Page> {
|
||||||
val pageList = super.pageListParse(document).toMutableList()
|
val pageList = super.pageListParse(document).toMutableList()
|
||||||
|
@ -51,11 +54,11 @@ class ImmortalUpdates : Madara("Immortal Updates", "https://immortalupdates.com"
|
||||||
|
|
||||||
unscramblingCalls.replace("\r", "").split("\n").forEach {
|
unscramblingCalls.replace("\r", "").split("\n").forEach {
|
||||||
val args = unfuckJs(it)
|
val args = unfuckJs(it)
|
||||||
.substringAfter("(")
|
.substringAfter("get_img(")
|
||||||
.substringBefore(")")
|
.substringBefore(")")
|
||||||
|
|
||||||
val filenameFragment = args.split(",")[0].removeSurrounding("'")
|
val filenameFragment = args.split(",")[0].removeSurrounding("'")
|
||||||
val page = pageList.firstOrNull { it.imageUrl!!.contains(filenameFragment, ignoreCase = true) }
|
val page = pageList.firstOrNull { page -> page.imageUrl!!.contains(filenameFragment, ignoreCase = true) }
|
||||||
?: return@forEach
|
?: return@forEach
|
||||||
val newPageUrl = page.imageUrl!!.toHttpUrl().newBuilder()
|
val newPageUrl = page.imageUrl!!.toHttpUrl().newBuilder()
|
||||||
.fragment("$DESCRAMBLE=$args")
|
.fragment("$DESCRAMBLE=$args")
|
||||||
|
|
|
@ -146,7 +146,7 @@ class MadaraGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("Ichirin No Hana Yuri", "https://ichirinnohanayuriscan.com", "pt-BR", isNsfw = true, overrideVersionCode = 4),
|
SingleLang("Ichirin No Hana Yuri", "https://ichirinnohanayuriscan.com", "pt-BR", isNsfw = true, overrideVersionCode = 4),
|
||||||
SingleLang("Ikifeng", "https://ikifeng.com", "es", isNsfw = true),
|
SingleLang("Ikifeng", "https://ikifeng.com", "es", isNsfw = true),
|
||||||
SingleLang("Illusion Scan", "https://illusionscan.com", "pt-BR", isNsfw = true),
|
SingleLang("Illusion Scan", "https://illusionscan.com", "pt-BR", isNsfw = true),
|
||||||
SingleLang("Immortal Updates", "https://immortalupdates.com", "en", overrideVersionCode = 4),
|
SingleLang("Immortal Updates", "https://immortalupdates.com", "en", overrideVersionCode = 5),
|
||||||
SingleLang("Império Scans", "https://imperioscans.com.br", "pt-BR", className = "ImperioScans", overrideVersionCode = 1),
|
SingleLang("Império Scans", "https://imperioscans.com.br", "pt-BR", className = "ImperioScans", overrideVersionCode = 1),
|
||||||
SingleLang("Inazu Manga", "https://inazumanga.com", "id", isNsfw = true),
|
SingleLang("Inazu Manga", "https://inazumanga.com", "id", isNsfw = true),
|
||||||
SingleLang("InfraFandub", "https://infrafandub.xyz", "es"),
|
SingleLang("InfraFandub", "https://infrafandub.xyz", "es"),
|
||||||
|
|
Loading…
Reference in New Issue