parent
9755776353
commit
9183d5e2d0
@ -1,7 +1,7 @@
|
||||
ext {
|
||||
extName = 'Saikai Scan'
|
||||
extClass = '.SaikaiScan'
|
||||
extVersionCode = 11
|
||||
extVersionCode = 12
|
||||
}
|
||||
|
||||
apply from: "$rootDir/common.gradle"
|
||||
|
@ -22,15 +22,19 @@ class SaikaiScan : HttpSource() {
|
||||
|
||||
override val name = SOURCE_NAME
|
||||
|
||||
override val baseUrl = "https://saikaiscans.net"
|
||||
override val baseUrl = "https://housesaikai.net"
|
||||
|
||||
private val apiUrl = "https://api.${baseUrl.substringAfterLast("/")}"
|
||||
|
||||
private val storageUrl = "https://s3-beta.${baseUrl.substringAfterLast("/")}"
|
||||
|
||||
override val lang = "pt-BR"
|
||||
|
||||
override val supportsLatest = true
|
||||
|
||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||
.rateLimitHost(API_URL.toHttpUrl(), 1, 2)
|
||||
.rateLimitHost(IMAGE_SERVER_URL.toHttpUrl(), 1, 1)
|
||||
.rateLimitHost(apiUrl.toHttpUrl(), 1, 2)
|
||||
.rateLimitHost(storageUrl.toHttpUrl(), 1, 1)
|
||||
.build()
|
||||
|
||||
private val json: Json by injectLazy()
|
||||
@ -44,7 +48,7 @@ class SaikaiScan : HttpSource() {
|
||||
.add("Accept", ACCEPT_JSON)
|
||||
.build()
|
||||
|
||||
val apiEndpointUrl = "$API_URL/api/stories".toHttpUrl().newBuilder()
|
||||
val apiEndpointUrl = "$apiUrl/api/stories".toHttpUrl().newBuilder()
|
||||
.addQueryParameter("format", COMIC_FORMAT_ID)
|
||||
.addQueryParameter("sortProperty", "pageviews")
|
||||
.addQueryParameter("sortDirection", "desc")
|
||||
@ -59,7 +63,7 @@ class SaikaiScan : HttpSource() {
|
||||
override fun popularMangaParse(response: Response): MangasPage {
|
||||
val result = response.parseAs<SaikaiScanPaginatedStoriesDto>()
|
||||
|
||||
val mangaList = result.data!!.map(SaikaiScanStoryDto::toSManga)
|
||||
val mangaList = result.data!!.map { it.toSManga(storageUrl) }
|
||||
|
||||
return MangasPage(mangaList, result.hasNextPage)
|
||||
}
|
||||
@ -69,7 +73,7 @@ class SaikaiScan : HttpSource() {
|
||||
.add("Accept", ACCEPT_JSON)
|
||||
.build()
|
||||
|
||||
val apiEndpointUrl = "$API_URL/api/lancamentos".toHttpUrl().newBuilder()
|
||||
val apiEndpointUrl = "$apiUrl/api/lancamentos".toHttpUrl().newBuilder()
|
||||
.addQueryParameter("format", COMIC_FORMAT_ID)
|
||||
.addQueryParameter("page", page.toString())
|
||||
.addQueryParameter("per_page", PER_PAGE)
|
||||
@ -86,7 +90,7 @@ class SaikaiScan : HttpSource() {
|
||||
.add("Accept", ACCEPT_JSON)
|
||||
.build()
|
||||
|
||||
val apiEndpointUrl = "$API_URL/api/stories".toHttpUrl().newBuilder()
|
||||
val apiEndpointUrl = "$apiUrl/api/stories".toHttpUrl().newBuilder()
|
||||
.addQueryParameter("format", COMIC_FORMAT_ID)
|
||||
.addQueryParameter("q", query)
|
||||
.addQueryParameter("sortProperty", "pageViews")
|
||||
@ -112,7 +116,7 @@ class SaikaiScan : HttpSource() {
|
||||
.add("Accept", ACCEPT_JSON)
|
||||
.build()
|
||||
|
||||
val apiEndpointUrl = "$API_URL/api/stories".toHttpUrl().newBuilder()
|
||||
val apiEndpointUrl = "$apiUrl/api/stories".toHttpUrl().newBuilder()
|
||||
.addQueryParameter("format", COMIC_FORMAT_ID)
|
||||
.addQueryParameter("slug", storySlug)
|
||||
.addQueryParameter("per_page", "1")
|
||||
@ -125,7 +129,7 @@ class SaikaiScan : HttpSource() {
|
||||
override fun mangaDetailsParse(response: Response): SManga {
|
||||
val result = response.parseAs<SaikaiScanPaginatedStoriesDto>()
|
||||
|
||||
return result.data!![0].toSManga()
|
||||
return result.data!![0].toSManga(storageUrl)
|
||||
}
|
||||
|
||||
override fun chapterListRequest(manga: SManga): Request {
|
||||
@ -135,7 +139,7 @@ class SaikaiScan : HttpSource() {
|
||||
.add("Accept", ACCEPT_JSON)
|
||||
.build()
|
||||
|
||||
val apiEndpointUrl = "$API_URL/api/stories".toHttpUrl().newBuilder()
|
||||
val apiEndpointUrl = "$apiUrl/api/stories".toHttpUrl().newBuilder()
|
||||
.addQueryParameter("format", COMIC_FORMAT_ID)
|
||||
.addQueryParameter("slug", storySlug)
|
||||
.addQueryParameter("per_page", "1")
|
||||
@ -166,7 +170,7 @@ class SaikaiScan : HttpSource() {
|
||||
.add("Accept", ACCEPT_JSON)
|
||||
.build()
|
||||
|
||||
val apiEndpointUrl = "$API_URL/api/releases/$releaseId".toHttpUrl().newBuilder()
|
||||
val apiEndpointUrl = "$apiUrl/api/releases/$releaseId".toHttpUrl().newBuilder()
|
||||
.addQueryParameter("relationships", "releaseImages")
|
||||
.build()
|
||||
|
||||
@ -177,7 +181,7 @@ class SaikaiScan : HttpSource() {
|
||||
val result = response.parseAs<SaikaiScanReleaseResultDto>()
|
||||
|
||||
return result.data?.releaseImages.orEmpty().mapIndexed { i, obj ->
|
||||
Page(i, "", "$IMAGE_SERVER_URL/${obj.image}")
|
||||
Page(i, "", "$storageUrl/${obj.image}")
|
||||
}
|
||||
}
|
||||
|
||||
@ -287,14 +291,9 @@ class SaikaiScan : HttpSource() {
|
||||
|
||||
companion object {
|
||||
const val SOURCE_NAME = "Saikai Scan"
|
||||
|
||||
private const val ACCEPT_IMAGE = "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8"
|
||||
private const val ACCEPT_JSON = "application/json, text/plain, */*"
|
||||
|
||||
private const val COMIC_FORMAT_ID = "2"
|
||||
private const val PER_PAGE = "12"
|
||||
|
||||
private const val API_URL = "https://api.saikaiscans.net"
|
||||
const val IMAGE_SERVER_URL = "https://s3-alpha.saikaiscans.net"
|
||||
}
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ data class SaikaiScanStoryDto(
|
||||
val title: String,
|
||||
) {
|
||||
|
||||
fun toSManga(): SManga = SManga.create().apply {
|
||||
fun toSManga(storageUrl: String): SManga = SManga.create().apply {
|
||||
title = this@SaikaiScanStoryDto.title
|
||||
author = authors.joinToString { it.name }
|
||||
artist = artists.joinToString { it.name }
|
||||
@ -53,7 +53,7 @@ data class SaikaiScanStoryDto(
|
||||
description = Jsoup.parseBodyFragment(synopsis)
|
||||
.select("p")
|
||||
.joinToString("\n\n") { it.text() }
|
||||
thumbnail_url = "${SaikaiScan.IMAGE_SERVER_URL}/$image"
|
||||
thumbnail_url = "$storageUrl/$image"
|
||||
url = "/comics/$slug"
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user