|
|
|
|
@ -22,50 +22,58 @@ internal class IsekaiScan(context: MangaLoaderContext) :
|
|
|
|
|
SortOrder.UPDATED,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
override suspend fun getListPage(
|
|
|
|
|
page: Int,
|
|
|
|
|
query: String?,
|
|
|
|
|
tags: Set<MangaTag>?,
|
|
|
|
|
sortOrder: SortOrder,
|
|
|
|
|
): List<Manga> {
|
|
|
|
|
val tag = tags.oneOrThrowIfMany()
|
|
|
|
|
override val availableStates: Set<MangaState> get() = emptySet()
|
|
|
|
|
|
|
|
|
|
init {
|
|
|
|
|
paginator.firstPage = 1
|
|
|
|
|
searchPaginator.firstPage = 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
|
|
|
|
|
|
|
|
|
|
val url = buildString {
|
|
|
|
|
append("https://")
|
|
|
|
|
append(domain)
|
|
|
|
|
val pages = page + 1
|
|
|
|
|
|
|
|
|
|
when {
|
|
|
|
|
!query.isNullOrEmpty() -> {
|
|
|
|
|
|
|
|
|
|
when (filter) {
|
|
|
|
|
is MangaListFilter.Search -> {
|
|
|
|
|
append("/?search=")
|
|
|
|
|
append(query.urlEncoded())
|
|
|
|
|
append(filter.query.urlEncoded())
|
|
|
|
|
append("&page=")
|
|
|
|
|
append(pages.toString())
|
|
|
|
|
append(page.toString())
|
|
|
|
|
append("&post_type=wp-manga")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
!tags.isNullOrEmpty() -> {
|
|
|
|
|
append("/mangas/")
|
|
|
|
|
append(tag?.key.orEmpty())
|
|
|
|
|
append("?orderby=2&page=")
|
|
|
|
|
append(pages.toString())
|
|
|
|
|
|
|
|
|
|
is MangaListFilter.Advanced -> {
|
|
|
|
|
|
|
|
|
|
val tag = filter.tags.oneOrThrowIfMany()
|
|
|
|
|
if (filter.tags.isNotEmpty()) {
|
|
|
|
|
append("/$tagPrefix")
|
|
|
|
|
append(tag?.key.orEmpty())
|
|
|
|
|
append("?orderby=")
|
|
|
|
|
when (filter.sortOrder) {
|
|
|
|
|
SortOrder.POPULARITY -> append("2")
|
|
|
|
|
SortOrder.UPDATED -> append("3")
|
|
|
|
|
else -> append("3")
|
|
|
|
|
}
|
|
|
|
|
append("&page=")
|
|
|
|
|
append(page.toString())
|
|
|
|
|
} else {
|
|
|
|
|
when (filter.sortOrder) {
|
|
|
|
|
SortOrder.POPULARITY -> append("/popular-manga")
|
|
|
|
|
SortOrder.UPDATED -> append("/latest-manga")
|
|
|
|
|
else -> append("/latest-manga")
|
|
|
|
|
}
|
|
|
|
|
append("?page=")
|
|
|
|
|
append(page.toString())
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
else -> {
|
|
|
|
|
|
|
|
|
|
if (sortOrder == SortOrder.POPULARITY) {
|
|
|
|
|
append("/popular-manga")
|
|
|
|
|
}
|
|
|
|
|
if (sortOrder == SortOrder.UPDATED) {
|
|
|
|
|
append("/latest-manga")
|
|
|
|
|
}
|
|
|
|
|
append("?page=")
|
|
|
|
|
append(pages.toString())
|
|
|
|
|
null -> {
|
|
|
|
|
append("/latest-manga?page=")
|
|
|
|
|
append(page.toString())
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
val doc = webClient.httpGet(url).parseHtml()
|
|
|
|
|
|
|
|
|
|
return doc.select("div.row.c-tabs-item__content").ifEmpty {
|
|
|
|
|
@ -91,8 +99,8 @@ internal class IsekaiScan(context: MangaLoaderContext) :
|
|
|
|
|
author = summary?.selectFirst(".mg_author")?.selectFirst("a")?.ownText(),
|
|
|
|
|
state = when (summary?.selectFirst(".mg_status")?.selectFirst(".summary-content")?.ownText()?.trim()
|
|
|
|
|
?.lowercase()) {
|
|
|
|
|
"Ongoing" -> MangaState.ONGOING
|
|
|
|
|
"Completed " -> MangaState.FINISHED
|
|
|
|
|
"ongoing" -> MangaState.ONGOING
|
|
|
|
|
"completed " -> MangaState.FINISHED
|
|
|
|
|
else -> null
|
|
|
|
|
},
|
|
|
|
|
source = source,
|
|
|
|
|
@ -133,8 +141,8 @@ internal class IsekaiScan(context: MangaLoaderContext) :
|
|
|
|
|
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
|
|
|
|
|
val fullUrl = chapter.url.toAbsoluteUrl(domain)
|
|
|
|
|
val doc = webClient.httpGet(fullUrl).parseHtml()
|
|
|
|
|
val urlarray = doc.select("p#arraydata").text().split(",").toTypedArray()
|
|
|
|
|
return urlarray.map { url ->
|
|
|
|
|
val urlArray = doc.select("p#arraydata").text().split(",").toTypedArray()
|
|
|
|
|
return urlArray.map { url ->
|
|
|
|
|
MangaPage(
|
|
|
|
|
id = generateUid(url),
|
|
|
|
|
url = url,
|
|
|
|
|
|