ArgosScan: Fix popular manga (#9971)
* Fix popular manga * Add 'isNsfw' * Remove destructuring declaration
This commit is contained in:
parent
b32672b47c
commit
31328ee895
@ -1,7 +1,8 @@
|
||||
ext {
|
||||
extName = 'Argos Scan'
|
||||
extClass = '.ArgosScan'
|
||||
extVersionCode = 26
|
||||
extVersionCode = 27
|
||||
isNsfw = false
|
||||
}
|
||||
|
||||
apply from: "$rootDir/common.gradle"
|
||||
|
@ -8,14 +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 keiyoushi.utils.tryParse
|
||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import org.jsoup.nodes.Document
|
||||
import org.jsoup.nodes.Element
|
||||
import rx.Observable
|
||||
import java.io.IOException
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
@ -42,8 +41,12 @@ class ArgosScan : ParsedHttpSource() {
|
||||
// ============================ Popular ======================================
|
||||
override fun popularMangaRequest(page: Int) = GET(baseUrl, headers)
|
||||
|
||||
override fun popularMangaSelector() = throw UnsupportedOperationException()
|
||||
override fun popularMangaFromElement(element: Element) = throw UnsupportedOperationException()
|
||||
override fun popularMangaSelector() = "#projects-container .manga-block"
|
||||
override fun popularMangaFromElement(element: Element) = SManga.create().apply {
|
||||
title = element.selectFirst("h3")!!.text()
|
||||
thumbnail_url = element.selectFirst("img")!!.absUrl("src")
|
||||
setUrlWithoutDomain(element.selectFirst("a")!!.absUrl("href"))
|
||||
}
|
||||
override fun popularMangaNextPageSelector() = null
|
||||
|
||||
override fun popularMangaParse(response: Response): MangasPage {
|
||||
@ -51,16 +54,9 @@ class ArgosScan : ParsedHttpSource() {
|
||||
if (document.select("a[href*='auth/discord']").isNotEmpty()) {
|
||||
throw IOException("Faça login na WebView")
|
||||
}
|
||||
|
||||
val script = document.selectFirst("script:containsData(projects)")!!.data()
|
||||
|
||||
val mangas = POPULAR_REGEX.find(script)?.groups?.get(1)?.value?.let {
|
||||
it.parseAs<List<MangaDto>>()
|
||||
.filter { it.type != "novel" }
|
||||
.map { it.toSManga(baseUrl) }
|
||||
} ?: throw IOException("Não foi possivel encontrar os mangás")
|
||||
|
||||
return MangasPage(mangas, false)
|
||||
return document.select(popularMangaSelector()).map(::popularMangaFromElement).let {
|
||||
MangasPage(it, hasNextPage = false)
|
||||
}
|
||||
}
|
||||
|
||||
// ============================ Latest ======================================
|
||||
@ -75,18 +71,19 @@ class ArgosScan : ParsedHttpSource() {
|
||||
|
||||
// ============================ Search ======================================
|
||||
|
||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||
val url = baseUrl.toHttpUrl().newBuilder()
|
||||
.addQueryParameter("s", query)
|
||||
.build()
|
||||
return GET(url, headers)
|
||||
override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
|
||||
return fetchPopularManga(page).map { mangasPage ->
|
||||
MangasPage(mangasPage.mangas.filter { it.title.contains(query, ignoreCase = true) }, hasNextPage = false)
|
||||
}
|
||||
}
|
||||
|
||||
override fun searchMangaSelector() = popularMangaSelector()
|
||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList) = throw UnsupportedOperationException()
|
||||
|
||||
override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element)
|
||||
override fun searchMangaSelector() = throw UnsupportedOperationException()
|
||||
|
||||
override fun searchMangaNextPageSelector() = popularMangaNextPageSelector()
|
||||
override fun searchMangaFromElement(element: Element) = throw UnsupportedOperationException()
|
||||
|
||||
override fun searchMangaNextPageSelector() = throw UnsupportedOperationException()
|
||||
|
||||
// ============================ Details =====================================
|
||||
|
||||
@ -102,7 +99,12 @@ class ArgosScan : ParsedHttpSource() {
|
||||
thumbnail_url = selectFirst(".trailer-box img")?.absUrl("src")
|
||||
description = selectFirst(".content p")?.text()
|
||||
selectFirst("section[data-status]")?.attr("data-status")?.let {
|
||||
status = it.toStatus()
|
||||
status = when (it.lowercase()) {
|
||||
"ongoing" -> SManga.ONGOING
|
||||
"completed" -> SManga.COMPLETED
|
||||
"hiatus" -> SManga.ON_HIATUS
|
||||
else -> SManga.UNKNOWN
|
||||
}
|
||||
}
|
||||
genre = select("h6:contains(Tags) + h6 > span").joinToString { it.text() }
|
||||
}
|
||||
|
@ -1,44 +0,0 @@
|
||||
package eu.kanade.tachiyomi.extension.pt.argosscan
|
||||
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
class MangaDto(
|
||||
@SerialName("attributes")
|
||||
val details: DetailsDto,
|
||||
@SerialName("cover_image_url")
|
||||
val thumbnailUrl: String,
|
||||
val id: String,
|
||||
) {
|
||||
val type get() = details.type
|
||||
|
||||
fun toSManga(baseUrl: String) = SManga.create().apply {
|
||||
title = details.title.values.first()
|
||||
description = details.description.values.firstOrNull()
|
||||
genre = details.genres.get("genre")?.let(List<String>::joinToString)
|
||||
thumbnail_url = "$baseUrl/$thumbnailUrl"
|
||||
status = details.status.toStatus()
|
||||
url = this@MangaDto.id
|
||||
initialized = true
|
||||
}
|
||||
}
|
||||
|
||||
fun String.toStatus(): Int =
|
||||
when (lowercase()) {
|
||||
"em-lancamento" -> SManga.ONGOING
|
||||
"completa" -> SManga.COMPLETED
|
||||
"em-pausa" -> SManga.ON_HIATUS
|
||||
else -> SManga.UNKNOWN
|
||||
}
|
||||
|
||||
@Serializable
|
||||
class DetailsDto(
|
||||
val title: Map<String, String>,
|
||||
val description: Map<String, String> = emptyMap(),
|
||||
val status: String,
|
||||
@SerialName("tags")
|
||||
val genres: Map<String, List<String>> = emptyMap(),
|
||||
val type: String,
|
||||
)
|
Loading…
x
Reference in New Issue
Block a user