stevenyomi f612bc1c3f Clean up some code to follow best practices (#178)
* toHttpUrlOrNull()!! -> toHttpUrl()
* Jsoup.parse(response.body.string()) -> response.asJsoup()
* Some useless HttpUrl.newBuilder() calls
* extlib v1.4 GET(HttpUrl)
2024-01-14 00:29:56 +00:00

62 lines
2.2 KiB
Kotlin

package eu.kanade.tachiyomi.extension.id.cosmicscansid
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.OkHttpClient
import okhttp3.Request
import java.util.concurrent.TimeUnit
class CosmicScansID : MangaThemesia("CosmicScans.id", "https://cosmicscans.id", "id", "/semua-komik") {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimit(20, 4, TimeUnit.SECONDS)
.build()
override val hasProjectPage = true
override val projectPageString = "/semua-komik"
override fun latestUpdatesRequest(page: Int) = GET("$baseUrl" + if (page > 1) "/page/$page" else "", headers)
// search
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
val url = baseUrl.toHttpUrl().newBuilder()
.addPathSegments("page/$page/")
.addQueryParameter("s", query)
filters.forEach { filter ->
when (filter) {
// if site has project page, default value "hasProjectPage" = false
is ProjectFilter -> {
if (filter.selectedValue() == "project-filter-on") {
url.setPathSegment(0, projectPageString.substring(1))
}
}
else -> { /* Do Nothing */ }
}
}
return GET(url.build())
}
override fun searchMangaSelector() = ".bixbox:not(.hothome):has(.hpage) .utao .uta .imgu, .bixbox:not(.hothome) .listupd .bs .bsx"
override fun getFilterList(): FilterList {
val filters = mutableListOf<Filter<*>>(
Filter.Separator(),
Filter.Header("$name Project List page"),
ProjectFilter(),
OrderByFilter(),
)
return FilterList(filters)
}
// manga details
override val seriesDescriptionSelector = ".entry-content[itemprop=description] :not(a,p:has(a))"
// pages
override val pageSelector = "div#readerarea img:not(noscript img)"
}