MangaDex Cover Qulity Setting (#8268)
* Update MDConstants.kt * Update MangaDex.kt * Update MangaDexHelper.kt * Update build.gradle * Update MangaDex.kt * Update MangaDexHelper.kt * Update MangaDexHelper.kt * Update MDConstants.kt
This commit is contained in:
parent
686b7d4299
commit
bf119937ff
|
@ -6,7 +6,7 @@ ext {
|
|||
extName = 'MangaDex'
|
||||
pkgNameSuffix = 'all.mangadex'
|
||||
extClass = '.MangaDexFactory'
|
||||
extVersionCode = 126
|
||||
extVersionCode = 127
|
||||
libVersion = '1.2'
|
||||
containsNsfw = true
|
||||
}
|
||||
|
|
|
@ -33,6 +33,18 @@ object MDConstants {
|
|||
const val prefixIdSearch = "id:"
|
||||
const val prefixChSearch = "ch:"
|
||||
|
||||
const val coverQualityPref = "thumbnailQuality"
|
||||
|
||||
fun getCoverQualityPreferenceKey(dexLang: String): String {
|
||||
return "${coverQualityPref}_$dexLang"
|
||||
}
|
||||
|
||||
fun getCoverQualityPreferenceEntries() = arrayOf("Orginal", "Medium", "Low")
|
||||
|
||||
fun getCoverQualityPreferenceEntryValues() = arrayOf("", ".512.jpg", ".256.jpg")
|
||||
|
||||
fun getCoverQualityPreferenceDefaultValue() = getCoverQualityPreferenceEntryValues()[0]
|
||||
|
||||
const val dataSaverPref = "dataSaverV5"
|
||||
|
||||
fun getDataSaverPreferenceKey(dexLang: String): String {
|
||||
|
|
|
@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.extension.all.mangadex
|
|||
import android.app.Application
|
||||
import android.content.SharedPreferences
|
||||
import android.util.Log
|
||||
import androidx.preference.ListPreference
|
||||
import androidx.preference.PreferenceScreen
|
||||
import androidx.preference.SwitchPreferenceCompat
|
||||
import eu.kanade.tachiyomi.extension.all.mangadex.dto.AggregateDto
|
||||
|
@ -107,11 +108,13 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
|
|||
val mangaListDto = helper.json.decodeFromString<MangaListDto>(response.body!!.string())
|
||||
val hasMoreResults = mangaListDto.limit + mangaListDto.offset < mangaListDto.total
|
||||
|
||||
val coverSuffix = preferences.getString(MDConstants.getCoverQualityPreferenceKey(dexLang), "")
|
||||
|
||||
val mangaList = mangaListDto.results.map { mangaDto ->
|
||||
val fileName = mangaDto.relationships.firstOrNull { relationshipDto ->
|
||||
relationshipDto.type.equals(MDConstants.coverArt, true)
|
||||
}?.attributes?.fileName
|
||||
helper.createBasicManga(mangaDto, fileName)
|
||||
helper.createBasicManga(mangaDto, fileName, coverSuffix)
|
||||
}
|
||||
|
||||
return MangasPage(mangaList, hasMoreResults)
|
||||
|
@ -152,11 +155,13 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
|
|||
|
||||
val mangaDtoMap = mangaListDto.results.associateBy({ it.data.id }, { it })
|
||||
|
||||
val coverSuffix = preferences.getString(MDConstants.getCoverQualityPreferenceKey(dexLang), "")
|
||||
|
||||
val mangaList = mangaIds.mapNotNull { mangaDtoMap[it] }.map { mangaDto ->
|
||||
val fileName = mangaDto.relationships.firstOrNull { relationshipDto ->
|
||||
relationshipDto.type.equals(MDConstants.coverArt, true)
|
||||
}?.attributes?.fileName
|
||||
helper.createBasicManga(mangaDto, fileName)
|
||||
helper.createBasicManga(mangaDto, fileName, coverSuffix)
|
||||
}
|
||||
|
||||
return MangasPage(mangaList, hasMoreResults)
|
||||
|
@ -264,7 +269,9 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
|
|||
override fun mangaDetailsParse(response: Response): SManga {
|
||||
val manga = helper.json.decodeFromString<MangaDto>(response.body!!.string())
|
||||
val shortLang = lang.substringBefore("-")
|
||||
return helper.createManga(manga, fetchSimpleChapterList(manga, shortLang), shortLang)
|
||||
|
||||
val coverSuffix = preferences.getString(MDConstants.getCoverQualityPreferenceKey(dexLang), "")
|
||||
return helper.createManga(manga, fetchSimpleChapterList(manga, shortLang), shortLang, coverSuffix)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -404,6 +411,22 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
|
|||
override fun imageUrlParse(response: Response): String = ""
|
||||
|
||||
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
||||
val coverQualityPref = ListPreference(screen.context).apply {
|
||||
key = MDConstants.getCoverQualityPreferenceKey(dexLang)
|
||||
title = "Manga Cover Quality"
|
||||
entries = MDConstants.getCoverQualityPreferenceEntries()
|
||||
entryValues = MDConstants.getCoverQualityPreferenceEntryValues()
|
||||
setDefaultValue(MDConstants.getCoverQualityPreferenceDefaultValue())
|
||||
summary = "%s"
|
||||
|
||||
setOnPreferenceChangeListener { _, newValue ->
|
||||
val selected = newValue as String
|
||||
val index = findIndexOfValue(selected)
|
||||
val entry = entryValues[index] as String
|
||||
preferences.edit().putString(MDConstants.getCoverQualityPreferenceKey(dexLang), entry).commit()
|
||||
}
|
||||
}
|
||||
|
||||
val dataSaverPref = SwitchPreferenceCompat(screen.context).apply {
|
||||
key = MDConstants.getDataSaverPreferenceKey(dexLang)
|
||||
title = "Data saver"
|
||||
|
@ -491,6 +514,7 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
|
|||
}
|
||||
}
|
||||
|
||||
screen.addPreference(coverQualityPref)
|
||||
screen.addPreference(dataSaverPref)
|
||||
screen.addPreference(standardHttpsPortPref)
|
||||
screen.addPreference(contentRatingSafePref)
|
||||
|
|
|
@ -166,12 +166,16 @@ class MangaDexHelper() {
|
|||
/**
|
||||
* create an SManga from json element only basic elements
|
||||
*/
|
||||
fun createBasicManga(mangaDto: MangaDto, coverFileName: String?): SManga {
|
||||
fun createBasicManga(mangaDto: MangaDto, coverFileName: String?, coverSuffix: String?): SManga {
|
||||
return SManga.create().apply {
|
||||
url = "/manga/${mangaDto.data.id}"
|
||||
title = cleanString(mangaDto.data.attributes.title.asMdMap()["en"] ?: "")
|
||||
|
||||
coverFileName?.let {
|
||||
thumbnail_url = "${MDConstants.cdnUrl}/covers/${mangaDto.data.id}/$coverFileName"
|
||||
thumbnail_url = when(coverSuffix != null && coverSuffix != "") {
|
||||
true -> "${MDConstants.cdnUrl}/covers/${mangaDto.data.id}/$coverFileName$coverSuffix"
|
||||
else -> "${MDConstants.cdnUrl}/covers/${mangaDto.data.id}/$coverFileName"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -179,7 +183,7 @@ class MangaDexHelper() {
|
|||
/**
|
||||
* Create an SManga from json element with all details
|
||||
*/
|
||||
fun createManga(mangaDto: MangaDto, chapters: List<String>, lang: String): SManga {
|
||||
fun createManga(mangaDto: MangaDto, chapters: List<String>, lang: String, coverSuffix: String?): SManga {
|
||||
try {
|
||||
val data = mangaDto.data
|
||||
val attr = data.attributes
|
||||
|
@ -228,7 +232,7 @@ class MangaDexHelper() {
|
|||
.filter { it.isNullOrBlank().not() }
|
||||
|
||||
val desc = attr.description.asMdMap()
|
||||
return createBasicManga(mangaDto, coverFileName).apply {
|
||||
return createBasicManga(mangaDto, coverFileName, coverSuffix).apply {
|
||||
description = cleanString(desc[lang] ?: desc["en"] ?: "")
|
||||
author = authors.joinToString(", ")
|
||||
artist = artists.joinToString(", ")
|
||||
|
|
Loading…
Reference in New Issue