From 0e9e55b9456948526a8253bad9f027152c91a540 Mon Sep 17 00:00:00 2001 From: stevenyomi <95685115+stevenyomi@users.noreply.github.com> Date: Sun, 24 Aug 2025 09:53:51 +0000 Subject: [PATCH] Use `source().asResponseBody()` to fix MIME to avoid extra memory load (#10254) --- src/all/luscious/build.gradle | 2 +- .../kanade/tachiyomi/extension/all/luscious/Luscious.kt | 8 ++++---- src/all/tappytoon/build.gradle | 2 +- .../kanade/tachiyomi/extension/all/tappytoon/Tappytoon.kt | 7 +++---- .../tachiyomi/extension/en/mangakatana/MangaKatana.kt | 8 ++++---- src/en/tsumino/build.gradle | 2 +- .../eu/kanade/tachiyomi/extension/en/tsumino/Tsumino.kt | 8 ++++---- src/es/manhwalatino/build.gradle | 2 +- .../tachiyomi/extension/es/manhwalatino/ManhwaLatino.kt | 8 ++++---- src/id/kiryuu/build.gradle | 2 +- .../src/eu/kanade/tachiyomi/extension/id/kiryuu/Kiryuu.kt | 7 +++---- src/id/komiktap/build.gradle | 2 +- .../eu/kanade/tachiyomi/extension/id/komiktap/Komiktap.kt | 7 +++---- src/pt/argoscomics/build.gradle | 2 +- .../tachiyomi/extension/pt/argoscomics/ArgosComics.kt | 7 +++---- src/pt/arthurscan/build.gradle | 2 +- .../tachiyomi/extension/pt/arthurscan/ArthurScan.kt | 7 +++---- 17 files changed, 39 insertions(+), 44 deletions(-) diff --git a/src/all/luscious/build.gradle b/src/all/luscious/build.gradle index 299ac7810..804eee5fd 100644 --- a/src/all/luscious/build.gradle +++ b/src/all/luscious/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Luscious' extClass = '.LusciousFactory' - extVersionCode = 20 + extVersionCode = 21 isNsfw = true } diff --git a/src/all/luscious/src/eu/kanade/tachiyomi/extension/all/luscious/Luscious.kt b/src/all/luscious/src/eu/kanade/tachiyomi/extension/all/luscious/Luscious.kt index bf52e431c..bbe68f3b3 100644 --- a/src/all/luscious/src/eu/kanade/tachiyomi/extension/all/luscious/Luscious.kt +++ b/src/all/luscious/src/eu/kanade/tachiyomi/extension/all/luscious/Luscious.kt @@ -31,11 +31,11 @@ import kotlinx.serialization.json.putJsonArray import kotlinx.serialization.json.putJsonObject import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.Interceptor -import okhttp3.MediaType.Companion.toMediaTypeOrNull +import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response -import okhttp3.ResponseBody.Companion.toResponseBody +import okhttp3.ResponseBody.Companion.asResponseBody import rx.Observable import uy.kohesive.injekt.injectLazy import java.util.Calendar @@ -63,8 +63,8 @@ abstract class Luscious( private val rewriteOctetStream: Interceptor = Interceptor { chain -> val originalResponse: Response = chain.proceed(chain.request()) if (originalResponse.headers("Content-Type").contains("application/octet-stream") && originalResponse.request.url.toString().contains(".webp")) { - val orgBody = originalResponse.body.bytes() - val newBody = orgBody.toResponseBody("image/webp".toMediaTypeOrNull()) + val orgBody = originalResponse.body.source() + val newBody = orgBody.asResponseBody("image/webp".toMediaType()) originalResponse.newBuilder() .body(newBody) .build() diff --git a/src/all/tappytoon/build.gradle b/src/all/tappytoon/build.gradle index f930b30a2..2521e52d1 100644 --- a/src/all/tappytoon/build.gradle +++ b/src/all/tappytoon/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Tappytoon' extClass = '.TappytoonFactory' - extVersionCode = 8 + extVersionCode = 9 isNsfw = true } diff --git a/src/all/tappytoon/src/eu/kanade/tachiyomi/extension/all/tappytoon/Tappytoon.kt b/src/all/tappytoon/src/eu/kanade/tachiyomi/extension/all/tappytoon/Tappytoon.kt index 5510f6727..b3a3a562b 100644 --- a/src/all/tappytoon/src/eu/kanade/tachiyomi/extension/all/tappytoon/Tappytoon.kt +++ b/src/all/tappytoon/src/eu/kanade/tachiyomi/extension/all/tappytoon/Tappytoon.kt @@ -17,7 +17,7 @@ import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.MediaType.Companion.toMediaType import okhttp3.Request import okhttp3.Response -import okhttp3.ResponseBody.Companion.toResponseBody +import okhttp3.ResponseBody.Companion.asResponseBody import uy.kohesive.injekt.injectLazy import java.io.IOException import java.text.SimpleDateFormat @@ -40,9 +40,8 @@ class Tappytoon(override val lang: String) : HttpSource() { } // Fix image content type val type = IMG_CONTENT_TYPE.toMediaType() - val body = res.body.bytes().toResponseBody(type) - return@addInterceptor res.newBuilder().body(body) - .header("Content-Type", IMG_CONTENT_TYPE).build() + val body = res.body.source().asResponseBody(type) + return@addInterceptor res.newBuilder().body(body).build() } // Throw JSON error if available if (mime == "application/json") { diff --git a/src/en/mangakatana/src/eu/kanade/tachiyomi/extension/en/mangakatana/MangaKatana.kt b/src/en/mangakatana/src/eu/kanade/tachiyomi/extension/en/mangakatana/MangaKatana.kt index a9c3f936a..5e7b6adef 100644 --- a/src/en/mangakatana/src/eu/kanade/tachiyomi/extension/en/mangakatana/MangaKatana.kt +++ b/src/en/mangakatana/src/eu/kanade/tachiyomi/extension/en/mangakatana/MangaKatana.kt @@ -15,11 +15,11 @@ import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup import keiyoushi.utils.getPreferencesLazy import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.MediaType.Companion.toMediaTypeOrNull +import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response -import okhttp3.ResponseBody.Companion.toResponseBody +import okhttp3.ResponseBody.Companion.asResponseBody import org.jsoup.nodes.Document import org.jsoup.nodes.Element import java.text.SimpleDateFormat @@ -40,9 +40,9 @@ class MangaKatana : ConfigurableSource, ParsedHttpSource() { override val client: OkHttpClient = network.cloudflareClient.newBuilder().addNetworkInterceptor { chain -> val originalResponse = chain.proceed(chain.request()) if (originalResponse.headers("Content-Type").contains("application/octet-stream")) { - val orgBody = originalResponse.body.bytes() + val orgBody = originalResponse.body.source() val extension = chain.request().url.toString().substringAfterLast(".") - val newBody = orgBody.toResponseBody("image/$extension".toMediaTypeOrNull()) + val newBody = orgBody.asResponseBody("image/$extension".toMediaType()) originalResponse.newBuilder() .body(newBody) .build() diff --git a/src/en/tsumino/build.gradle b/src/en/tsumino/build.gradle index 29be923eb..568c6764d 100644 --- a/src/en/tsumino/build.gradle +++ b/src/en/tsumino/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Tsumino' extClass = '.Tsumino' - extVersionCode = 7 + extVersionCode = 8 isNsfw = true } diff --git a/src/en/tsumino/src/eu/kanade/tachiyomi/extension/en/tsumino/Tsumino.kt b/src/en/tsumino/src/eu/kanade/tachiyomi/extension/en/tsumino/Tsumino.kt index 1ec96bea9..e21f6da08 100644 --- a/src/en/tsumino/src/eu/kanade/tachiyomi/extension/en/tsumino/Tsumino.kt +++ b/src/en/tsumino/src/eu/kanade/tachiyomi/extension/en/tsumino/Tsumino.kt @@ -25,11 +25,11 @@ import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive import okhttp3.FormBody import okhttp3.Interceptor -import okhttp3.MediaType.Companion.toMediaTypeOrNull +import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Request import okhttp3.Response -import okhttp3.ResponseBody.Companion.toResponseBody +import okhttp3.ResponseBody.Companion.asResponseBody import rx.Observable import uy.kohesive.injekt.injectLazy @@ -49,8 +49,8 @@ class Tsumino : HttpSource() { if (originalResponse.headers("Content-Type").contains("application/octet-stream") && originalResponse.request.url.pathSegments.any { it == "parts" } ) { - val orgBody = originalResponse.body.bytes() - val newBody = orgBody.toResponseBody("image/jpeg".toMediaTypeOrNull()) + val orgBody = originalResponse.body.source() + val newBody = orgBody.asResponseBody("image/jpeg".toMediaType()) originalResponse.newBuilder() .body(newBody) .build() diff --git a/src/es/manhwalatino/build.gradle b/src/es/manhwalatino/build.gradle index 2fd22ad19..b2afbc88d 100644 --- a/src/es/manhwalatino/build.gradle +++ b/src/es/manhwalatino/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.ManhwaLatino' themePkg = 'madara' baseUrl = 'https://manhwa-latino.com' - overrideVersionCode = 8 + overrideVersionCode = 9 isNsfw = true } diff --git a/src/es/manhwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/ManhwaLatino.kt b/src/es/manhwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/ManhwaLatino.kt index 8ea2bfcae..ff72d721a 100644 --- a/src/es/manhwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/ManhwaLatino.kt +++ b/src/es/manhwalatino/src/eu/kanade/tachiyomi/extension/es/manhwalatino/ManhwaLatino.kt @@ -6,10 +6,10 @@ import eu.kanade.tachiyomi.network.interceptor.rateLimitHost import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.util.asJsoup import okhttp3.HttpUrl.Companion.toHttpUrl -import okhttp3.MediaType.Companion.toMediaTypeOrNull +import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient import okhttp3.Response -import okhttp3.ResponseBody.Companion.toResponseBody +import okhttp3.ResponseBody.Companion.asResponseBody import org.jsoup.nodes.Element import java.text.SimpleDateFormat import java.util.Locale @@ -30,8 +30,8 @@ class ManhwaLatino : Madara( .build() val response = chain.proceed(request.newBuilder().headers(headers).build()) if (response.headers("Content-Type").contains("application/octet-stream") && response.request.url.toString().endsWith(".jpg")) { - val orgBody = response.body.bytes() - val newBody = orgBody.toResponseBody("image/jpeg".toMediaTypeOrNull()) + val orgBody = response.body.source() + val newBody = orgBody.asResponseBody("image/jpeg".toMediaType()) response.newBuilder() .body(newBody) .build() diff --git a/src/id/kiryuu/build.gradle b/src/id/kiryuu/build.gradle index 068db62ea..ef9c440a9 100644 --- a/src/id/kiryuu/build.gradle +++ b/src/id/kiryuu/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.Kiryuu' themePkg = 'mangathemesia' baseUrl = 'https://kiryuu02.com' - overrideVersionCode = 11 + overrideVersionCode = 12 isNsfw = false } diff --git a/src/id/kiryuu/src/eu/kanade/tachiyomi/extension/id/kiryuu/Kiryuu.kt b/src/id/kiryuu/src/eu/kanade/tachiyomi/extension/id/kiryuu/Kiryuu.kt index 4f8ad2410..1accc9c06 100644 --- a/src/id/kiryuu/src/eu/kanade/tachiyomi/extension/id/kiryuu/Kiryuu.kt +++ b/src/id/kiryuu/src/eu/kanade/tachiyomi/extension/id/kiryuu/Kiryuu.kt @@ -4,7 +4,7 @@ import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient -import okhttp3.ResponseBody.Companion.toResponseBody +import okhttp3.ResponseBody.Companion.asResponseBody import org.jsoup.nodes.Document import java.text.SimpleDateFormat import java.util.Locale @@ -23,9 +23,8 @@ class Kiryuu : MangaThemesia("Kiryuu", "https://kiryuu02.com", "id", dateFormat } // Fix image content type val type = IMG_CONTENT_TYPE.toMediaType() - val body = response.body.bytes().toResponseBody(type) - return@addInterceptor response.newBuilder().body(body) - .header("Content-Type", IMG_CONTENT_TYPE).build() + val body = response.body.source().asResponseBody(type) + return@addInterceptor response.newBuilder().body(body).build() } response } diff --git a/src/id/komiktap/build.gradle b/src/id/komiktap/build.gradle index 3f4236c79..d95422bc4 100644 --- a/src/id/komiktap/build.gradle +++ b/src/id/komiktap/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.Komiktap' themePkg = 'mangathemesia' baseUrl = 'https://komiktap.info' - overrideVersionCode = 3 + overrideVersionCode = 4 isNsfw = true } diff --git a/src/id/komiktap/src/eu/kanade/tachiyomi/extension/id/komiktap/Komiktap.kt b/src/id/komiktap/src/eu/kanade/tachiyomi/extension/id/komiktap/Komiktap.kt index c8647100a..776229b7f 100644 --- a/src/id/komiktap/src/eu/kanade/tachiyomi/extension/id/komiktap/Komiktap.kt +++ b/src/id/komiktap/src/eu/kanade/tachiyomi/extension/id/komiktap/Komiktap.kt @@ -7,7 +7,7 @@ import okhttp3.Cookie import okhttp3.Interceptor import okhttp3.MediaType.Companion.toMediaType import okhttp3.Response -import okhttp3.ResponseBody.Companion.toResponseBody +import okhttp3.ResponseBody.Companion.asResponseBody import java.io.IOException class Komiktap : MangaThemesia("Komiktap", "https://komiktap.info", "id") { @@ -23,9 +23,8 @@ class Komiktap : MangaThemesia("Komiktap", "https://komiktap.info", "id") { } // Fix image content type val type = IMG_CONTENT_TYPE.toMediaType() - val body = response.body.bytes().toResponseBody(type) - return@addInterceptor response.newBuilder().body(body) - .header("Content-Type", IMG_CONTENT_TYPE).build() + val body = response.body.source().asResponseBody(type) + return@addInterceptor response.newBuilder().body(body).build() } response } diff --git a/src/pt/argoscomics/build.gradle b/src/pt/argoscomics/build.gradle index 0432bc95a..cb274edce 100644 --- a/src/pt/argoscomics/build.gradle +++ b/src/pt/argoscomics/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.ArgosComics' themePkg = 'madara' baseUrl = 'https://argoscomic.com' - overrideVersionCode = 5 + overrideVersionCode = 6 isNsfw = false } diff --git a/src/pt/argoscomics/src/eu/kanade/tachiyomi/extension/pt/argoscomics/ArgosComics.kt b/src/pt/argoscomics/src/eu/kanade/tachiyomi/extension/pt/argoscomics/ArgosComics.kt index 31cab7fc4..8b578ba32 100644 --- a/src/pt/argoscomics/src/eu/kanade/tachiyomi/extension/pt/argoscomics/ArgosComics.kt +++ b/src/pt/argoscomics/src/eu/kanade/tachiyomi/extension/pt/argoscomics/ArgosComics.kt @@ -5,7 +5,7 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient -import okhttp3.ResponseBody.Companion.toResponseBody +import okhttp3.ResponseBody.Companion.asResponseBody import java.security.SecureRandom import java.security.cert.X509Certificate import java.text.SimpleDateFormat @@ -49,9 +49,8 @@ class ArgosComics : Madara( if (mime == "application/octet-stream" || mime == null) { // Fix image content type val type = "image/jpeg".toMediaType() - val body = response.body.bytes().toResponseBody(type) - return@addInterceptor response.newBuilder().body(body) - .header("Content-Type", "image/jpeg").build() + val body = response.body.source().asResponseBody(type) + return@addInterceptor response.newBuilder().body(body).build() } } response diff --git a/src/pt/arthurscan/build.gradle b/src/pt/arthurscan/build.gradle index a02536f7f..cf2d8e466 100644 --- a/src/pt/arthurscan/build.gradle +++ b/src/pt/arthurscan/build.gradle @@ -3,7 +3,7 @@ ext { extClass = '.ArthurScan' themePkg = 'madara' baseUrl = 'https://arthurscan.xyz' - overrideVersionCode = 5 + overrideVersionCode = 6 isNsfw = false } diff --git a/src/pt/arthurscan/src/eu/kanade/tachiyomi/extension/pt/arthurscan/ArthurScan.kt b/src/pt/arthurscan/src/eu/kanade/tachiyomi/extension/pt/arthurscan/ArthurScan.kt index a27e8eb2a..ca332d193 100644 --- a/src/pt/arthurscan/src/eu/kanade/tachiyomi/extension/pt/arthurscan/ArthurScan.kt +++ b/src/pt/arthurscan/src/eu/kanade/tachiyomi/extension/pt/arthurscan/ArthurScan.kt @@ -4,7 +4,7 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara import eu.kanade.tachiyomi.network.interceptor.rateLimit import okhttp3.MediaType.Companion.toMediaType import okhttp3.OkHttpClient -import okhttp3.ResponseBody.Companion.toResponseBody +import okhttp3.ResponseBody.Companion.asResponseBody import java.text.SimpleDateFormat import java.util.Locale import java.util.concurrent.TimeUnit @@ -24,9 +24,8 @@ class ArthurScan : Madara( if (response.isSuccessful) { if (mime == "application/octet-stream" || mime == null) { val type = "image/jpeg".toMediaType() - val body = response.body.bytes().toResponseBody(type) - return@addInterceptor response.newBuilder().body(body) - .header("Content-Type", "image/jpeg").build() + val body = response.body.source().asResponseBody(type) + return@addInterceptor response.newBuilder().body(body).build() } } response