From b579b23acb47ef5239b7c92f1674f15fe8d063ac Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Sun, 26 Jun 2022 16:40:25 +0200 Subject: [PATCH] Improve loudnessDb handling --- .../vimusic/services/PlayerService.kt | 27 +++++++++++-------- .../it/vfsfitvnm/vimusic/utils/utils.kt | 9 +++---- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt index 5171456..d158b5f 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt @@ -169,9 +169,9 @@ class PlayerService : Service(), Player.Listener, PlaybackStatsListener.Callback private fun normalizeVolume() { if (preferences.volumeNormalization) { - player.volume = player.currentMediaItem?.mediaId?.let { mediaId -> - songPendingLoudnessDb.getOrElse(mediaId) { - player.currentMediaItem?.mediaMetadata?.extras?.getFloat("loudnessDb") + player.volume = player.currentMediaItem?.let { mediaItem -> + songPendingLoudnessDb.getOrElse(mediaItem.mediaId) { + mediaItem.mediaMetadata.extras?.getFloat("loudnessDb") }?.takeIf { it > 0 }?.let { loudnessDb -> (1f - (0.01f + loudnessDb / 14)).coerceIn(0.1f, 1f) } @@ -365,17 +365,22 @@ class PlayerService : Service(), Player.Listener, PlaybackStatsListener.Callback format.itag == 251 || format.itag == 140 }?.let { format -> val mediaItem = runBlocking(Dispatchers.Main) { - player.currentMediaItem + player.findNextMediaItemById(videoId) } - if (mediaItem?.mediaId == videoId) { + loudnessDb?.let { loudnessDb -> + mediaItem?.mediaMetadata?.extras + ?.putFloat("loudnessDb", loudnessDb) + } + + format.contentLength?.let { contentLength -> + mediaItem?.mediaMetadata?.extras + ?.putLong("contentLength", contentLength) + } + + mediaItem?.let { Database.internal.queryExecutor.execute { - Database.update( - Database.insert(mediaItem).copy( - loudnessDb = loudnessDb, - contentLength = format.contentLength - ) - ) + Database.insert(it) } } diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/utils.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/utils.kt index 5d5c350..aa9c469 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/utils.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/utils.kt @@ -9,10 +9,7 @@ import androidx.media3.common.MediaItem import androidx.media3.common.MediaMetadata import it.vfsfitvnm.vimusic.Database import it.vfsfitvnm.vimusic.internal -import it.vfsfitvnm.vimusic.models.Info -import it.vfsfitvnm.vimusic.models.Song -import it.vfsfitvnm.vimusic.models.SongWithAuthors -import it.vfsfitvnm.vimusic.models.SongWithInfo +import it.vfsfitvnm.vimusic.models.* import it.vfsfitvnm.youtubemusic.YouTube fun Context.shareAsYouTubeSong(mediaItem: MediaItem) { @@ -57,7 +54,9 @@ fun Database.insert(mediaItem: MediaItem): Song { title = mediaItem.mediaMetadata.title!!.toString(), albumInfoId = albumInfoId, durationText = mediaItem.mediaMetadata.extras?.getString("durationText")!!, - thumbnailUrl = mediaItem.mediaMetadata.artworkUri!!.toString() + thumbnailUrl = mediaItem.mediaMetadata.artworkUri!!.toString(), + loudnessDb = mediaItem.mediaMetadata.extras?.getFloat("loudnessDb"), + contentLength = mediaItem.mediaMetadata.extras?.getLong("contentLength"), ) insert(song)