From be626fe8ebdb45e99004c9e1b89ea102e96e9be5 Mon Sep 17 00:00:00 2001
From: Pavka
Date: Mon, 11 Jan 2021 00:48:33 +0300
Subject: [PATCH] [Ru] Mangaclub. Site rework (#5362)
Co-authored-by: pavkazzz
---
src/ru/mangaclub/build.gradle | 2 +-
.../extension/ru/mangaclub/Mangaclub.kt | 82 +++++++------------
2 files changed, 29 insertions(+), 55 deletions(-)
diff --git a/src/ru/mangaclub/build.gradle b/src/ru/mangaclub/build.gradle
index 7e4b639b8..34c36173d 100644
--- a/src/ru/mangaclub/build.gradle
+++ b/src/ru/mangaclub/build.gradle
@@ -5,7 +5,7 @@ ext {
extName = 'MangaClub'
pkgNameSuffix = 'ru.mangaclub'
extClass = '.Mangaclub'
- extVersionCode = 1
+ extVersionCode = 2
libVersion = '1.2'
}
diff --git a/src/ru/mangaclub/src/eu/kanade/tachiyomi/extension/ru/mangaclub/Mangaclub.kt b/src/ru/mangaclub/src/eu/kanade/tachiyomi/extension/ru/mangaclub/Mangaclub.kt
index 33f3e7d99..51e7e9792 100644
--- a/src/ru/mangaclub/src/eu/kanade/tachiyomi/extension/ru/mangaclub/Mangaclub.kt
+++ b/src/ru/mangaclub/src/eu/kanade/tachiyomi/extension/ru/mangaclub/Mangaclub.kt
@@ -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(