From 841527eb74ef28d88fe4873b36bbc5b4c40867c7 Mon Sep 17 00:00:00 2001 From: Nicholas Wallace Date: Sun, 16 Mar 2025 17:06:58 -0700 Subject: [PATCH] Simplify `AbsDownloader` download item creation --- .../app/plugins/AbsDownloader.kt | 85 +++++++++---------- 1 file changed, 39 insertions(+), 46 deletions(-) diff --git a/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDownloader.kt b/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDownloader.kt index 758b5b50..b07504e1 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDownloader.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/plugins/AbsDownloader.kt @@ -164,32 +164,47 @@ class AbsDownloader : Plugin() { Log.d(tag, "downloadCacheDirectory=$tempFolderPath") + val title = cleanStringForFileSystem(libraryItem.media.metadata.title) + var itemSubfolder = + if (libraryItem.mediaType == "book") { + val bookAuthor = + cleanStringForFileSystem(libraryItem.media.metadata.getAuthorDisplayName()) + "$bookAuthor/$title" + } else { + title + } + val itemFolderPath = + if (isInternal) "$tempFolderPath" else "${localFolder.absolutePath}/$itemSubfolder" + + var downloadItemId = + if (libraryItem.mediaType == "book") { + "${libraryItem.id}" + } else { + "${libraryItem.id}-${episode?.id}" + } + + val downloadItem = + DownloadItem( + downloadItemId, + libraryItem.id, + episode?.id, + libraryItem.userMediaProgress, + DeviceManager.serverConnectionConfig?.id ?: "", + DeviceManager.serverAddress, + DeviceManager.serverUserId, + libraryItem.mediaType, + itemFolderPath, + localFolder, + title, + title, + libraryItem.media, + mutableListOf() + ) + if (libraryItem.mediaType == "book") { - val bookTitle = cleanStringForFileSystem(libraryItem.media.metadata.title) - val bookAuthor = cleanStringForFileSystem(libraryItem.media.metadata.getAuthorDisplayName()) val tracks = libraryItem.media.getAudioTracks() Log.d(tag, "Starting library item download with ${tracks.size} tracks") - val itemSubfolder = "$bookAuthor/$bookTitle" - val itemFolderPath = - if (isInternal) "$tempFolderPath" else "${localFolder.absolutePath}/$itemSubfolder" - val downloadItem = - DownloadItem( - libraryItem.id, - libraryItem.id, - null, - libraryItem.userMediaProgress, - DeviceManager.serverConnectionConfig?.id ?: "", - DeviceManager.serverAddress, - DeviceManager.serverUserId, - libraryItem.mediaType, - itemFolderPath, - localFolder, - bookTitle, - itemSubfolder, - libraryItem.media, - mutableListOf() - ) val book = libraryItem.media as Book book.ebookFile?.let { ebookFile -> @@ -334,33 +349,11 @@ class AbsDownloader : Plugin() { } } else { // Podcast episode download - val podcastTitle = cleanStringForFileSystem(libraryItem.media.metadata.title) - val audioTrack = episode?.audioTrack val audioFileIno = episode?.audioFile?.ino val fileSize = audioTrack?.metadata?.size ?: 0 Log.d(tag, "Starting podcast episode download") - val itemFolderPath = - if (isInternal) "$tempFolderPath" else "${localFolder.absolutePath}/$podcastTitle" - val downloadItemId = "${libraryItem.id}-${episode?.id}" - val downloadItem = - DownloadItem( - downloadItemId, - libraryItem.id, - episode?.id, - libraryItem.userMediaProgress, - DeviceManager.serverConnectionConfig?.id ?: "", - DeviceManager.serverAddress, - DeviceManager.serverUserId, - libraryItem.mediaType, - itemFolderPath, - localFolder, - podcastTitle, - podcastTitle, - libraryItem.media, - mutableListOf() - ) var serverPath = "/api/items/${libraryItem.id}/file/${audioFileIno}/download" var destinationFilename = getFilenameFromRelPath(audioTrack?.relPath ?: "") @@ -386,7 +379,7 @@ class AbsDownloader : Plugin() { fileSize, destinationFile, finalDestinationFile, - podcastTitle, + title, serverPath, localFolder, null, @@ -417,7 +410,7 @@ class AbsDownloader : Plugin() { coverFileSize, destinationFile, finalDestinationFile, - podcastTitle, + title, serverPath, localFolder, null,