SpectralScan: Fix no pages found (#9450)

* Fix no pages found

* Bump version
This commit is contained in:
Chopper 2025-06-27 15:01:37 -03:00 committed by Draff
parent 717d58a63c
commit 791d203f42
Signed by: Draff
GPG Key ID: E8A89F3211677653
3 changed files with 30 additions and 3 deletions

View File

@ -1,7 +1,7 @@
ext {
extName = 'Spectral Scan'
extClass = '.SpectralScan'
extVersionCode = 44
extVersionCode = 45
isNsfw = false
}

View File

@ -8,9 +8,13 @@ import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import eu.kanade.tachiyomi.util.asJsoup
import keiyoushi.utils.parseAs
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.Request
import okhttp3.Response
import okhttp3.ResponseBody.Companion.toResponseBody
import okio.ByteString.Companion.decodeBase64
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
@ -28,6 +32,19 @@ class SpectralScan : ParsedHttpSource() {
override val client = super.client.newBuilder()
.rateLimit(2)
.addInterceptor { chain ->
val request = chain.request()
val response = chain.proceed(request)
val url = request.url
if (url.fragment.isNullOrBlank().not() && url.fragment!!.contains("page")) {
val dto = response.parseAs<ImageSrc>()
val byteString = dto.base64.decodeBase64()!!
return@addInterceptor response.newBuilder()
.body(byteString.toResponseBody(dto.mimeType.toMediaType()))
.build()
}
response
}
.build()
// ==================== Popular ==========================
@ -121,8 +138,8 @@ class SpectralScan : ParsedHttpSource() {
// ==================== Page ==========================
override fun pageListParse(document: Document): List<Page> {
return document.select("#chapterPagesContainer img").mapIndexed { index, element ->
Page(index, imageUrl = element.absUrl("src"))
return document.select(".manga-page-container canvas").mapIndexed { index, element ->
Page(index, imageUrl = "${element.absUrl("data-api-src")}#page")
}
}

View File

@ -1,12 +1,22 @@
package eu.kanade.tachiyomi.extension.pt.spectralscan
import eu.kanade.tachiyomi.source.model.Filter
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
class SelectFilter(displayName: String = "", val parameter: String = "", private val vals: Array<Pair<String, String>>, state: Int = 0) :
Filter.Select<String>(displayName, vals.map { it.first }.toTypedArray(), state) {
fun selected() = vals[state].second
}
@Serializable
class ImageSrc(
@SerialName("image_data")
val base64: String,
@SerialName("mime_type")
val mimeType: String,
)
val sortList = arrayOf(
"Mais Recentes" to "latest",
"Mais Populares" to "popular",