[LibSoc] Default image server config option

master
Koitharu 2 years ago
parent bb9902e3b2
commit 0f73f74539
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -29,4 +29,9 @@ sealed class ConfigKey<T>(
class SplitByTranslations( class SplitByTranslations(
override val defaultValue: Boolean, override val defaultValue: Boolean,
) : ConfigKey<Boolean>("split_translations") ) : ConfigKey<Boolean>("split_translations")
class PreferredImageServer(
val presetValues: Map<String?, String?>,
override val defaultValue: String?,
) : ConfigKey<String?>("img_server")
} }

@ -38,6 +38,16 @@ internal abstract class LibSocialParser(
) )
private val imageServers = SuspendLazy(::fetchServers) private val imageServers = SuspendLazy(::fetchServers)
private val splitTranslationsKey = ConfigKey.SplitByTranslations(true) private val splitTranslationsKey = ConfigKey.SplitByTranslations(true)
private val preferredServerKey = ConfigKey.PreferredImageServer(
presetValues = mapOf(
SERVER_MAIN to "Первый",
SERVER_SECONDARY to "Второй",
SERVER_COMPRESS to "Сжатия",
SERVER_DOWNLOAD to "Загрузки",
SERVER_CROP to "Обрезки",
),
defaultValue = null,
)
override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> { override suspend fun getListPage(page: Int, filter: MangaListFilter?): List<Manga> {
val urlBuilder = urlBuilder("api") val urlBuilder = urlBuilder("api")
@ -133,10 +143,7 @@ internal abstract class LibSocialParser(
} }
val servers = imageServers.get() val servers = imageServers.get()
val json = pages.await() val json = pages.await()
val primaryServer = val primaryServer = getPrimaryImageServer(servers)
checkNotNull(servers[SERVER_MAIN] ?: servers[SERVER_DOWNLOAD] ?: servers[SERVER_SECONDARY]) {
"No available images servers"
}
json.getJSONArray("pages").mapJSON { jo -> json.getJSONArray("pages").mapJSON { jo ->
val url = jo.getString("url") val url = jo.getString("url")
MangaPage( MangaPage(
@ -193,6 +200,16 @@ internal abstract class LibSocialParser(
) )
} }
private fun getPrimaryImageServer(servers: ScatterMap<String, String>): String {
val preferred = config[preferredServerKey]
if (preferred != null) {
servers[preferred]?.let { return it }
}
return checkNotNull(servers[SERVER_MAIN] ?: servers[SERVER_DOWNLOAD] ?: servers[SERVER_SECONDARY]) {
"No available images servers"
}
}
private suspend fun fetchChapters(manga: Manga): List<MangaChapter> { private suspend fun fetchChapters(manga: Manga): List<MangaChapter> {
val url = urlBuilder("api") val url = urlBuilder("api")
.addPathSegment("api") .addPathSegment("api")

Loading…
Cancel
Save