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(