From 3290a15c889a655a382760970792217c3859011a Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Tue, 15 May 2018 22:35:30 +0200 Subject: [PATCH] See #195: expose bitrate, size and duration in subsonic API --- api/funkwhale_api/subsonic/serializers.py | 8 ++++++++ api/tests/subsonic/test_serializers.py | 14 ++++++++++---- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/api/funkwhale_api/subsonic/serializers.py b/api/funkwhale_api/subsonic/serializers.py index 5bc45288..6709930f 100644 --- a/api/funkwhale_api/subsonic/serializers.py +++ b/api/funkwhale_api/subsonic/serializers.py @@ -81,6 +81,10 @@ def get_track_data(album, track, tf): 'artistId': album.artist.pk, 'type': 'music', } + if tf.bitrate: + data['bitrate'] = int(tf.bitrate/1000) + if tf.size: + data['size'] = tf.size if album.release_date: data['year'] = album.release_date.year return data @@ -211,5 +215,9 @@ def get_music_directory_data(artist): 'parent': artist.id, 'type': 'music', } + if tf.bitrate: + td['bitrate'] = int(tf.bitrate/1000) + if tf.size: + td['size'] = tf.size data['child'].append(td) return data diff --git a/api/tests/subsonic/test_serializers.py b/api/tests/subsonic/test_serializers.py index 6da9dd12..ad9f739a 100644 --- a/api/tests/subsonic/test_serializers.py +++ b/api/tests/subsonic/test_serializers.py @@ -77,7 +77,8 @@ def test_get_album_serializer(factories): artist = factories['music.Artist']() album = factories['music.Album'](artist=artist) track = factories['music.Track'](album=album) - tf = factories['music.TrackFile'](track=track) + tf = factories['music.TrackFile']( + track=track, bitrate=42000, duration=43, size=44) expected = { 'id': album.pk, @@ -98,7 +99,9 @@ def test_get_album_serializer(factories): 'year': track.album.release_date.year, 'contentType': tf.mimetype, 'suffix': tf.extension or '', - 'duration': tf.duration or 0, + 'bitrate': 42, + 'duration': 43, + 'size': 44, 'created': track.creation_date, 'albumId': album.pk, 'artistId': artist.pk, @@ -177,7 +180,8 @@ def test_playlist_detail_serializer(factories): def test_directory_serializer_artist(factories): track = factories['music.Track']() - tf = factories['music.TrackFile'](track=track) + tf = factories['music.TrackFile']( + track=track, bitrate=42000, duration=43, size=44) album = track.album artist = track.artist @@ -195,7 +199,9 @@ def test_directory_serializer_artist(factories): 'year': track.album.release_date.year, 'contentType': tf.mimetype, 'suffix': tf.extension or '', - 'duration': tf.duration or 0, + 'bitrate': 42, + 'duration': 43, + 'size': 44, 'created': track.creation_date, 'albumId': album.pk, 'artistId': artist.pk, -- GitLab