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'
|
extName = 'MangaDex'
|
||||||
pkgNameSuffix = 'all.mangadex'
|
pkgNameSuffix = 'all.mangadex'
|
||||||
extClass = '.MangaDexFactory'
|
extClass = '.MangaDexFactory'
|
||||||
extVersionCode = 126
|
extVersionCode = 127
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
containsNsfw = true
|
containsNsfw = true
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,18 @@ object MDConstants {
|
|||||||
const val prefixIdSearch = "id:"
|
const val prefixIdSearch = "id:"
|
||||||
const val prefixChSearch = "ch:"
|
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"
|
const val dataSaverPref = "dataSaverV5"
|
||||||
|
|
||||||
fun getDataSaverPreferenceKey(dexLang: String): String {
|
fun getDataSaverPreferenceKey(dexLang: String): String {
|
||||||
|
@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.extension.all.mangadex
|
|||||||
import android.app.Application
|
import android.app.Application
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import androidx.preference.ListPreference
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import androidx.preference.SwitchPreferenceCompat
|
import androidx.preference.SwitchPreferenceCompat
|
||||||
import eu.kanade.tachiyomi.extension.all.mangadex.dto.AggregateDto
|
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 mangaListDto = helper.json.decodeFromString<MangaListDto>(response.body!!.string())
|
||||||
val hasMoreResults = mangaListDto.limit + mangaListDto.offset < mangaListDto.total
|
val hasMoreResults = mangaListDto.limit + mangaListDto.offset < mangaListDto.total
|
||||||
|
|
||||||
|
val coverSuffix = preferences.getString(MDConstants.getCoverQualityPreferenceKey(dexLang), "")
|
||||||
|
|
||||||
val mangaList = mangaListDto.results.map { mangaDto ->
|
val mangaList = mangaListDto.results.map { mangaDto ->
|
||||||
val fileName = mangaDto.relationships.firstOrNull { relationshipDto ->
|
val fileName = mangaDto.relationships.firstOrNull { relationshipDto ->
|
||||||
relationshipDto.type.equals(MDConstants.coverArt, true)
|
relationshipDto.type.equals(MDConstants.coverArt, true)
|
||||||
}?.attributes?.fileName
|
}?.attributes?.fileName
|
||||||
helper.createBasicManga(mangaDto, fileName)
|
helper.createBasicManga(mangaDto, fileName, coverSuffix)
|
||||||
}
|
}
|
||||||
|
|
||||||
return MangasPage(mangaList, hasMoreResults)
|
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 mangaDtoMap = mangaListDto.results.associateBy({ it.data.id }, { it })
|
||||||
|
|
||||||
|
val coverSuffix = preferences.getString(MDConstants.getCoverQualityPreferenceKey(dexLang), "")
|
||||||
|
|
||||||
val mangaList = mangaIds.mapNotNull { mangaDtoMap[it] }.map { mangaDto ->
|
val mangaList = mangaIds.mapNotNull { mangaDtoMap[it] }.map { mangaDto ->
|
||||||
val fileName = mangaDto.relationships.firstOrNull { relationshipDto ->
|
val fileName = mangaDto.relationships.firstOrNull { relationshipDto ->
|
||||||
relationshipDto.type.equals(MDConstants.coverArt, true)
|
relationshipDto.type.equals(MDConstants.coverArt, true)
|
||||||
}?.attributes?.fileName
|
}?.attributes?.fileName
|
||||||
helper.createBasicManga(mangaDto, fileName)
|
helper.createBasicManga(mangaDto, fileName, coverSuffix)
|
||||||
}
|
}
|
||||||
|
|
||||||
return MangasPage(mangaList, hasMoreResults)
|
return MangasPage(mangaList, hasMoreResults)
|
||||||
@ -264,7 +269,9 @@ abstract class MangaDex(override val lang: String, val dexLang: String) :
|
|||||||
override fun mangaDetailsParse(response: Response): SManga {
|
override fun mangaDetailsParse(response: Response): SManga {
|
||||||
val manga = helper.json.decodeFromString<MangaDto>(response.body!!.string())
|
val manga = helper.json.decodeFromString<MangaDto>(response.body!!.string())
|
||||||
val shortLang = lang.substringBefore("-")
|
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 imageUrlParse(response: Response): String = ""
|
||||||
|
|
||||||
override fun setupPreferenceScreen(screen: PreferenceScreen) {
|
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 {
|
val dataSaverPref = SwitchPreferenceCompat(screen.context).apply {
|
||||||
key = MDConstants.getDataSaverPreferenceKey(dexLang)
|
key = MDConstants.getDataSaverPreferenceKey(dexLang)
|
||||||
title = "Data saver"
|
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(dataSaverPref)
|
||||||
screen.addPreference(standardHttpsPortPref)
|
screen.addPreference(standardHttpsPortPref)
|
||||||
screen.addPreference(contentRatingSafePref)
|
screen.addPreference(contentRatingSafePref)
|
||||||
|
@ -166,12 +166,16 @@ class MangaDexHelper() {
|
|||||||
/**
|
/**
|
||||||
* create an SManga from json element only basic elements
|
* 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 {
|
return SManga.create().apply {
|
||||||
url = "/manga/${mangaDto.data.id}"
|
url = "/manga/${mangaDto.data.id}"
|
||||||
title = cleanString(mangaDto.data.attributes.title.asMdMap()["en"] ?: "")
|
title = cleanString(mangaDto.data.attributes.title.asMdMap()["en"] ?: "")
|
||||||
|
|
||||||
coverFileName?.let {
|
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
|
* 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 {
|
try {
|
||||||
val data = mangaDto.data
|
val data = mangaDto.data
|
||||||
val attr = data.attributes
|
val attr = data.attributes
|
||||||
@ -228,7 +232,7 @@ class MangaDexHelper() {
|
|||||||
.filter { it.isNullOrBlank().not() }
|
.filter { it.isNullOrBlank().not() }
|
||||||
|
|
||||||
val desc = attr.description.asMdMap()
|
val desc = attr.description.asMdMap()
|
||||||
return createBasicManga(mangaDto, coverFileName).apply {
|
return createBasicManga(mangaDto, coverFileName, coverSuffix).apply {
|
||||||
description = cleanString(desc[lang] ?: desc["en"] ?: "")
|
description = cleanString(desc[lang] ?: desc["en"] ?: "")
|
||||||
author = authors.joinToString(", ")
|
author = authors.joinToString(", ")
|
||||||
artist = artists.joinToString(", ")
|
artist = artists.joinToString(", ")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user