From 1df19dcf90e866a1a83b2e18f294ac9dde30001d Mon Sep 17 00:00:00 2001 From: Yjin <35057681+e-shl@users.noreply.github.com> Date: Mon, 19 Sep 2022 18:39:02 +0500 Subject: [PATCH] [RU]GroupLe add "No auth" message and AllHentai domain switcher (#13498) * [RU]GroupLe add "No auth" message and AllHentai domain switcher * auto redirectable domain * fix pars breaked image text * change redirect Exception massage --- .../grouple/allhentai/src/AllHentai.kt | 41 ++++++++++++++++++- .../tachiyomi/multisrc/grouple/GroupLe.kt | 13 ++++-- .../multisrc/grouple/GroupLeGenerator.kt | 4 +- 3 files changed, 52 insertions(+), 6 deletions(-) diff --git a/multisrc/overrides/grouple/allhentai/src/AllHentai.kt b/multisrc/overrides/grouple/allhentai/src/AllHentai.kt index 399fb7822..e71153248 100644 --- a/multisrc/overrides/grouple/allhentai/src/AllHentai.kt +++ b/multisrc/overrides/grouple/allhentai/src/AllHentai.kt @@ -1,16 +1,29 @@ package eu.kanade.tachiyomi.extension.ru.allhentai +import android.app.Application +import android.content.SharedPreferences +import android.widget.Toast +import androidx.preference.EditTextPreference import eu.kanade.tachiyomi.multisrc.grouple.GroupLe import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Filter import eu.kanade.tachiyomi.source.model.FilterList import okhttp3.HttpUrl.Companion.toHttpUrlOrNull import okhttp3.Request +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get -class AllHentai : GroupLe("AllHentai", "http://23.allhen.online", "ru") { +class AllHentai : GroupLe("AllHentai", "http://allhen.online", "ru") { override val id: Long = 1809051393403180443 + private val preferences: SharedPreferences by lazy { + Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000) + } + + private var domain: String = preferences.getString(DOMAIN_TITLE, DOMAIN_DEFAULT)!! + override val baseUrl: String = domain + 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 -> @@ -253,4 +266,30 @@ class AllHentai : GroupLe("AllHentai", "http://23.allhen.online", "ru") { private val tagsName = getTagsList().map { it.name }.toTypedArray() + + override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) { + super.setupPreferenceScreen(screen) + EditTextPreference(screen.context).apply { + key = DOMAIN_TITLE + this.title = DOMAIN_TITLE + summary = domain + this.setDefaultValue(DOMAIN_DEFAULT) + dialogTitle = DOMAIN_TITLE + setOnPreferenceChangeListener { _, newValue -> + try { + val res = preferences.edit().putString(DOMAIN_TITLE, newValue as String).commit() + Toast.makeText(screen.context, "Для смены домена необходимо перезапустить приложение с полной остановкой.", Toast.LENGTH_LONG).show() + res + } catch (e: Exception) { + e.printStackTrace() + false + } + } + }.let(screen::addPreference) + } + + companion object { + private const val DOMAIN_TITLE = "Домен" + private const val DOMAIN_DEFAULT = "http://allhen.online" + } } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt index 190f41b6f..5aaf35fe7 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLe.kt @@ -49,7 +49,7 @@ abstract class GroupLe( val originalRequest = chain.request() val response = chain.proceed(originalRequest) if (originalRequest.url.toString().contains(baseUrl) and (originalRequest.url.toString().contains("internal/redirect") or (response.code == 301))) - throw IOException("Манга переехала на другой адрес/ссылку!") + throw IOException("Ссылка на мангу была изменена. Перемегрируйте мангу на тотже (или смежный с GroupLe) источник или передабавте из Поисковика/Каталога.") response } .build() @@ -186,7 +186,7 @@ abstract class GroupLe( override fun chapterListSelector() = "div.chapters-link > table > tbody > tr:has(td > a):has(td.date:not(.text-info))" private fun chapterFromElement(element: Element, manga: SManga): SChapter { - val urlElement = element.select("a").first() + val urlElement = element.select("a.chapter-link").first() val chapterInf = element.select("td.item-title").first() val urlText = urlElement.text() @@ -249,7 +249,14 @@ abstract class GroupLe( override fun pageListParse(response: Response): List<Page> { val html = response.body!!.string() - val beginIndex = html.indexOf("rm_h.initReader( [") + + val readerMark = "rm_h.initReader( [" + + if (!html.contains(readerMark)) { + throw Exception("Для просмотра 18+ контента необходима авторизация через WebView") + } + + val beginIndex = html.indexOf(readerMark) val endIndex = html.indexOf(");", beginIndex) val trimmedHtml = html.substring(beginIndex, endIndex) diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLeGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLeGenerator.kt index cccc3a440..47432bc55 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLeGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/grouple/GroupLeGenerator.kt @@ -9,12 +9,12 @@ class GroupLeGenerator : ThemeSourceGenerator { override val themeClass = "GroupLe" - override val baseVersionCode: Int = 7 + override val baseVersionCode: Int = 8 override val sources = listOf( SingleLang("ReadManga", "https://readmanga.live", "ru", overrideVersionCode = 46), SingleLang("MintManga", "https://mintmanga.live", "ru", overrideVersionCode = 46), - SingleLang("AllHentai", "http://23.allhen.online", "ru", isNsfw = true, overrideVersionCode = 22), + SingleLang("AllHentai", "http://allhen.online", "ru", isNsfw = true, overrideVersionCode = 22), SingleLang("SelfManga", "https://selfmanga.live", "ru", overrideVersionCode = 22), SingleLang("RuMIX", "https://rumix.me", "ru", overrideVersionCode = 1) )