Skip to content

Commit 112d4ab

Browse files
authored
Fix floats in API response (Fixes #375) (#376)
1 parent fc6ffb3 commit 112d4ab

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

mopidy_spotify/translator.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,11 @@ def web_to_album(web_album):
236236
return models.Album(uri=ref.uri, name=name, artists=artists)
237237

238238

239+
def int_or_none(inp):
240+
if inp is not None:
241+
return int(float(inp))
242+
243+
239244
def web_to_track(web_track, bitrate=None, album=None):
240245
ref = web_to_track_ref(web_track)
241246
if ref is None:
@@ -254,8 +259,8 @@ def web_to_track(web_track, bitrate=None, album=None):
254259
name=ref.name,
255260
artists=artists,
256261
album=album,
257-
length=web_track.get("duration_ms"),
258-
disc_no=web_track.get("disc_number"),
259-
track_no=web_track.get("track_number"),
262+
length=int_or_none(web_track.get("duration_ms")),
263+
disc_no=int_or_none(web_track.get("disc_number")),
264+
track_no=int_or_none(web_track.get("track_number")),
260265
bitrate=bitrate,
261266
)

tests/test_translator.py

+26
Original file line numberDiff line numberDiff line change
@@ -683,3 +683,29 @@ def test_ignores_invalid_album(self, web_track_mock):
683683

684684
assert track.name == "ABC 123"
685685
assert track.album is None
686+
687+
@pytest.mark.parametrize(
688+
"data",
689+
[
690+
(123),
691+
(123.0),
692+
("123"),
693+
("123.0"),
694+
],
695+
)
696+
def test_int_or_none_number(self, data):
697+
assert translator.int_or_none(data) == 123
698+
699+
def test_int_or_none_none(self):
700+
assert translator.int_or_none(None) is None
701+
702+
def test_ints_might_be_floats(self, web_track_mock):
703+
web_track_mock["duration_ms"] = 123.0
704+
web_track_mock["disc_number"] = "456.0"
705+
web_track_mock["track_number"] = 99.9
706+
707+
track = translator.web_to_track(web_track_mock)
708+
709+
assert track.length == 123
710+
assert track.disc_no == 456
711+
assert track.track_no == 99

0 commit comments

Comments
 (0)