[Ru] Mangaclub. Site rework (#5362)

Co-authored-by: pavkazzz <me@pavkazzz.ru>
This commit is contained in:
Pavka 2021-01-11 00:48:33 +03:00 committed by GitHub
parent cbb51ced14
commit be626fe8eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 55 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'MangaClub'
pkgNameSuffix = 'ru.mangaclub'
extClass = '.Mangaclub'
extVersionCode = 1
extVersionCode = 2
libVersion = '1.2'
}

View File

@ -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(