From 5e57723c32443103aa5d842f37a7ae0d83f3188b Mon Sep 17 00:00:00 2001
From: Dr1ks <dmytro@kushchenko.net>
Date: Wed, 12 Feb 2025 08:16:39 -0800
Subject: [PATCH] Grouple: Add user token (#7617)

* Grouple: Add user token

* Grouple: Bump

* Grouple: update readmanga domain
---
 lib-multisrc/grouple/build.gradle.kts                 |  2 +-
 .../eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt   |  5 ++++-
 .../tachiyomi/extension/ru/allhentai/AllHentai.kt     | 11 -----------
 .../tachiyomi/extension/ru/mintmanga/MintManga.kt     | 10 ----------
 src/ru/readmanga/build.gradle                         |  2 +-
 .../tachiyomi/extension/ru/readmanga/ReadManga.kt     |  2 +-
 6 files changed, 7 insertions(+), 25 deletions(-)

diff --git a/lib-multisrc/grouple/build.gradle.kts b/lib-multisrc/grouple/build.gradle.kts
index 79e1d69b6..516ffede3 100644
--- a/lib-multisrc/grouple/build.gradle.kts
+++ b/lib-multisrc/grouple/build.gradle.kts
@@ -2,4 +2,4 @@ plugins {
     id("lib-multisrc")
 }
 
-baseVersionCode = 28
+baseVersionCode = 29
diff --git a/lib-multisrc/grouple/src/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt b/lib-multisrc/grouple/src/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt
index 167f38e2c..511279aa5 100644
--- a/lib-multisrc/grouple/src/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt
+++ b/lib-multisrc/grouple/src/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt
@@ -209,7 +209,9 @@ abstract class GroupLe(
     }
 
     protected open fun getChapterSearchParams(document: Document): String {
-        return "?mtr=true"
+        val scriptContent = document.selectFirst("script:containsData(user_hash)")?.data()
+        val userHash = scriptContent?.let { USER_HASH_REGEX.find(it)?.groupValues?.get(1) }
+        return userHash?.let { "?d=$it&mtr=true" } ?: "?mtr=true"
     }
 
     private fun chapterListParse(response: Response, manga: SManga): List<SChapter> {
@@ -436,5 +438,6 @@ abstract class GroupLe(
         private const val UAGENT_TITLE = "User-Agent(для некоторых стран)"
         private const val UAGENT_DEFAULT = "arora"
         const val PREFIX_SLUG_SEARCH = "slug:"
+        private val USER_HASH_REGEX = "user_hash.+'(.+)'".toRegex()
     }
 }
diff --git a/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt b/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt
index 1f2e6cedc..f9cacc84a 100644
--- a/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt
+++ b/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt
@@ -8,7 +8,6 @@ import eu.kanade.tachiyomi.network.GET
 import eu.kanade.tachiyomi.source.model.Filter
 import eu.kanade.tachiyomi.source.model.FilterList
 import okhttp3.Request
-import org.jsoup.nodes.Document
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 
@@ -19,16 +18,6 @@ class AllHentai : GroupLe("AllHentai", "https://20.allhen.online", "ru") {
 
     override val baseUrl by lazy { getPrefBaseUrl() }
 
-    override fun getChapterSearchParams(document: Document): String {
-        val html = document.html()
-
-        val userHashRegex = "user_hash.+'(.+)'".toRegex()
-
-        val userHash = userHashRegex.find(html)?.groupValues?.get(1)
-
-        return userHash?.let { "?d=$it" } ?: ""
-    }
-
     override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
         val url = super.searchMangaRequest(page, query, filters).url.newBuilder()
         (if (filters.isEmpty()) getFilterList() else filters).forEach { filter ->
diff --git a/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/MintManga.kt b/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/MintManga.kt
index a9172438a..f0614fc03 100644
--- a/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/MintManga.kt
+++ b/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/MintManga.kt
@@ -8,7 +8,6 @@ import eu.kanade.tachiyomi.network.GET
 import eu.kanade.tachiyomi.source.model.Filter
 import eu.kanade.tachiyomi.source.model.FilterList
 import okhttp3.Request
-import org.jsoup.nodes.Document
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 
@@ -21,14 +20,6 @@ class MintManga : GroupLe("MintManga", "https://2.mintmanga.one", "ru") {
 
     override val baseUrl by lazy { getPrefBaseUrl() }
 
-    override fun getChapterSearchParams(document: Document): String {
-        val scriptContent = document.selectFirst("script:containsData(user_hash)")?.data()
-
-        val userHash = scriptContent?.let { USER_HASH_REGEX.find(it)?.groupValues?.get(1) }
-
-        return userHash?.let { "?d=$it" } ?: ""
-    }
-
     override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
         val url = super.searchMangaRequest(page, query, filters).url.newBuilder()
         (if (filters.isEmpty()) getFilterList().reversed() else filters.reversed()).forEach { filter ->
@@ -210,6 +201,5 @@ class MintManga : GroupLe("MintManga", "https://2.mintmanga.one", "ru") {
         private const val DOMAIN_PREF = "Домен"
         private const val DEFAULT_DOMAIN_PREF = "pref_default_domain"
         private const val DOMAIN_TITLE = "Домен"
-        private val USER_HASH_REGEX = "user_hash.+'(.+)'".toRegex()
     }
 }
diff --git a/src/ru/readmanga/build.gradle b/src/ru/readmanga/build.gradle
index 7ccd1cb53..f1e8cbca6 100644
--- a/src/ru/readmanga/build.gradle
+++ b/src/ru/readmanga/build.gradle
@@ -2,7 +2,7 @@ ext {
     extName = 'ReadManga'
     extClass = '.ReadManga'
     themePkg = 'grouple'
-    baseUrl = 'https://1.readmanga.io'
+    baseUrl = 'https://zz.readmanga.io'
     overrideVersionCode = 46
 }
 
diff --git a/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/ReadManga.kt b/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/ReadManga.kt
index 5a2710973..36f9ec791 100644
--- a/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/ReadManga.kt
+++ b/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/ReadManga.kt
@@ -11,7 +11,7 @@ import okhttp3.Request
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
 
-class ReadManga : GroupLe("ReadManga", "https://1.readmanga.io", "ru") {
+class ReadManga : GroupLe("ReadManga", "https://zz.readmanga.io", "ru") {
 
     override val id: Long = 5