[RU]Desu cloudflareClient and title Language (#16634)
* [RU]Desu cloudflareClient * TitleLanguage * change split
This commit is contained in:
parent
38188d73d8
commit
abd91a3156
|
@ -6,7 +6,7 @@ ext {
|
|||
extName = 'Desu'
|
||||
pkgNameSuffix = 'ru.desu'
|
||||
extClass = '.Desu'
|
||||
extVersionCode = 21
|
||||
extVersionCode = 22
|
||||
}
|
||||
|
||||
apply from: "$rootDir/common.gradle"
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
package eu.kanade.tachiyomi.extension.ru.desu
|
||||
|
||||
import android.app.Application
|
||||
import android.content.SharedPreferences
|
||||
import android.widget.Toast
|
||||
import androidx.preference.ListPreference
|
||||
import eu.kanade.tachiyomi.network.GET
|
||||
import eu.kanade.tachiyomi.network.asObservableSuccess
|
||||
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
|
||||
import eu.kanade.tachiyomi.source.ConfigurableSource
|
||||
import eu.kanade.tachiyomi.source.model.Filter
|
||||
import eu.kanade.tachiyomi.source.model.FilterList
|
||||
import eu.kanade.tachiyomi.source.model.MangasPage
|
||||
|
@ -20,14 +26,20 @@ import kotlinx.serialization.json.jsonObject
|
|||
import kotlinx.serialization.json.jsonPrimitive
|
||||
import kotlinx.serialization.json.long
|
||||
import okhttp3.Headers
|
||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import rx.Observable
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import uy.kohesive.injekt.injectLazy
|
||||
|
||||
class Desu : HttpSource() {
|
||||
class Desu : ConfigurableSource, HttpSource() {
|
||||
override val name = "Desu"
|
||||
|
||||
override val id: Long = 6684416167758830305
|
||||
|
||||
override val baseUrl = "https://desu.me"
|
||||
|
||||
override val lang = "ru"
|
||||
|
@ -36,11 +48,20 @@ class Desu : HttpSource() {
|
|||
|
||||
private val json: Json by injectLazy()
|
||||
|
||||
private val preferences: SharedPreferences by lazy {
|
||||
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
|
||||
}
|
||||
|
||||
override fun headersBuilder() = Headers.Builder().apply {
|
||||
add("User-Agent", "Tachiyomi")
|
||||
add("Referer", baseUrl)
|
||||
}
|
||||
|
||||
override val client: OkHttpClient =
|
||||
network.cloudflareClient.newBuilder()
|
||||
.rateLimitHost(baseUrl.toHttpUrl(), 3)
|
||||
.build()
|
||||
|
||||
private fun mangaPageFromJSON(jsonStr: String, next: Boolean): MangasPage {
|
||||
val mangaList = json.parseToJsonElement(jsonStr).jsonArray
|
||||
.map {
|
||||
|
@ -56,9 +77,15 @@ class Desu : HttpSource() {
|
|||
val id = obj["id"]!!.jsonPrimitive.int
|
||||
|
||||
url = "/$id"
|
||||
title = obj["name"]!!.jsonPrimitive.content
|
||||
.split(" / ")
|
||||
.first()
|
||||
title = if (isEng.equals("rus")) {
|
||||
obj["russian"]!!.jsonPrimitive.content
|
||||
.split(" / ")
|
||||
.first()
|
||||
} else {
|
||||
obj["name"]!!.jsonPrimitive.content
|
||||
.split(" / ")
|
||||
.first()
|
||||
}
|
||||
thumbnail_url = obj["image"]!!.jsonObject["original"]!!.jsonPrimitive.content
|
||||
|
||||
val ratingValue = obj["score"]!!.jsonPrimitive.floatOrNull ?: 0F
|
||||
|
@ -95,11 +122,19 @@ class Desu : HttpSource() {
|
|||
if (obj["synonyms"]?.jsonPrimitive?.content.orEmpty().isNotEmpty() && obj["synonyms"]!!.jsonPrimitive.contentOrNull != null) {
|
||||
altName = "Альтернативные названия:\n" +
|
||||
obj["synonyms"]!!.jsonPrimitive.content
|
||||
.replace("|", " / ") +
|
||||
.replace("/", " / ") +
|
||||
"\n\n"
|
||||
}
|
||||
|
||||
description = obj["russian"]!!.jsonPrimitive.content + "\n" +
|
||||
description = if (isEng.equals("rus")) {
|
||||
obj["name"]!!.jsonPrimitive.content
|
||||
.split(" / ")
|
||||
.first()
|
||||
} else {
|
||||
obj["russian"]!!.jsonPrimitive.content
|
||||
.split(" / ")
|
||||
.first()
|
||||
} + "\n" +
|
||||
ratingStar + " " + ratingValue +
|
||||
" (голосов: " +
|
||||
obj["score_users"]!!.jsonPrimitive.int +
|
||||
|
@ -343,9 +378,28 @@ class Desu : HttpSource() {
|
|||
Genre("Яой", "Yaoi"),
|
||||
)
|
||||
|
||||
private var isEng: String? = preferences.getString(LANGUAGE_PREF, "eng")
|
||||
override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
|
||||
val titleLanguagePref = ListPreference(screen.context).apply {
|
||||
key = LANGUAGE_PREF
|
||||
title = "Выбор языка на обложке"
|
||||
entries = arrayOf("Английский", "Русский")
|
||||
entryValues = arrayOf("eng", "rus")
|
||||
summary = "%s"
|
||||
setDefaultValue("eng")
|
||||
setOnPreferenceChangeListener { _, newValue ->
|
||||
val warning = "Если язык обложки не изменился очистите базу данных в приложении (Настройки -> Дополнительно -> Очистить базу данных)"
|
||||
Toast.makeText(screen.context, warning, Toast.LENGTH_LONG).show()
|
||||
true
|
||||
}
|
||||
}
|
||||
screen.addPreference(titleLanguagePref)
|
||||
}
|
||||
companion object {
|
||||
const val PREFIX_SLUG_SEARCH = "slug:"
|
||||
|
||||
private const val LANGUAGE_PREF = "DesuTitleLanguage"
|
||||
|
||||
private const val API_URL = "/manga/api"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue