From 3d80c852b1af53d05948705c887cf43b1cba3fd1 Mon Sep 17 00:00:00 2001
From: Chris Pastl <chris@crispybits.app>
Date: Mon, 16 Oct 2023 18:03:12 +0200
Subject: [PATCH] Refactor: change type of 'trackDuration' to float

---
 CHANGELOG.md                     |  1 +
 src/functions.liq                | 10 +++++-----
 src/in_soundcard.liq             |  2 +-
 src/in_stream.liq                |  2 +-
 tests/test_metadata_build.liq    |  2 +-
 tests/test_metadata_duration.liq |  6 +++---
 6 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2f5822c..d31092e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -39,6 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 - Configuration: Renamed environment variable `AURA_ENGINE_SERVER_TIMEOUT` to `AURA_ENGINE_SERVER_TIMEOUT`
   and configuration setting `telnet_server_timeout` to `server_timeout`.
 - Configuration: Increase default value for `server_timeout`, to avoid malfunctions when idle (aura#165)
+- Use datatype float instead of int for `trackDuration` (#51)
 
 ### Fixed
 
diff --git a/src/functions.liq b/src/functions.liq
index 9e5203f..fc33de4 100644
--- a/src/functions.liq
+++ b/src/functions.liq
@@ -98,7 +98,7 @@ def build_metadata(json_string) =
             playlist_item: string,
             track_type: int,
             track_start: string?,
-            track_duration: int?,
+            track_duration: float?,
             track_title: string?,
             track_album: string?,
             track_artist: string?
@@ -123,13 +123,13 @@ end
 #   b.) as a fallback from the meta field "track_duration"
 #
 # Returns
-#   (int) duration in seconds
+#   (float) duration in seconds
 def get_meta_track_duration(meta) =
-    track_duration = int_of_float(request.duration(meta["filename"]))
+    track_duration = request.duration(meta["filename"])
     if track_duration != -1 then
         track_duration
     else
-        int_of_string(meta["track_duration"])
+        float_of_string(meta["track_duration"])
     end
 end
 
@@ -143,7 +143,7 @@ def post_playlog(api_url, data) =
     json_data.add("playlistId", int_of_string(list.assoc("playlist_id", data)))
     json_data.add("trackType", int_of_string(list.assoc("track_type", data)))
     json_data.add("trackStart", list.assoc("track_start", data))
-    json_data.add("trackDuration", int_of_string(list.assoc("track_duration", data)))
+    json_data.add("trackDuration", float_of_string(list.assoc("track_duration", data)))
     json_data.add("trackTitle", list.assoc("track_title", data))
     json_data.add("trackAlbum", list.assoc("track_album", data))
     json_data.add("trackArtist", list.assoc("track_artist", data))
diff --git a/src/in_soundcard.liq b/src/in_soundcard.liq
index 94c8b31..508e3a1 100644
--- a/src/in_soundcard.liq
+++ b/src/in_soundcard.liq
@@ -33,7 +33,7 @@ usage_set_track_metadata = "set_track_metadata { \
         \"playlist_item\": \"\", \
         \"track_type\": 2, \
         \"track_start\": \"2022/02/22 22:02:22\", \
-        \"track_duration\": 808, \
+        \"track_duration\": 808.8, \
         \"track_title\": \"Lorem Ipsum\", \
         \"track_album\": \"\", \
         \"track_artist\": \"\" \
diff --git a/src/in_stream.liq b/src/in_stream.liq
index 207b21e..9bccbbb 100644
--- a/src/in_stream.liq
+++ b/src/in_stream.liq
@@ -91,7 +91,7 @@ usage_set_track_metadata = "set_track_metadata { \
         \"playlist_item\": \"\", \
         \"track_type\": 1, \
         \"track_start\": \"2022/02/22 22:02:22\", \
-        \"track_duration\": 303, \
+        \"track_duration\": 303.3, \
         \"track_title\": \"Bar\", \
         \"track_album\": \"\", \
         \"track_artist\": \"Foo\" \
diff --git a/tests/test_metadata_build.liq b/tests/test_metadata_build.liq
index e481242..e94e780 100755
--- a/tests/test_metadata_build.liq
+++ b/tests/test_metadata_build.liq
@@ -30,7 +30,7 @@ json_string = "{ \
         \"playlist_item\": \"\", \
         \"track_type\": 0, \
         \"track_start\": \"2022/02/22 22:02:22\", \
-        \"track_duration\": 303, \
+        \"track_duration\": 303.3, \
         \"track_title\": \"FooBar 2000\", \
         \"track_album\": \"\", \
         \"track_artist\": \"\" \
diff --git a/tests/test_metadata_duration.liq b/tests/test_metadata_duration.liq
index 0caa269..a4075ba 100755
--- a/tests/test_metadata_duration.liq
+++ b/tests/test_metadata_duration.liq
@@ -23,11 +23,11 @@ settings.frame.audio.samplerate.set(44100)
 
 %include "../src/functions.liq"
 
-# Read duration from metadata field => 808
-metadata = [( "track_duration", "808" )]
+# Read duration from metadata field => 808.8
+metadata = [( "track_duration", "808.8" )]
 duration = get_meta_track_duration(metadata)
 print("Track duration in meta 'track_duration': #{duration}")
-assertEquals(duration, 808)
+assertEquals(duration, 808.8)
 
 # Read duration from file => 207
 input_fs = single(id="fs", "assets/audio.mp3")
-- 
GitLab