[Ru] Mangaclub. Site rework (#5362)
Co-authored-by: pavkazzz <me@pavkazzz.ru>
This commit is contained in:
parent
cbb51ced14
commit
be626fe8eb
|
@ -5,7 +5,7 @@ ext {
|
|||
extName = 'MangaClub'
|
||||
pkgNameSuffix = 'ru.mangaclub'
|
||||
extClass = '.Mangaclub'
|
||||
extVersionCode = 1
|
||||
extVersionCode = 2
|
||||
libVersion = '1.2'
|
||||
}
|
||||
|
||||
|
|
|
@ -20,20 +20,16 @@ import java.util.Locale
|
|||
class Mangaclub : ParsedHttpSource() {
|
||||
|
||||
// Info
|
||||
|
||||
override val name: String = "MangaClub"
|
||||
override val baseUrl: String = "https://mangaclub.ru"
|
||||
override val lang: String = "ru"
|
||||
override val supportsLatest: Boolean = true
|
||||
override val supportsLatest: Boolean = false
|
||||
override val client: OkHttpClient = network.cloudflareClient
|
||||
|
||||
// Popular
|
||||
|
||||
override fun popularMangaRequest(page: Int): Request =
|
||||
GET("$baseUrl/f/order_by=news_read/order=desc/page/$page/", headers)
|
||||
|
||||
override fun popularMangaNextPageSelector(): String? = "a i.glyphicon-chevron-right"
|
||||
override fun popularMangaSelector(): String = "div#dle-content div.short-story"
|
||||
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/page/$page/", headers)
|
||||
override fun popularMangaNextPageSelector(): String = "a i.icon-right-open"
|
||||
override fun popularMangaSelector(): String = "div.shortstory"
|
||||
override fun popularMangaFromElement(element: Element): SManga = SManga.create().apply {
|
||||
thumbnail_url = element.select("img").attr("abs:src")
|
||||
element.select(".title > a").apply {
|
||||
|
@ -43,12 +39,10 @@ class Mangaclub : ParsedHttpSource() {
|
|||
}
|
||||
|
||||
// Latest
|
||||
|
||||
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/page/$page/", headers)
|
||||
override fun latestUpdatesNextPageSelector(): String? = popularMangaNextPageSelector()
|
||||
override fun latestUpdatesRequest(page: Int): Request = popularMangaRequest(page)
|
||||
override fun latestUpdatesNextPageSelector(): String = popularMangaNextPageSelector()
|
||||
override fun latestUpdatesSelector(): String = popularMangaSelector()
|
||||
override fun latestUpdatesFromElement(element: Element): SManga =
|
||||
popularMangaFromElement(element)
|
||||
override fun latestUpdatesFromElement(element: Element): SManga = popularMangaFromElement(element)
|
||||
|
||||
// Search
|
||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||
|
@ -61,45 +55,28 @@ class Mangaclub : ParsedHttpSource() {
|
|||
.add("result_from", ((page - 1) * 8 + 1).toString())
|
||||
.add("story", query)
|
||||
.build()
|
||||
val searchHeaders =
|
||||
headers.newBuilder().add("Content-Type", "application/x-www-form-urlencoded")
|
||||
.build()
|
||||
val searchHeaders = headers.newBuilder().add("Content-Type", "application/x-www-form-urlencoded").build()
|
||||
return POST("$baseUrl/index.php?do=search", searchHeaders, formBody)
|
||||
} else {
|
||||
val uri = Uri.parse(baseUrl).buildUpon()
|
||||
.appendPath("f")
|
||||
for (filter in filters) {
|
||||
when (filter) {
|
||||
is Categories -> if (filter.state > 0) uri.appendEncodedPath("cat=${categoriesArray[filter.state].second}")
|
||||
is Status -> if (filter.values[filter.state].isNotEmpty()) uri.appendEncodedPath(
|
||||
"status_translation=${filter.values[filter.state]}"
|
||||
)
|
||||
is Tag -> if (filter.values[filter.state].isNotEmpty()) uri.appendEncodedPath("m.tags=${filter.values[filter.state]}")
|
||||
is Sort ->
|
||||
if (filter.state != null) {
|
||||
if (filter.state!!.ascending) {
|
||||
uri.appendEncodedPath("order_by=${sortables[filter.state!!.index].second}")
|
||||
.appendEncodedPath("order=asc")
|
||||
} else {
|
||||
uri.appendEncodedPath("order_by=${sortables[filter.state!!.index].second}")
|
||||
.appendEncodedPath("order=desc")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
uri.appendPath("page")
|
||||
.appendPath(page.toString())
|
||||
return GET(uri.toString(), headers)
|
||||
}
|
||||
|
||||
val uri = Uri.parse(baseUrl).buildUpon()
|
||||
|
||||
for (filter in filters) {
|
||||
if (filter is Tag && filter.values[filter.state].isNotEmpty()) {
|
||||
uri.appendEncodedPath("tags/${filter.values[filter.state]}")
|
||||
}
|
||||
}
|
||||
uri.appendPath("page").appendPath(page.toString())
|
||||
return GET(uri.toString(), headers)
|
||||
}
|
||||
|
||||
override fun searchMangaNextPageSelector(): String? = popularMangaNextPageSelector()
|
||||
override fun searchMangaNextPageSelector(): String = popularMangaNextPageSelector()
|
||||
override fun searchMangaSelector(): String = popularMangaSelector()
|
||||
override fun searchMangaFromElement(element: Element): SManga = popularMangaFromElement(element)
|
||||
|
||||
// Details
|
||||
override fun mangaDetailsParse(document: Document): SManga = SManga.create().apply {
|
||||
thumbnail_url = document.select("img[title].img-responsive").attr("abs:src")
|
||||
thumbnail_url = document.select("div.image img").attr("abs:src")
|
||||
title = document.select(".title").text().substringBefore("/").trim()
|
||||
author = document.select("a[href*=author]").text().trim()
|
||||
artist = author
|
||||
|
@ -108,18 +85,18 @@ class Mangaclub : ParsedHttpSource() {
|
|||
"Завершен" -> SManga.COMPLETED
|
||||
else -> SManga.UNKNOWN
|
||||
}
|
||||
description = document.select("div.description_manga").text().trim()
|
||||
genre = document.select("div.more-info a[href*=tags]").joinToString(", ") { it.text() }
|
||||
description = document.select("div.description").text().trim()
|
||||
genre = document.select("div.info a[href*=tags]").joinToString(", ") { it.text() }
|
||||
}
|
||||
|
||||
// Chapters
|
||||
override fun chapterListSelector(): String = ".chapter-main"
|
||||
|
||||
override fun chapterListSelector(): String = ".chapter-item"
|
||||
override fun chapterFromElement(element: Element): SChapter = SChapter.create().apply {
|
||||
name = element.select(".chapter-main .chapter-namber a").text().trim()
|
||||
val link = element.select("a")
|
||||
name = link.text().trim()
|
||||
chapter_number = name.substringAfter("Глава").replace(",", ".").trim().toFloat()
|
||||
setUrlWithoutDomain(element.select(".chapter-main .chapter-namber a").attr("abs:href"))
|
||||
date_upload = parseDate(element.select(".chapter-date").text().trim())
|
||||
setUrlWithoutDomain(link.attr("abs:href"))
|
||||
date_upload = parseDate(element.select(".date").text().trim())
|
||||
}
|
||||
|
||||
private fun parseDate(date: String): Long {
|
||||
|
@ -154,10 +131,7 @@ class Mangaclub : ParsedHttpSource() {
|
|||
|
||||
override fun getFilterList() = FilterList(
|
||||
Filter.Header("NOTE: Filters are ignored if using text search."),
|
||||
Categories(categoriesArray),
|
||||
Status(),
|
||||
Tag(tag),
|
||||
Sort(sortables)
|
||||
Tag(tag)
|
||||
)
|
||||
|
||||
private val categoriesArray = arrayOf(
|
||||
|
|
Loading…
Reference in New Issue