diff --git a/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/DownloadViewModel.kt b/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/DownloadViewModel.kt index a060d9a4..338ddbaf 100644 --- a/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/DownloadViewModel.kt +++ b/app/src/main/java/com/deniscerri/ytdl/database/viewmodel/DownloadViewModel.kt @@ -658,11 +658,12 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel repository.deleteProcessing() processingItems.emit(true) try { - itemIDs.forEach { + itemIDs.forEachIndexed { index, it -> val item = repository.getItemByID(it) if (processingItemsJob?.isCancelled == true) throw CancellationException() if (!deleteExisting) item.id = 0 item.status = DownloadRepository.Status.Processing.toString() + item.rowNumber = index + 1 repository.update(item) } processingItems.emit(false) @@ -680,10 +681,11 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel processingItems.emit(true) try { val toInsert = mutableListOf() - itemIDs.forEach { + itemIDs.forEachIndexed { index, it -> val item = historyRepository.getItem(it) val downloadItem = createDownloadItemFromHistory(item) downloadItem.status = DownloadRepository.Status.Processing.toString() + downloadItem.rowNumber = index + 1 if (processingItemsJob?.isCancelled == true) { throw CancellationException() @@ -717,13 +719,14 @@ class DownloadViewModel(private val application: Application) : AndroidViewModel processingItems.emit(true) try { val toInsert = mutableListOf() - itemIDs.forEach { id -> - val item = resultRepository.getItemByID(id) ?: return@forEach + itemIDs.forEachIndexed { index, id -> + val item = resultRepository.getItemByID(id) ?: return@forEachIndexed val preferredType = getDownloadType(url = item.url).toString() val downloadItem = createDownloadItemFromResult(result = item, givenType = DownloadType.valueOf( preferredType )) downloadItem.status = DownloadRepository.Status.Processing.toString() + downloadItem.rowNumber = index + 1 if (processingItemsJob?.isCancelled == true) { throw CancellationException() diff --git a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadVideoFragment.kt b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadVideoFragment.kt index 6d1e3baf..f23ff479 100644 --- a/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadVideoFragment.kt +++ b/app/src/main/java/com/deniscerri/ytdl/ui/downloadcard/DownloadVideoFragment.kt @@ -17,7 +17,6 @@ import android.widget.LinearLayout import android.widget.TextView import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.content.res.AppCompatResources -import androidx.core.content.edit import androidx.core.view.isVisible import androidx.core.view.setPadding import androidx.fragment.app.Fragment 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 5ed7a3aa..4a8f41a4 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 @@ -867,7 +867,7 @@ class YTDLPUtil(private val context: Context, private val commandTemplateDao: Co downloadItem.rowNumber.apply { if (this > 0) { - request.addOption("--autonumber-start", this.toString()) + request.addOption("--parse-metadata", " ${downloadItem.rowNumber}: %(rownumber)s") } } diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index abdb3d45..3cbc8729 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -919,6 +919,7 @@ %(uploader)s___(string): Full name of the video uploader) %(title)s___(string): Video title) + %(rownumber)s___(numeric): Row number of item, when downloading multiple items at once) %(id)s___(string): Video identifier) %(playlist_index,playlist_autonumber&{}. |)s%(title)s___(string): Title with playlist index in front if its available %(fulltitle)s___(string): Video title ignoring live timestamp and generic title)