Skip to content

Commit 49e6f61

Browse files
committed
Merge remote-tracking branch 'double-upstream/main'
* double-upstream/main: Fix floats in API response (Fixes mopidy#375) (mopidy#376)
2 parents f16828b + 112d4ab commit 49e6f61

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
@@ -684,3 +684,29 @@ def test_ignores_invalid_album(self, web_track_mock):
684684

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

0 commit comments

Comments
 (0)