From 555896d9a4188564ed3b9212ef4bc3860cd6c405 Mon Sep 17 00:00:00 2001 From: Eshlender <35057681+e-shl@users.noreply.github.com> Date: Sat, 13 Jan 2024 10:57:28 +0500 Subject: [PATCH] [RU]Nudemoon fix images and lock cloudflareClient (#205) --- src/ru/nudemoon/build.gradle | 2 +- .../tachiyomi/extension/ru/nudemoon/Nudemoon.kt | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/ru/nudemoon/build.gradle b/src/ru/nudemoon/build.gradle index 8e85617db..7624c0db1 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 = 16 + extVersionCode = 17 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 3a1ad9fcd..4b505e65c 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 @@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.source.model.SManga import eu.kanade.tachiyomi.source.online.ParsedHttpSource import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.Headers import okhttp3.Request import okhttp3.Response import org.jsoup.nodes.Document @@ -16,6 +17,8 @@ import org.jsoup.nodes.Element import java.net.URLEncoder import java.text.SimpleDateFormat import java.util.Locale +import kotlin.math.absoluteValue +import kotlin.random.Random class Nudemoon : ParsedHttpSource() { @@ -32,6 +35,11 @@ class Nudemoon : ParsedHttpSource() { private val cookieManager by lazy { CookieManager.getInstance() } + private val userAgentRandomizer = "${Random.nextInt().absoluteValue}" + override fun headersBuilder(): Headers.Builder = Headers.Builder() + .add("User-Agent", "Mozilla/5.0 (Linux; Android 10; SM-G980F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.$userAgentRandomizer Mobile Safari/537.36") + .add("Referer", baseUrl) + init { cookieManager.setCookie(baseUrl, "nm_mobile=1; Domain=" + baseUrl.split("//")[1]) } @@ -48,7 +56,7 @@ class Nudemoon : ParsedHttpSource() { "${URLEncoder.encode(it.key, "UTF-8")}=${URLEncoder.encode(it.value, "UTF-8")}" } - override val client = network.client.newBuilder() + override val client = network.cloudflareClient.newBuilder() .addNetworkInterceptor { chain -> val newReq = chain .request() @@ -117,7 +125,7 @@ class Nudemoon : ParsedHttpSource() { override fun popularMangaFromElement(element: Element): SManga { val manga = SManga.create() - manga.thumbnail_url = element.select("img.news_pic2").attr("abs:src") + manga.thumbnail_url = element.select("a img").attr("abs:src") element.select("a:has(h2)").let { manga.title = it.text().substringBefore(" / ").substringBefore(" №") manga.setUrlWithoutDomain(it.attr("href")) @@ -219,7 +227,7 @@ class Nudemoon : ParsedHttpSource() { } override fun pageListParse(response: Response): List = mutableListOf().apply { - response.asJsoup().select("div.gallery-item img.textbox").mapIndexed { index, img -> + response.asJsoup().select("div.gallery-item img").mapIndexed { index, img -> add(Page(index, imageUrl = img.attr("abs:data-src"))) } if (size == 0 && cookieManager.getCookie(baseUrl).contains("fusion_user").not()) {