From f632d3636fff934a10e74744a9bfd6af425f199a Mon Sep 17 00:00:00 2001 From: Dr1ks Date: Tue, 28 Jan 2025 03:37:36 -0800 Subject: [PATCH] Mangahub (RU): Fixex (#7321) * Mangahub: Fixes * Mangahub: Fix status * Mangahub: Fix search * Mangahub: review fix --- src/ru/mangahub/build.gradle | 2 +- .../extension/ru/mangahub/Mangahub.kt | 52 ++++++++++++------- 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/ru/mangahub/build.gradle b/src/ru/mangahub/build.gradle index eeac933dc..95b410d30 100644 --- a/src/ru/mangahub/build.gradle +++ b/src/ru/mangahub/build.gradle @@ -1,7 +1,7 @@ ext { extName = 'Mangahub' extClass = '.Mangahub' - extVersionCode = 18 + extVersionCode = 19 isNsfw = true } diff --git a/src/ru/mangahub/src/eu/kanade/tachiyomi/extension/ru/mangahub/Mangahub.kt b/src/ru/mangahub/src/eu/kanade/tachiyomi/extension/ru/mangahub/Mangahub.kt index a6e6c3ff8..9d283d858 100644 --- a/src/ru/mangahub/src/eu/kanade/tachiyomi/extension/ru/mangahub/Mangahub.kt +++ b/src/ru/mangahub/src/eu/kanade/tachiyomi/extension/ru/mangahub/Mangahub.kt @@ -83,16 +83,16 @@ open class Mangahub : ParsedHttpSource() { return GET("$baseUrl/explore/sort-is-update$pageStr", headers) } - override fun popularMangaSelector() = "div.comic-grid-col-xl" + override fun popularMangaSelector() = "div.item-grid" override fun latestUpdatesSelector() = popularMangaSelector() override fun popularMangaFromElement(element: Element): SManga { - val manga = SManga.create() - manga.thumbnail_url = element.select("div.fast-view-layer-scale").attr("data-background-image") - manga.title = element.select("a.fw-medium").text() - manga.setUrlWithoutDomain(element.select("a.fw-medium").attr("href")) - return manga + return SManga.create().apply { + thumbnail_url = element.selectFirst("img.item-grid-image")?.absUrl("src") + title = element.selectFirst("a.fw-medium")!!.text() + setUrlWithoutDomain(element.selectFirst("a.fw-medium")!!.absUrl("href")) + } } override fun latestUpdatesFromElement(element: Element): SManga = @@ -103,7 +103,7 @@ open class Mangahub : ParsedHttpSource() { override fun latestUpdatesNextPageSelector() = popularMangaNextPageSelector() override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - val url = "$baseUrl/search/manga".toHttpUrl().newBuilder().apply { + val url = "$baseUrl/search/title".toHttpUrl().newBuilder().apply { addQueryParameter("query", query) if (page > 1) addQueryParameter("page", page.toString()) } @@ -122,18 +122,30 @@ open class Mangahub : ParsedHttpSource() { } override fun mangaDetailsParse(document: Document): SManga { - val manga = SManga.create() - manga.author = document.select(".attr-name:contains(Автор) + .attr-value").text() // TODO: Add "Сценарист" and "Художник" - manga.genre = document.select(".tags a").joinToString { it.text() } - manga.description = document.select("div.markdown-style").text() - manga.status = parseStatus(document.select("div.detail-attr:contains(перевод):eq(0)").toString()) - manga.thumbnail_url = document.select("img.cover-detail").attr("src") - return manga - } - - private fun parseStatus(elements: String): Int = when { - elements.contains("Переведена") or elements.contains("Выпуск завершен") -> SManga.COMPLETED - else -> SManga.ONGOING + return SManga.create().apply { + val authorElement = document.selectFirst(".attr-name:contains(Автор) + .attr-value a") + if (authorElement != null) { + author = authorElement.text() + } else { + author = document.selectFirst(".attr-name:contains(Сценарист) + .attr-value a")?.text() + artist = document.selectFirst(".attr-name:contains(Художник) + .attr-value a")?.text() + } + genre = document.select(".tags a").joinToString { it.text() } + description = document.selectFirst(".markdown-style.text-expandable-content")?.text() + val statusElement = document.selectFirst(".attr-name:contains(Томов) + .attr-value")?.text() + status = when { + statusElement?.contains("продолжается") == true -> SManga.ONGOING + statusElement?.contains("приостановлен") == true -> SManga.ON_HIATUS + statusElement?.contains("завершен") == true || statusElement?.contains("выпуск прекращён") == true -> + if (document.selectFirst(".attr-name:contains(Перевод) + .attr-value")?.text()?.contains("Завершен") == true) { + SManga.COMPLETED + } else { + SManga.PUBLISHING_FINISHED + } + else -> SManga.UNKNOWN + } + thumbnail_url = document.selectFirst("img.cover-detail")?.absUrl("src") + } } override fun chapterListSelector() = "div.py-2.px-3" @@ -145,7 +157,7 @@ open class Mangahub : ParsedHttpSource() { chapter.date_upload = element.select("div.text-muted").text().let { SimpleDateFormat("dd.MM.yyyy", Locale.US).parse(it)?.time ?: 0L } - chapter.setUrlWithoutDomain(urlElement.attr("href")) + chapter.setUrlWithoutDomain(urlElement.absUrl("href")) return chapter }