From 7a25a1912790c5043ca7e21fa8283fdc5323dfa7 Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Sun, 24 Aug 2025 11:13:19 +0200 Subject: [PATCH] fixes --- .../more/settings/FolderSettingsFragment.kt | 15 ++++++++++- .../settings/ProcessingSettingsFragment.kt | 18 +++++++++++++ .../java/com/deniscerri/ytdl/util/UiUtil.kt | 26 +++++++++++++------ .../ytdl/util/extractors/YTDLPUtil.kt | 16 +++++------- app/src/main/res/layout/adjust_video.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- .../main/res/xml/processing_preferences.xml | 8 ++++++ 7 files changed, 67 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/FolderSettingsFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/FolderSettingsFragment.kt index 979403d7..ba44db3e 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/FolderSettingsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/FolderSettingsFragment.kt @@ -198,7 +198,20 @@ class FolderSettingsFragment : BaseSettingsFragment() { downloadViewModel.getActiveDownloadsCount() } if (activeDownloadCount == 0){ - File(FileUtil.getCachePath(requireContext())).deleteRecursively() + fun clearCacheFolder(folder: File) { + if (folder.exists() && folder.isDirectory) { + folder.listFiles()?.forEach { file -> + if (file.isDirectory) { + clearCacheFolder(file) + file.delete() + } else { + file.delete() + } + } + } + } + clearCacheFolder(File(FileUtil.getCachePath(requireContext()))) + Snackbar.make(requireView(), getString(R.string.cache_cleared), Snackbar.LENGTH_SHORT).show() cacheSize = File(FileUtil.getCachePath(requireContext())).walkBottomUp().fold(0L) { acc, file -> acc + file.length() } clearCache!!.summary = "(${FileUtil.convertFileSize(cacheSize)}) ${resources.getString(R.string.clear_temporary_files_summary)}" diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/ProcessingSettingsFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/ProcessingSettingsFragment.kt index 64bfccbf..f9b247ee 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/ProcessingSettingsFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/more/settings/ProcessingSettingsFragment.kt @@ -6,6 +6,7 @@ import androidx.navigation.fragment.findNavController import androidx.preference.EditTextPreference import androidx.preference.Preference import androidx.preference.PreferenceManager +import androidx.preference.SwitchPreferenceCompat import com.afollestad.materialdialogs.utils.MDUtil.getStringArray import com.deniscerri.ytdl.R import com.deniscerri.ytdl.util.UiUtil @@ -100,6 +101,23 @@ class ProcessingSettingsFragment : BaseSettingsFragment() { } } + val recodeVideoPreference = findPreference("recode_video")!! + val compatibleVideoPreference = findPreference("compatible_video")!! + + recodeVideoPreference.setOnPreferenceClickListener { + if (compatibleVideoPreference.isChecked && recodeVideoPreference.isChecked) { + compatibleVideoPreference.performClick() + } + true + } + + compatibleVideoPreference.setOnPreferenceClickListener { + if (compatibleVideoPreference.isChecked && recodeVideoPreference.isChecked) { + recodeVideoPreference.performClick() + } + true + } + findPreference("reset_preferences")?.setOnPreferenceClickListener { UiUtil.showGenericConfirmDialog(requireContext(), getString(R.string.reset), getString(R.string.reset_preferences_in_screen)) { resetPreferences(editor, R.xml.processing_preferences) diff --git a/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt b/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt index 5302899c..9965a45f 100644 --- a/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt @@ -1457,25 +1457,35 @@ object UiUtil { val recodeVideo = view.findViewById(R.id.recode_video) recodeVideo.setOnClickListener { val adjustVideoView = context.layoutInflater.inflate(R.layout.video_download_preferences_dialog, null) - adjustVideoView.findViewById(R.id.recodeVideoSwitch).apply { + + val recodeVideoSwitch = adjustVideoView.findViewById(R.id.recodeVideoSwitch) + val compatibilityModeSwitch = adjustVideoView.findViewById(R.id.compatiblityModeSwitch) + + recodeVideoSwitch.apply { isChecked = items.all { it.videoPreferences.recodeVideo } - setOnCheckedChangeListener { _, b -> - recodeVideoClicked(b) + setOnClickListener { _ -> + recodeVideoClicked(isChecked) + + compatibilityModeSwitch.isChecked = false + compatibilityModeClicked(false) } } - adjustVideoView.findViewById(R.id.compatiblityModeSwitch).apply { + compatibilityModeSwitch.apply { isChecked = items.first().videoPreferences.compatibilityMode - setOnCheckedChangeListener { _, b -> - compatibilityModeClicked(b) + setOnClickListener { _ -> + compatibilityModeClicked(isChecked) + + recodeVideoSwitch.isChecked = false + recodeVideoClicked(false) } } val adjustVideoDialog = MaterialAlertDialogBuilder(context) .setTitle(context.getString(R.string.recode_video)) .setView(adjustVideoView) - .setIcon(R.drawable.ic_video) - .setNegativeButton(context.resources.getString(R.string.dismiss)) { _: DialogInterface?, _: Int -> } + .setIcon(R.drawable.baseline_video_metadata) + .setNegativeButton(context.resources.getString(R.string.ok)) { _: DialogInterface?, _: Int -> } adjustVideoDialog.show() } diff --git a/app/src/main/java/com/deniscerri/ytdl/util/extractors/YTDLPUtil.kt b/app/src/main/java/com/deniscerri/ytdl/util/extractors/YTDLPUtil.kt index 036029b2..f4d55b3c 100644 --- a/app/src/main/java/com/deniscerri/ytdl/util/extractors/YTDLPUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdl/util/extractors/YTDLPUtil.kt @@ -1115,12 +1115,7 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co var cont = "" val outputContainer = downloadItem.container - if( - outputContainer.isNotEmpty() && - outputContainer != "Default" && - outputContainer != context.getString(R.string.defaultValue) && - supportedContainers.contains(outputContainer) - ){ + if(outputContainer.isNotEmpty() && outputContainer != "Default" && outputContainer != context.getString(R.string.defaultValue) && supportedContainers.contains(outputContainer)){ cont = outputContainer val cantRecode = listOf("avi") @@ -1150,7 +1145,7 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co //format logic var videoF = downloadItem.format.format_id var altAudioF = "" - var audioF = downloadItem.videoPreferences.audioFormatIDs.map { f -> + var audioF = downloadItem.videoPreferences.audioFormatIDs.joinToString("+") { f -> val format = downloadItem.allFormats.find { it.format_id == f } format?.run { if (this.format_id.matches(".*-[0-9]+".toRegex())) { @@ -1162,7 +1157,7 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co } } else this.format_id } ?: f - }.joinToString("+").ifBlank { "ba" } + }.ifBlank { "ba" } val preferredAudioLanguage = sharedPreferences.getString("audio_language", "")!! if (downloadItem.videoPreferences.removeAudio) audioF = "" @@ -1175,7 +1170,6 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co val f = StringBuilder() val preferredCodec = sharedPreferences.getString("video_codec", "") - val preferredQuality = sharedPreferences.getString("video_quality", "best") val vCodecPrefIndex = context.getStringArray(R.array.video_codec_values).indexOf(preferredCodec) var vCodecPref = context.getStringArray(R.array.video_codec_values_ytdlp)[vCodecPrefIndex] @@ -1277,6 +1271,10 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co if(!f.endsWith("b/")){ //last fallback + if (f.isBlank()) { + f.append("bv/") + } + f.append("b") } diff --git a/app/src/main/res/layout/adjust_video.xml b/app/src/main/res/layout/adjust_video.xml index c041eb82..0d4f42a5 100644 --- a/app/src/main/res/layout/adjust_video.xml +++ b/app/src/main/res/layout/adjust_video.xml @@ -116,7 +116,7 @@ android:layout_height="wrap_content" android:checked="false" app:chipIconVisible="true" - app:chipIcon="@drawable/ic_video" + app:chipIcon="@drawable/baseline_video_metadata" android:text="@string/recode_video" /> Accents High contrast Pure black / white theme - Material you + Material You Blue Red Green diff --git a/app/src/main/res/xml/processing_preferences.xml b/app/src/main/res/xml/processing_preferences.xml index c5173d2f..fd4d0c3f 100644 --- a/app/src/main/res/xml/processing_preferences.xml +++ b/app/src/main/res/xml/processing_preferences.xml @@ -243,6 +243,14 @@ android:summary="@string/recode_video_summary" app:title="@string/recode_video" /> + +