AnimesUp: Add quality pref (#1039)

* Add preferred quality config

* Bump version
This commit is contained in:
Claudemirovsky
2022-11-23 05:09:06 -03:00
committed by GitHub
parent 9f13e91b00
commit 645997d7c1
2 changed files with 53 additions and 2 deletions

View File

@ -5,7 +5,7 @@ ext {
extName = 'AnimesUP' extName = 'AnimesUP'
pkgNameSuffix = 'pt.animesup' pkgNameSuffix = 'pt.animesup'
extClass = '.AnimesUp' extClass = '.AnimesUp'
extVersionCode = 1 extVersionCode = 2
libVersion = '13' libVersion = '13'
} }

View File

@ -1,8 +1,13 @@
package eu.kanade.tachiyomi.animeextension.pt.animesup package eu.kanade.tachiyomi.animeextension.pt.animesup
import android.app.Application
import android.content.SharedPreferences
import android.net.Uri import android.net.Uri
import androidx.preference.ListPreference
import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.animeextension.pt.animesup.extractors.AnimesUpExtractor import eu.kanade.tachiyomi.animeextension.pt.animesup.extractors.AnimesUpExtractor
import eu.kanade.tachiyomi.animeextension.pt.animesup.extractors.LegacyFunExtractor import eu.kanade.tachiyomi.animeextension.pt.animesup.extractors.LegacyFunExtractor
import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
import eu.kanade.tachiyomi.animesource.model.AnimeFilterList import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
import eu.kanade.tachiyomi.animesource.model.AnimesPage import eu.kanade.tachiyomi.animesource.model.AnimesPage
import eu.kanade.tachiyomi.animesource.model.SAnime import eu.kanade.tachiyomi.animesource.model.SAnime
@ -19,10 +24,11 @@ import okhttp3.Response
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
import rx.Observable import rx.Observable
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
import java.lang.Exception import java.lang.Exception
class AnimesUp : ParsedAnimeHttpSource() { class AnimesUp : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
override val name = "AnimesUp" override val name = "AnimesUp"
@ -37,6 +43,10 @@ class AnimesUp : ParsedAnimeHttpSource() {
override fun headersBuilder(): Headers.Builder = Headers.Builder() override fun headersBuilder(): Headers.Builder = Headers.Builder()
.add("Referer", baseUrl) .add("Referer", baseUrl)
private val preferences: SharedPreferences by lazy {
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
}
// ============================== Popular =============================== // ============================== Popular ===============================
override fun popularAnimeSelector(): String = "article.w_item_b > a" override fun popularAnimeSelector(): String = "article.w_item_b > a"
@ -230,6 +240,26 @@ class AnimesUp : ParsedAnimeHttpSource() {
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/episodios/page/$page", headers) override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/episodios/page/$page", headers)
// ============================== Settings ==============================
override fun setupPreferenceScreen(screen: PreferenceScreen) {
val videoQualityPref = ListPreference(screen.context).apply {
key = PREF_QUALITY_KEY
title = PREF_QUALITY_TITLE
entries = PREF_QUALITY_ENTRIES
entryValues = PREF_QUALITY_VALUES
setDefaultValue(PREF_QUALITY_DEFAULT)
summary = "%s"
setOnPreferenceChangeListener { _, newValue ->
val selected = newValue as String
val index = findIndexOfValue(selected)
val entry = entryValues[index] as String
preferences.edit().putString(key, entry).commit()
}
}
screen.addPreference(videoQualityPref)
}
// ============================= Utilities ============================== // ============================= Utilities ==============================
private val animeMenuSelector = "div.pag_episodes div.item a[href] i.icon-bars" private val animeMenuSelector = "div.pag_episodes div.item a[href] i.icon-bars"
@ -263,7 +293,28 @@ class AnimesUp : ParsedAnimeHttpSource() {
return Uri.parse(this).getQueryParameter(param) return Uri.parse(this).getQueryParameter(param)
} }
override fun List<Video>.sort(): List<Video> {
val quality = preferences.getString(PREF_QUALITY_KEY, PREF_QUALITY_DEFAULT)!!
val newList = mutableListOf<Video>()
var preferred = 0
for (video in this) {
if (quality == video.quality.substringAfterLast(" ")) {
newList.add(preferred, video)
preferred++
} else {
newList.add(video)
}
}
return newList
}
companion object { companion object {
const val PREFIX_SEARCH = "slug:" const val PREFIX_SEARCH = "slug:"
private const val PREF_QUALITY_KEY = "preferred_quality"
private const val PREF_QUALITY_TITLE = "Qualidade preferida"
private const val PREF_QUALITY_DEFAULT = "HD"
private val PREF_QUALITY_ENTRIES = arrayOf("SD", "HD", "FULL HD")
private val PREF_QUALITY_VALUES = arrayOf("SD", "HD", "FHD")
} }
} }