From ef000d9b912e2a4b2aa7b463db4d9199a46967c1 Mon Sep 17 00:00:00 2001 From: Eshlender <35057681+e-shl@users.noreply.github.com> Date: Sun, 24 Sep 2023 03:56:21 +0500 Subject: [PATCH] [RU]Libgroup always auto servers images by priority (#18108) * [RU]LibGroup fix image * real isSuccessful * always auto server * clean * renaming for website and change of priority DefaultValue (stability) * summary * autoclean * rollback (works only after the extension is deleted) --- .../libgroup/hentailib/src/HentaiLib.kt | 15 +++----- .../overrides/libgroup/yaoilib/src/YaoiLib.kt | 11 ++---- .../multisrc/libgroup/LibGenerator.kt | 4 +-- .../tachiyomi/multisrc/libgroup/LibGroup.kt | 36 +++++++++---------- 4 files changed, 26 insertions(+), 40 deletions(-) diff --git a/multisrc/overrides/libgroup/hentailib/src/HentaiLib.kt b/multisrc/overrides/libgroup/hentailib/src/HentaiLib.kt index 82bc0025a..aae8a14a0 100644 --- a/multisrc/overrides/libgroup/hentailib/src/HentaiLib.kt +++ b/multisrc/overrides/libgroup/hentailib/src/HentaiLib.kt @@ -12,7 +12,7 @@ import okhttp3.Request import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -class HentaiLib : LibGroup("HentaiLib", "https://v1.hentailib.org", "ru") { +class HentaiLib : LibGroup("HentaiLib", "https://hentailib.me", "ru") { override val id: Long = 6425650164840473547 @@ -235,14 +235,9 @@ class HentaiLib : LibGroup("HentaiLib", "https://v1.hentailib.org", "ru") { 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 - } + val warning = "Для смены домена необходимо перезапустить приложение с полной остановкой." + Toast.makeText(screen.context, warning, Toast.LENGTH_LONG).show() + true } }.let(screen::addPreference) } @@ -251,6 +246,6 @@ class HentaiLib : LibGroup("HentaiLib", "https://v1.hentailib.org", "ru") { const val PREFIX_SLUG_SEARCH = "slug:" private const val DOMAIN_TITLE = "Домен" - private const val DOMAIN_DEFAULT = "https://v1.hentailib.org" + private const val DOMAIN_DEFAULT = "https://hentailib.me" } } diff --git a/multisrc/overrides/libgroup/yaoilib/src/YaoiLib.kt b/multisrc/overrides/libgroup/yaoilib/src/YaoiLib.kt index fdbfefeb2..ae9af0cd8 100644 --- a/multisrc/overrides/libgroup/yaoilib/src/YaoiLib.kt +++ b/multisrc/overrides/libgroup/yaoilib/src/YaoiLib.kt @@ -181,14 +181,9 @@ class YaoiLib : LibGroup("YaoiLib", "https://v1.slashlib.me", "ru") { 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 - } + val warning = "Для смены домена необходимо перезапустить приложение с полной остановкой." + Toast.makeText(screen.context, warning, Toast.LENGTH_LONG).show() + true } }.let(screen::addPreference) } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/libgroup/LibGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/libgroup/LibGenerator.kt index bc664b938..b4e98c82a 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/libgroup/LibGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/libgroup/LibGenerator.kt @@ -9,11 +9,11 @@ class LibGenerator : ThemeSourceGenerator { override val themeClass = "LibGroup" - override val baseVersionCode: Int = 23 + override val baseVersionCode: Int = 24 override val sources = listOf( SingleLang("MangaLib", "https://mangalib.me", "ru", overrideVersionCode = 74), - SingleLang("HentaiLib", "https://v1.hentailib.org", "ru", isNsfw = true, overrideVersionCode = 19), + SingleLang("HentaiLib", "https://hentailib.me", "ru", isNsfw = true, overrideVersionCode = 19), SingleLang("YaoiLib", "https://v1.slashlib.me", "ru", isNsfw = true, overrideVersionCode = 2), ) diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/libgroup/LibGroup.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/libgroup/LibGroup.kt index 8dfe01634..4d2846f33 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/libgroup/LibGroup.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/libgroup/LibGroup.kt @@ -45,6 +45,7 @@ import uy.kohesive.injekt.injectLazy import java.io.IOException import java.text.SimpleDateFormat import java.util.Locale +import java.util.concurrent.TimeUnit import kotlin.math.absoluteValue import kotlin.random.Random @@ -77,6 +78,9 @@ abstract class LibGroup( } override val client: OkHttpClient = network.cloudflareClient.newBuilder() .rateLimit(3) + .connectTimeout(5, TimeUnit.MINUTES) + .readTimeout(30, TimeUnit.SECONDS) + .writeTimeout(15, TimeUnit.SECONDS) .addNetworkInterceptor { imageContentTypeIntercept(it) } .addInterceptor { chain -> val response = chain.proceed(chain.request()) @@ -461,15 +465,9 @@ abstract class LibGroup( val chapInfoJson = json.decodeFromString(chapInfo) val servers = chapInfoJson["servers"]!!.jsonObject.toMap() - val defaultServer: String = chapInfoJson["img"]!!.jsonObject["server"]!!.jsonPrimitive.content - val autoServer = setOf("secondary", "fourth", defaultServer, "compress") val imgUrl: String = chapInfoJson["img"]!!.jsonObject["url"]!!.jsonPrimitive.content - val serverToUse = when (this.server) { - null -> autoServer - "auto" -> autoServer - else -> listOf(this.server) - } + val serverToUse = listOf(isServer, "secondary", "fourth", "main", "compress").distinct() // Get pages val pagesArr = document @@ -487,7 +485,7 @@ abstract class LibGroup( val keys = servers.keys.filter { serverToUse.indexOf(it) >= 0 }.sortedBy { serverToUse.indexOf(it) } val serversUrls = keys.map { servers[it]?.jsonPrimitive?.contentOrNull + imgUrl + page.jsonObject["u"]!!.jsonPrimitive.content - }.joinToString(separator = ",,") { it } + }.distinct().joinToString(separator = ",,") { it } pages.add(Page(page.jsonObject["p"]!!.jsonPrimitive.int, serversUrls)) } @@ -495,7 +493,7 @@ abstract class LibGroup( } private fun checkImage(url: String): Boolean { - val response = client.newCall(Request.Builder().url(url).headers(imgHeader()).build()).execute() + val response = client.newCall(GET(url, imgHeader())).execute() return response.isSuccessful && (response.header("content-length", "0")?.toInt()!! > 600) } @@ -505,9 +503,6 @@ abstract class LibGroup( } val urls = page.url.split(",,") - if (urls.size == 1) { - return Observable.just(urls[0]) - } return Observable.from(urls).filter { checkImage(it) }.first() } @@ -726,7 +721,6 @@ abstract class LibGroup( companion object { const val PREFIX_SLUG_SEARCH = "slug:" private const val SERVER_PREF = "MangaLibImageServer" - private const val SERVER_PREF_Title = "Сервер изображений" private const val SORTING_PREF = "MangaLibSorting" private const val SORTING_PREF_Title = "Способ выбора переводчиков" @@ -743,19 +737,21 @@ abstract class LibGroup( private val simpleDateFormat by lazy { SimpleDateFormat("yyyy-MM-dd", Locale.US) } } - private var server: String? = preferences.getString(SERVER_PREF, null) + private var isServer: String? = preferences.getString(SERVER_PREF, "fourth") private var isEng: String? = preferences.getString(LANGUAGE_PREF, "eng") private var groupTranslates: String = preferences.getString(TRANSLATORS_TITLE, TRANSLATORS_DEFAULT)!! override fun setupPreferenceScreen(screen: PreferenceScreen) { val serverPref = ListPreference(screen.context).apply { key = SERVER_PREF - title = SERVER_PREF_Title - entries = arrayOf("Основной", "Второй (тестовый)", "Третий (эконом трафика)", "Авто") - entryValues = arrayOf("secondary", "fourth", "compress", "auto") - summary = "%s" - setDefaultValue("auto") + title = "Сервер изображений" + entries = arrayOf("Первый", "Второй", "Сжатия") + entryValues = arrayOf("secondary", "fourth", "compress") + summary = "%s \n\nВыбор приоритетного сервера изображений. \n" + + "По умолчанию «Второй». \n\n" + + "ⓘВыбор другого помогает при долгой автоматической смене/загрузке изображений текущего." + setDefaultValue("fourth") setOnPreferenceChangeListener { _, newValue -> - server = newValue.toString() + isServer = newValue.toString() true } }