From 6380d7cc0258a46295e897421d25650b68c8f692 Mon Sep 17 00:00:00 2001 From: advplyr Date: Wed, 12 Jun 2024 18:01:44 -0500 Subject: [PATCH] Fix local episode play-item event, set PodcastEpisode size and AudioTrack FileMetadata for downloads --- .../main/java/com/audiobookshelf/app/data/DataClasses.kt | 2 +- .../java/com/audiobookshelf/app/device/FolderScanner.kt | 6 ++++-- pages/localMedia/item/_id.vue | 9 +++------ 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/android/app/src/main/java/com/audiobookshelf/app/data/DataClasses.kt b/android/app/src/main/java/com/audiobookshelf/app/data/DataClasses.kt index 7b4f1426..22e57ee1 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/data/DataClasses.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/data/DataClasses.kt @@ -96,7 +96,7 @@ class Podcast( @JsonIgnore fun addEpisode(audioTrack:AudioTrack, episode:PodcastEpisode):PodcastEpisode { val localEpisodeId = "local_ep_" + episode.id - val newEpisode = PodcastEpisode(localEpisodeId,(episodes?.size ?: 0) + 1,episode.episode,episode.episodeType,episode.title,episode.subtitle,episode.description,null,null,null,audioTrack,episode.chapters,audioTrack.duration,0, episode.id, localEpisodeId) + val newEpisode = PodcastEpisode(localEpisodeId,(episodes?.size ?: 0) + 1,episode.episode,episode.episodeType,episode.title,episode.subtitle,episode.description,null,null,null,audioTrack,episode.chapters,audioTrack.duration,episode.size, episode.id, localEpisodeId) episodes?.add(newEpisode) var index = 1 diff --git a/android/app/src/main/java/com/audiobookshelf/app/device/FolderScanner.kt b/android/app/src/main/java/com/audiobookshelf/app/device/FolderScanner.kt index e861cbff..be45e425 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/device/FolderScanner.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/device/FolderScanner.kt @@ -70,6 +70,7 @@ class FolderScanner(var ctx: Context) { ) localLibraryItem.localFiles.add(localFile) + val trackFileMetadata = FileMetadata(file.name, file.extension, file.absolutePath, file.getBasePath(ctx), file.length()) // Create new audio track val track = AudioTrack( audioTrackFromServer.index, @@ -78,7 +79,7 @@ class FolderScanner(var ctx: Context) { localFile.filename ?: "", localFile.contentUrl, localFile.mimeType ?: "", - null, + trackFileMetadata, true, localFileId, null, @@ -274,7 +275,8 @@ class FolderScanner(var ctx: Context) { localLibraryItem.localFiles.add(localFile) // Create new audio track - val track = AudioTrack(audioTrackFromServer.index, audioTrackFromServer.startOffset, audioTrackFromServer.duration, localFile.filename ?: "", localFile.contentUrl, localFile.mimeType ?: "", null, true, localFileId, null, audioTrackFromServer.index) + val trackFileMetadata = FileMetadata(docFile.name ?: "", docFile.extension ?: "", docFile.getAbsolutePath(ctx), docFile.getBasePath(ctx), docFile.length()) + val track = AudioTrack(audioTrackFromServer.index, audioTrackFromServer.startOffset, audioTrackFromServer.duration, localFile.filename ?: "", localFile.contentUrl, localFile.mimeType ?: "", trackFileMetadata, true, localFileId, null, audioTrackFromServer.index) audioTracks.add(track) Log.d(tag, "scanDownloadItem: Created Audio Track with index ${track.index} from local file ${localFile.absolutePath}") diff --git a/pages/localMedia/item/_id.vue b/pages/localMedia/item/_id.vue index f3796fe4..454904d7 100644 --- a/pages/localMedia/item/_id.vue +++ b/pages/localMedia/item/_id.vue @@ -332,16 +332,13 @@ export default { if (!this.selectedEpisode) return if (this.playerIsStartingPlayback) return await this.$hapticsImpact() - this.$store.commit('setPlayerIsStartingPlayback', this.selectedEpisode.id) - this.$eventBus.$emit('play-item', { - libraryItemId: this.localLibraryItemId, - episodeId: this.selectedEpisode.id - }) + this.$store.commit('setPlayerIsStartingPlayback', this.selectedEpisode.serverEpisodeId) + this.$eventBus.$emit('play-item', { libraryItemId: this.localLibraryItemId, episodeId: this.selectedEpisode.id, serverLibraryItemId: this.libraryItemId, - serverEpisodeId: this.selectedEpisode.id + serverEpisodeId: this.selectedEpisode.serverEpisodeId }) }, async dialogAction(action) {