|
|
|
@ -137,13 +137,12 @@ internal abstract class MadaraParser(
|
|
|
|
tags: Set<MangaTag>?,
|
|
|
|
tags: Set<MangaTag>?,
|
|
|
|
sortOrder: SortOrder,
|
|
|
|
sortOrder: SortOrder,
|
|
|
|
): List<Manga> {
|
|
|
|
): List<Manga> {
|
|
|
|
|
|
|
|
val tag = tags.oneOrThrowIfMany()
|
|
|
|
val doc = if (withoutAjax) {
|
|
|
|
val doc = if (withoutAjax) {
|
|
|
|
val url = buildString {
|
|
|
|
val url = buildString {
|
|
|
|
append("https://")
|
|
|
|
append("https://")
|
|
|
|
append(domain)
|
|
|
|
append(domain)
|
|
|
|
val pages = page + 1
|
|
|
|
val pages = page + 1
|
|
|
|
|
|
|
|
|
|
|
|
when {
|
|
|
|
when {
|
|
|
|
!query.isNullOrEmpty() -> {
|
|
|
|
!query.isNullOrEmpty() -> {
|
|
|
|
append("/page/")
|
|
|
|
append("/page/")
|
|
|
|
@ -155,9 +154,7 @@ internal abstract class MadaraParser(
|
|
|
|
|
|
|
|
|
|
|
|
!tags.isNullOrEmpty() -> {
|
|
|
|
!tags.isNullOrEmpty() -> {
|
|
|
|
append("/$tagPrefix")
|
|
|
|
append("/$tagPrefix")
|
|
|
|
for (tag in tags) {
|
|
|
|
append(tag?.key.orEmpty())
|
|
|
|
append(tag.key)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
append("/page/")
|
|
|
|
append("/page/")
|
|
|
|
append(pages.toString())
|
|
|
|
append(pages.toString())
|
|
|
|
append("?")
|
|
|
|
append("?")
|
|
|
|
@ -182,8 +179,6 @@ internal abstract class MadaraParser(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
webClient.httpGet(url).parseHtml()
|
|
|
|
webClient.httpGet(url).parseHtml()
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
val tag = tags.oneOrThrowIfMany()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val payload = if (sortOrder == SortOrder.RATING) {
|
|
|
|
val payload = if (sortOrder == SortOrder.RATING) {
|
|
|
|
createRequestTemplate(ratingRequest)
|
|
|
|
createRequestTemplate(ratingRequest)
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
@ -273,7 +268,7 @@ internal abstract class MadaraParser(
|
|
|
|
"div.description-summary div.summary__content, div.summary_content div.post-content_item > h5 + div, div.summary_content div.manga-excerpt, div.post-content div.manga-summary, div.post-content div.desc, div.c-page__content div.summary__content"
|
|
|
|
"div.description-summary div.summary__content, div.summary_content div.post-content_item > h5 + div, div.summary_content div.manga-excerpt, div.post-content div.manga-summary, div.post-content div.desc, div.c-page__content div.summary__content"
|
|
|
|
protected open val selectGenre = "div.genres-content a"
|
|
|
|
protected open val selectGenre = "div.genres-content a"
|
|
|
|
protected open val selectTestAsync = "div.listing-chapters_wrap"
|
|
|
|
protected open val selectTestAsync = "div.listing-chapters_wrap"
|
|
|
|
|
|
|
|
protected open val selectState = ""
|
|
|
|
override suspend fun getDetails(manga: Manga): Manga = coroutineScope {
|
|
|
|
override suspend fun getDetails(manga: Manga): Manga = coroutineScope {
|
|
|
|
val fullUrl = manga.url.toAbsoluteUrl(domain)
|
|
|
|
val fullUrl = manga.url.toAbsoluteUrl(domain)
|
|
|
|
val doc = webClient.httpGet(fullUrl).parseHtml()
|
|
|
|
val doc = webClient.httpGet(fullUrl).parseHtml()
|
|
|
|
@ -289,18 +284,23 @@ internal abstract class MadaraParser(
|
|
|
|
|
|
|
|
|
|
|
|
val desc = body.select(selectDesc).html()
|
|
|
|
val desc = body.select(selectDesc).html()
|
|
|
|
|
|
|
|
|
|
|
|
val stateDiv = (body.selectFirst("div.post-content_item:contains(Status)")
|
|
|
|
val stateDiv = if (selectState.isEmpty()) {
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(Statut)")
|
|
|
|
(body.selectFirst("div.post-content_item:contains(Status)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(État)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(Statut)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(حالة العمل)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(État)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(Estado)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(حالة العمل)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(สถานะ)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(Estado)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(Stato)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(สถานะ)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(Durum)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(Stato)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(Statüsü)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(Durum)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(Статус)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(Statüsü)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(状态)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(Статус)")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(الحالة)"))?.selectLast("div.summary-content")
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(状态)")
|
|
|
|
|
|
|
|
?: body.selectFirst("div.post-content_item:contains(الحالة)"))?.selectLast("div.summary-content")
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
body.selectFirst(selectState)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val state = stateDiv?.let {
|
|
|
|
val state = stateDiv?.let {
|
|
|
|
when (it.text()) {
|
|
|
|
when (it.text()) {
|
|
|
|
@ -553,10 +553,13 @@ internal abstract class MadaraParser(
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private val ratingRequest = "action=madara_load_more&page=1&template=madara-core%2Fcontent%2Fcontent-search&vars%5Bs%5D=&vars%5Borderby%5D%5Bquery_avarage_reviews%5D=DESC&vars%5Borderby%5D%5Bquery_total_reviews%5D=DESC&vars%5Bpaged%5D=1&vars%5Btemplate%5D=search&vars%5Bmeta_query%5D%5B0%5D%5Brelation%5D=AND&vars%5Bmeta_query%5D%5B0%5D%5Bquery_avarage_reviews%5D%5Bkey%5D=_manga_avarage_reviews&vars%5Bmeta_query%5D%5B0%5D%5Bquery_total_reviews%5D%5Bkey%5D=_manga_total_votes&vars%5Bmeta_query%5D%5Brelation%5D=AND&vars%5Bpost_type%5D=wp-manga&vars%5Bpost_status%5D=publish&vars%5Bmanga_archives_item_layout%5D=default"
|
|
|
|
private val ratingRequest =
|
|
|
|
private val defaultRequest = "action=madara_load_more&page=1&template=madara-core%2Fcontent%2Fcontent-search&vars%5Bs%5D=&vars%5Borderby%5D=meta_value_num&vars%5Bpaged%5D=1&vars%5Btemplate%5D=search&vars%5Bmeta_query%5D%5B0%5D%5Brelation%5D=AND&vars%5Bmeta_query%5D%5Brelation%5D=OR&vars%5Bpost_type%5D=wp-manga&vars%5Bpost_status%5D=publish&vars%5Bmeta_key%5D=_latest_update&vars%5Border%5D=desc&vars%5Bmanga_archives_item_layout%5D=default"
|
|
|
|
"action=madara_load_more&page=1&template=madara-core%2Fcontent%2Fcontent-search&vars%5Bs%5D=&vars%5Borderby%5D%5Bquery_avarage_reviews%5D=DESC&vars%5Borderby%5D%5Bquery_total_reviews%5D=DESC&vars%5Bpaged%5D=1&vars%5Btemplate%5D=search&vars%5Bmeta_query%5D%5B0%5D%5Brelation%5D=AND&vars%5Bmeta_query%5D%5B0%5D%5Bquery_avarage_reviews%5D%5Bkey%5D=_manga_avarage_reviews&vars%5Bmeta_query%5D%5B0%5D%5Bquery_total_reviews%5D%5Bkey%5D=_manga_total_votes&vars%5Bmeta_query%5D%5Brelation%5D=AND&vars%5Bpost_type%5D=wp-manga&vars%5Bpost_status%5D=publish&vars%5Bmanga_archives_item_layout%5D=default"
|
|
|
|
|
|
|
|
private val defaultRequest =
|
|
|
|
|
|
|
|
"action=madara_load_more&page=1&template=madara-core%2Fcontent%2Fcontent-search&vars%5Bs%5D=&vars%5Borderby%5D=meta_value_num&vars%5Bpaged%5D=1&vars%5Btemplate%5D=search&vars%5Bmeta_query%5D%5B0%5D%5Brelation%5D=AND&vars%5Bmeta_query%5D%5Brelation%5D=OR&vars%5Bpost_type%5D=wp-manga&vars%5Bpost_status%5D=publish&vars%5Bmeta_key%5D=_latest_update&vars%5Border%5D=desc&vars%5Bmanga_archives_item_layout%5D=default"
|
|
|
|
|
|
|
|
|
|
|
|
private companion object {
|
|
|
|
private companion object {
|
|
|
|
private fun createRequestTemplate(query : String) =
|
|
|
|
private fun createRequestTemplate(query: String) =
|
|
|
|
(query).split(
|
|
|
|
(query).split(
|
|
|
|
'&',
|
|
|
|
'&',
|
|
|
|
).map {
|
|
|
|
).map {
|
|
|
|
|