From 62a4cae1404d35667b2fcab231f275cf00ec40e0 Mon Sep 17 00:00:00 2001 From: abubaca4 <55701175+abubaca4@users.noreply.github.com> Date: Sat, 5 Nov 2022 14:11:11 +0200 Subject: [PATCH] [RU] Nude-Moon. Throw exception when need auth (#14127) * replace some code * Exception when need auth * Exception text in russian * create SimpleDateFormat once --- src/ru/nudemoon/build.gradle | 2 +- .../extension/ru/nudemoon/Nudemoon.kt | 77 ++++++++++--------- 2 files changed, 40 insertions(+), 39 deletions(-) diff --git a/src/ru/nudemoon/build.gradle b/src/ru/nudemoon/build.gradle index 18ad98d12..ebcbbbdad 100644 --- a/src/ru/nudemoon/build.gradle +++ b/src/ru/nudemoon/build.gradle @@ -5,7 +5,7 @@ ext { extName = 'Nude-Moon' pkgNameSuffix = 'ru.nudemoon' extClass = '.Nudemoon' - extVersionCode = 13 + extVersionCode = 14 isNsfw = true } diff --git a/src/ru/nudemoon/src/eu/kanade/tachiyomi/extension/ru/nudemoon/Nudemoon.kt b/src/ru/nudemoon/src/eu/kanade/tachiyomi/extension/ru/nudemoon/Nudemoon.kt index 3ca09d3b0..16e6781df 100644 --- a/src/ru/nudemoon/src/eu/kanade/tachiyomi/extension/ru/nudemoon/Nudemoon.kt +++ b/src/ru/nudemoon/src/eu/kanade/tachiyomi/extension/ru/nudemoon/Nudemoon.kt @@ -27,6 +27,9 @@ class Nudemoon : ParsedHttpSource() { override val supportsLatest = true + private val dateParseRu = SimpleDateFormat("d MMMM yyyy", Locale("ru")) + private val dateParseSlash = SimpleDateFormat("d/MM/yyyy", Locale("ru")) + private val cookieManager by lazy { CookieManager.getInstance() } init { @@ -159,7 +162,23 @@ class Nudemoon : ParsedHttpSource() { val allPageElement = document.select("td.button a:contains(Все главы)") if (allPageElement.isEmpty()) { - add(chapterFromElement(document)) + add( + SChapter.create().apply { + val chapterName = document.select("table td.bg_style1 h1").text() + val chapterUrl = response.request.url.toString() + setUrlWithoutDomain(chapterUrl) + name = "$chapterName Сингл" + scanlator = document.select("table.news_pic2 a[href*=perevod]").text() + date_upload = document.select("table.news_pic2 span.small2:contains(/)").text().let { + try { + dateParseSlash.parse(it)?.time ?: 0L + } catch (e: Exception) { + 0 + } + } + chapter_number = 0F + } + ) } else { var pageListDocument: Document val pageListLink = allPageElement.attr("href") @@ -172,55 +191,37 @@ class Nudemoon : ParsedHttpSource() { } pageListDocument = this.asJsoup() } - pageListDocument.select("table.news_pic2") + pageListDocument.select(chapterListSelector()) .forEach { - val chapter = SChapter.create() - val nameAndUrl = it.select("tr[valign=top] a:has(h2)") - val chapterName = nameAndUrl.select("h2").text() - chapter.name = chapterName - chapter.setUrlWithoutDomain(nameAndUrl.attr("abs:href")) - val informBlock = it.select("tr[valign=top] td[align=left]") - chapter.scanlator = informBlock.select("a[href*=perevod]").text() - chapter.date_upload = informBlock.select("span.small2") - .text().replace("Май", "Мая").let { - textDate -> - try { - SimpleDateFormat("d MMMM yyyy", Locale("ru")).parse(textDate)?.time ?: 0L - } catch (e: Exception) { - 0 - } - } - chapter.chapter_number = chapterName.substringAfter("№").substringBefore(" ").toFloatOrNull() ?: -1f - add(chapter) + add(chapterFromElement(it)) } } } - override fun chapterFromElement(element: Element): SChapter { - val chapter = SChapter.create() - - val chapterName = element.select("table td.bg_style1 h1").text() - val chapterUrl = element.baseUri() - - chapter.setUrlWithoutDomain(chapterUrl) - chapter.name = "$chapterName Сингл" - chapter.scanlator = element.select("table.news_pic2 a[href*=perevod]").text() - chapter.date_upload = element.select("table.news_pic2 span.small2:contains(/)").text().let { - try { - SimpleDateFormat("d/MM/yyyy", Locale("ru")).parse(it)?.time ?: 0L - } catch (e: Exception) { - 0 + override fun chapterFromElement(element: Element): SChapter = SChapter.create().apply { + val nameAndUrl = element.select("tr[valign=top] a:has(h2)") + name = nameAndUrl.select("h2").text() + setUrlWithoutDomain(nameAndUrl.attr("abs:href")) + val informBlock = element.select("tr[valign=top] td[align=left]") + scanlator = informBlock.select("a[href*=perevod]").text() + date_upload = informBlock.select("span.small2") + .text().replace("Май", "Мая").let { textDate -> + try { + dateParseRu.parse(textDate)?.time ?: 0L + } catch (e: Exception) { + 0 + } } - } - chapter.chapter_number = 0F - - return chapter + chapter_number = name.substringAfter("№").substringBefore(" ").toFloatOrNull() ?: -1f } override fun pageListParse(response: Response): List<Page> = mutableListOf<Page>().apply { response.asJsoup().select("div.gallery-item img.textbox").mapIndexed { index, img -> add(Page(index, imageUrl = img.attr("abs:data-src"))) } + if (size == 0 && cookieManager.getCookie(baseUrl).contains("fusion_user").not()) { + throw Exception("Страницы не найдены. Возможно необходима авторизация в WebView") + } } override fun imageUrlParse(document: Document) = throw Exception("Not Used")