From 01272688c87055c2afaeaff4e8ae89c59bdf5e91 Mon Sep 17 00:00:00 2001 From: deniscerri <64997243+deniscerri@users.noreply.github.com> Date: Fri, 20 Feb 2026 12:04:41 +0100 Subject: [PATCH] beta 2? --- .../ui/downloadcard/DownloadAudioFragment.kt | 7 ++- .../java/com/deniscerri/ytdl/util/UiUtil.kt | 48 +++++++++++++++---- .../ytdl/util/extractors/ytdlp/YTDLPUtil.kt | 13 ++++- app/src/main/res/layout/adjust_audio.xml | 45 +++++++---------- ..._thumbnail_download_preferences_dialog.xml | 22 +++++++++ app/src/main/res/values/arrays.xml | 11 +++-- 6 files changed, 100 insertions(+), 46 deletions(-) create mode 100644 app/src/main/res/layout/audio_thumbnail_download_preferences_dialog.xml diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadAudioFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadAudioFragment.kt index 77e2a985..99f52d2c 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadAudioFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadAudioFragment.kt @@ -33,6 +33,7 @@ import com.deniscerri.ytdl.database.viewmodel.FormatViewModel import com.deniscerri.ytdl.database.viewmodel.ResultViewModel import com.deniscerri.ytdl.database.viewmodel.YTDLPViewModel import com.deniscerri.ytdl.util.Extensions.applyFilenameTemplateForCuts +import com.deniscerri.ytdl.util.Extensions.createBadge import com.deniscerri.ytdl.util.FileUtil import com.deniscerri.ytdl.util.FormatUtil import com.deniscerri.ytdl.util.UiUtil @@ -294,12 +295,14 @@ class DownloadAudioFragment(private var resultItem: ResultItem? = null, private if (containers[index] == getString(R.string.defaultValue)) downloadItem.container = "" if (downloadItem.container == "wav") { downloadItem.audioPreferences.embedThumb = false - view.findViewById(R.id.embed_thumb).apply { + downloadItem.audioPreferences.cropThumb = false + view.findViewById(R.id.thumbnail).apply { isEnabled = false isChecked = false + createBadge(requireContext(), 0) } }else { - view.findViewById(R.id.embed_thumb).isEnabled = true + view.findViewById(R.id.thumbnail).isEnabled = true } } 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 07647aca..8795f8b2 100644 --- a/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdl/util/UiUtil.kt @@ -1804,19 +1804,47 @@ object UiUtil { ){ val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) - val embedThumb = view.findViewById(R.id.embed_thumb) - val cropThumb = view.findViewById(R.id.crop_thumb) + val adjustThumbnail = view.findViewById(R.id.thumbnail) + fun calculateAdjustThumbnailChangeCount() { + if (items.size == 1) { + val firstItem = items.first() + val count = listOf( + firstItem.audioPreferences.embedThumb, + firstItem.audioPreferences.cropThumb + ) + adjustThumbnail.createBadge(context, count.filter { it == true }.size) + } + } + calculateAdjustThumbnailChangeCount() + adjustThumbnail.setOnClickListener { + val adjustThumbnailView = context.layoutInflater.inflate(R.layout.audio_thumbnail_download_preferences_dialog, null) + val embedThumb = adjustThumbnailView.findViewById(R.id.embed_thumbnail) + val cropThumb = adjustThumbnailView.findViewById(R.id.crop_thumbnail) - embedThumb!!.isChecked = items.all { it.audioPreferences.embedThumb } - cropThumb.isVisible = embedThumb.isChecked - embedThumb.setOnClickListener { - embedThumbClicked(embedThumb.isChecked) + embedThumb!!.isChecked = items.all { it.audioPreferences.embedThumb } cropThumb.isVisible = embedThumb.isChecked - } - cropThumb!!.isChecked = items.all { it.audioPreferences.cropThumb == true } - cropThumb.setOnClickListener { - cropThumbClicked(cropThumb.isChecked) + embedThumb.setOnClickListener { + embedThumbClicked(embedThumb.isChecked) + cropThumb.isVisible = embedThumb.isChecked + items.forEach { it.audioPreferences.embedThumb = embedThumb.isChecked } + calculateAdjustThumbnailChangeCount() + } + + cropThumb!!.isChecked = items.all { it.audioPreferences.cropThumb == true } + cropThumb.setOnClickListener { + cropThumbClicked(cropThumb.isChecked) + items.forEach { it.audioPreferences.cropThumb = cropThumb.isChecked } + calculateAdjustThumbnailChangeCount() + } + + val adjustThumbnailDialog = MaterialAlertDialogBuilder(context) + .setTitle(context.getString(R.string.thumbnail)) + .setView(adjustThumbnailView) + .setIcon(R.drawable.ic_image) + .setNegativeButton(context.resources.getString(R.string.dismiss)) { _: DialogInterface?, _: Int -> } + + adjustThumbnailDialog.show() } val splitByChapters = view.findViewById(R.id.split_by_chapters) diff --git a/app/src/main/java/com/deniscerri/ytdl/util/extractors/ytdlp/YTDLPUtil.kt b/app/src/main/java/com/deniscerri/ytdl/util/extractors/ytdlp/YTDLPUtil.kt index 4a8f41a4..15e2911b 100644 --- a/app/src/main/java/com/deniscerri/ytdl/util/extractors/ytdlp/YTDLPUtil.kt +++ b/app/src/main/java/com/deniscerri/ytdl/util/extractors/ytdlp/YTDLPUtil.kt @@ -491,7 +491,16 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co val json = results[0] val jsonArray = runCatching { JSONArray(json) }.getOrElse { JSONArray() } - return parseYTDLFormats(jsonArray) + val formats = parseYTDLFormats(jsonArray) + if (formats.isEmpty()) { + runCatching { + getInfoJsonFile(url)?.apply { + this.delete() + } + } + } + + return formats } private fun parseYTDLFormats(formatsInJSON: JSONArray?) : ArrayList { @@ -862,7 +871,7 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co } if (downloadItem.playlistIndex != null) { - metadataCommands.addOption("--parse-metadata", "%(playlist_autonumber)s:playlist_autonumber") + metadataCommands.addOption("--parse-metadata", "%(playlist_index)s:playlist_index") } downloadItem.rowNumber.apply { diff --git a/app/src/main/res/layout/adjust_audio.xml b/app/src/main/res/layout/adjust_audio.xml index 7df63740..5041dbb8 100644 --- a/app/src/main/res/layout/adjust_audio.xml +++ b/app/src/main/res/layout/adjust_audio.xml @@ -25,32 +25,39 @@ android:layout_height="wrap_content"> + app:chipIcon="@drawable/ic_image" + android:outlineProvider="none" + android:text="@string/thumbnail" /> + android:text="@string/split_by_chapters"/> + android:text="@string/bitrate" + app:chipIcon="@drawable/baseline_high_quality_24" + app:chipIconVisible="true" + app:cornerRadius="10dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> @@ -84,22 +91,6 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 3cbc8729..c809768f 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -1567,15 +1567,16 @@ @string/defaultValue - 320 kpbs - 192 kpbs - 128 kpbs - 64 kpbs + 968 kbps + 320 kbps + 192 kbps + 128 kbps + 64 kbps - 320k + 968k 192k 128k 64k