feat(all/torrentio): Dubbed and efficient video toggles in settings (#3169)

This commit is contained in:
Nitin Dahale 2024-04-26 16:00:44 +05:30 committed by GitHub
parent 2009c1363d
commit 24f5c51c9d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 40 additions and 2 deletions

View File

@ -1,7 +1,7 @@
ext {
extName = 'Torrentio Anime (Torrent / Debrid)'
extClass = '.Torrentio'
extVersionCode = 4
extVersionCode = 5
containsNsfw = false
}

View File

@ -480,10 +480,23 @@ class Torrentio : ConfigurableAnimeSource, AnimeHttpSource() {
val trackerList = animeTrackers.split(",").map { it.trim() }.filter { it.isNotBlank() }.joinToString("&tr=")
"magnet:?xt=urn:btih:${stream.infoHash}&dn=${stream.infoHash}&tr=$trackerList&index=${stream.fileIdx}"
} else stream.url ?: ""
Video(urlOrHash, stream.title ?: "", urlOrHash)
Video(urlOrHash, ((stream.name?.replace("Torrentio\n", "") ?: "") + "\n" + stream.title), urlOrHash)
}.orEmpty()
}
override fun List<Video>.sort(): List<Video> {
val isDub = preferences.getBoolean(IS_DUB_KEY, IS_DUB_DEFAULT)
val isEfficient = preferences.getBoolean(IS_EFFICIENT_KEY, IS_EFFICIENT_DEFAULT)
return sortedWith(
compareBy(
{ !Regex("\\[(.+?) download]").containsMatchIn(it.quality) },
{ isDub && it.quality.contains("dubbed", true) },
{ isEfficient && arrayOf("hevc", "265", "av1").any { q -> it.quality.contains(q, true) } },
),
).reversed()
}
override fun setupPreferenceScreen(screen: PreferenceScreen) {
// Debrid provider
ListPreference(screen.context).apply {
@ -601,6 +614,25 @@ class Torrentio : ConfigurableAnimeSource, AnimeHttpSource() {
preferences.edit().putBoolean(key, newValue as Boolean).commit()
}
}.also(screen::addPreference)
SwitchPreferenceCompat(screen.context).apply {
key = IS_DUB_KEY
title = "Dubbed Video Priority"
setDefaultValue(IS_DUB_DEFAULT)
setOnPreferenceChangeListener { _, newValue ->
preferences.edit().putBoolean(key, newValue as Boolean).commit()
}
}.also(screen::addPreference)
SwitchPreferenceCompat(screen.context).apply {
key = IS_EFFICIENT_KEY
title = "Efficient Video Priority"
setDefaultValue(IS_EFFICIENT_DEFAULT)
setOnPreferenceChangeListener { _, newValue ->
preferences.edit().putBoolean(key, newValue as Boolean).commit()
}
summary = "Codec: (HEVC / x265) & AV1. High-quality video with less data usage."
}.also(screen::addPreference)
}
companion object {
@ -863,6 +895,12 @@ class Torrentio : ConfigurableAnimeSource, AnimeHttpSource() {
private const val UPCOMING_EP_KEY = "upcoming_ep"
private const val UPCOMING_EP_DEFAULT = false
private const val IS_DUB_KEY = "dubbed"
private const val IS_DUB_DEFAULT = false
private const val IS_EFFICIENT_KEY = "efficient"
private const val IS_EFFICIENT_DEFAULT = false
private val DATE_FORMATTER by lazy {
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.ENGLISH)
}