From 6b83fd7f4666fa7e40701b661949fb0728fb5f6a Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Mon, 17 Apr 2023 13:51:56 +0200 Subject: [PATCH] made video recommendations as optional --- .../database/viewmodel/ResultViewModel.kt | 24 ++++++++++++------- .../ui/more/settings/SettingsFragment.kt | 10 ++++++++ .../com/deniscerri/ytdlnis/util/InfoUtil.kt | 4 ++-- app/src/main/res/values/arrays.xml | 4 ++-- app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/root_preferences.xml | 12 ++++++++-- 6 files changed, 41 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/ResultViewModel.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/ResultViewModel.kt index 25ef0b47..db4820b9 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/ResultViewModel.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/ResultViewModel.kt @@ -1,6 +1,8 @@ package com.deniscerri.ytdlnis.database.viewmodel +import android.app.Activity import android.app.Application +import android.content.SharedPreferences import android.util.Log import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.LiveData @@ -25,6 +27,7 @@ class ResultViewModel(application: Application) : AndroidViewModel(application) val items : LiveData> val loadingItems = MutableLiveData() var itemCount : LiveData + private val sharedPreferences: SharedPreferences init { val dao = DBManager.getInstance(application).resultDao @@ -34,20 +37,23 @@ class ResultViewModel(application: Application) : AndroidViewModel(application) items = repository.allResults loadingItems.postValue(false) itemCount = repository.itemCount + sharedPreferences = application.getSharedPreferences("root_preferences", Activity.MODE_PRIVATE) } fun checkTrending() = viewModelScope.launch(Dispatchers.IO){ - try { - val item = repository.getFirstResult() - if ( - item.playlistTitle == getApplication().getString(R.string.trendingPlaylist) - && item.creationTime < (System.currentTimeMillis() / 1000) - 86400 - ){ + if (sharedPreferences.getBoolean("home_recommendations", false)){ + try { + val item = repository.getFirstResult() + if ( + item.playlistTitle == getApplication().getString(R.string.trendingPlaylist) + && item.creationTime < (System.currentTimeMillis() / 1000) - 86400 + ){ + getTrending() + } + }catch (e : Exception){ + e.printStackTrace() getTrending() } - }catch (e : Exception){ - e.printStackTrace() - getTrending() } } fun getTrending() = viewModelScope.launch(Dispatchers.IO){ diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt index 8d9cbe14..6268066d 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/more/settings/SettingsFragment.kt @@ -44,6 +44,7 @@ class SettingsFragment : PreferenceFragmentCompat() { private var downloadCard: SwitchPreferenceCompat? = null private var meteredNetwork: SwitchPreferenceCompat? = null private var apiKey: EditTextPreference? = null + private var homeRecommendations: SwitchPreferenceCompat? = null private var concurrentFragments: SeekBarPreference? = null private var concurrentDownloads: SeekBarPreference? = null private var limitRate: EditTextPreference? = null @@ -110,6 +111,7 @@ class SettingsFragment : PreferenceFragmentCompat() { downloadCard = findPreference("download_card") meteredNetwork = findPreference("metered_networks") apiKey = findPreference("api_key") + homeRecommendations = findPreference("home_recommendations") concurrentFragments = findPreference("concurrent_fragments") concurrentDownloads = findPreference("concurrent_downloads") limitRate = findPreference("limit_rate") @@ -175,6 +177,7 @@ class SettingsFragment : PreferenceFragmentCompat() { editor.putBoolean("download_card", downloadCard!!.isChecked) editor.putBoolean("metered_networks", meteredNetwork!!.isChecked) editor.putString("api_key", apiKey!!.text) + editor.putBoolean("home_recommendations", homeRecommendations!!.isChecked) editor.putInt("concurrent_fragments", concurrentFragments!!.value) editor.putInt("concurrent_downloads", concurrentDownloads!!.value) editor.putString("limit_rate", limitRate!!.text) @@ -311,6 +314,13 @@ class SettingsFragment : PreferenceFragmentCompat() { editor.apply() true } + homeRecommendations!!.onPreferenceChangeListener = + Preference.OnPreferenceChangeListener { _: Preference?, newValue: Any -> + val enable = newValue as Boolean + editor.putBoolean("home_recommendations", enable) + editor.apply() + true + } concurrentFragments!!.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _: Preference?, newValue: Any -> val value = newValue.toString().toInt() diff --git a/app/src/main/java/com/deniscerri/ytdlnis/util/InfoUtil.kt b/app/src/main/java/com/deniscerri/ytdlnis/util/InfoUtil.kt index 25b991d8..db354b5f 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/util/InfoUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/util/InfoUtil.kt @@ -489,8 +489,8 @@ class InfoUtil(private val context: Context) { init() val p = Pattern.compile("^(https?)://(www.)?youtu(.be)?") val m = p.matcher(url) - val formatSource = sharedPreferences.getString("formats_source", context.getString(R.string.defaultValue))!! - return if(m.find() && useInvidous && formatSource == "Default"){ + val formatSource = sharedPreferences.getString("formats_source", "yt-dlp") + return if(m.find() && useInvidous && formatSource == "invidious"){ val id = getIDFromYoutubeURL(url) val res = genericRequest(invidousURL + "videos/" + id) if (res.length() == 0) getFromYTDL(url)[0]!! diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 1e63d1e5..8ef702ec 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -117,12 +117,12 @@ - @string/defaultValue + Invidious API [Youtube] yt-dlp - Default + invidious yt-dlp \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7a49d8b5..0c424dd2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -212,4 +212,6 @@ Write subtitle file Subtitle languages Formats Source + Video Recommendations + Get Recommended Youtube Videos on the Home Screen from Invidious \ No newline at end of file diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index adf8a54d..3e66345e 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -90,6 +90,14 @@ app:summary="@string/api_key_summary" app:title="@string/api_key" /> + +