SpectralScan: Fix chapters not found (#9462)

* Fix chapters not found

* Fix lint
This commit is contained in:
Chopper 2025-06-28 12:05:41 -03:00 committed by Draff
parent 4c9e52353a
commit 7cc89b1d4a
Signed by: Draff
GPG Key ID: E8A89F3211677653
2 changed files with 9 additions and 22 deletions

View File

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

View File

@ -7,16 +7,15 @@ import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.source.online.ParsedHttpSource
import eu.kanade.tachiyomi.util.asJsoup
import keiyoushi.utils.parseAs import keiyoushi.utils.parseAs
import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaType
import okhttp3.Request import okhttp3.Request
import okhttp3.Response
import okhttp3.ResponseBody.Companion.toResponseBody import okhttp3.ResponseBody.Companion.toResponseBody
import okio.ByteString.Companion.decodeBase64 import okio.ByteString.Companion.decodeBase64
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import java.io.IOException
class SpectralScan : ParsedHttpSource() { class SpectralScan : ParsedHttpSource() {
@ -35,7 +34,12 @@ class SpectralScan : ParsedHttpSource() {
.addInterceptor { chain -> .addInterceptor { chain ->
val request = chain.request() val request = chain.request()
val response = chain.proceed(request) val response = chain.proceed(request)
val url = request.url val url = response.request.url
if (url.toString().contains("login")) {
throw IOException("Faça o login na WebView para acessar o contéudo")
}
if (url.fragment.isNullOrBlank().not() && url.fragment!!.contains("page")) { if (url.fragment.isNullOrBlank().not() && url.fragment!!.contains("page")) {
val dto = response.parseAs<ImageSrc>() val dto = response.parseAs<ImageSrc>()
val byteString = dto.base64.decodeBase64()!! val byteString = dto.base64.decodeBase64()!!
@ -110,24 +114,7 @@ class SpectralScan : ParsedHttpSource() {
// ==================== Chapter ======================= // ==================== Chapter =======================
override fun chapterListParse(response: Response): List<SChapter> { override fun chapterListSelector() = "a.chapter-item"
val document = response.asJsoup()
val element = document.selectFirst("section.chapter-section")!!
val chapters = element.attr("data-total-chapters")
val pathSegment = element.attr("data-ajax-url")
val url = "$baseUrl$pathSegment".toHttpUrl().newBuilder()
.addQueryParameter("per_page", chapters)
.build()
val newHeaders = headers.newBuilder()
.set("X-Requested-With", "XMLHttpRequest")
.build()
return super.chapterListParse(client.newCall(GET(url, newHeaders)).execute())
}
override fun chapterListSelector() = ".chapter-item"
override fun chapterFromElement(element: Element) = SChapter.create().apply { override fun chapterFromElement(element: Element) = SChapter.create().apply {
name = element.selectFirst(".chapter-number")!!.text() name = element.selectFirst(".chapter-number")!!.text()