fix: compute duration via request.duration when decoder metadata is empty
This commit is contained in:
parent
8d00c10b9f
commit
38394f40a6
1 changed files with 12 additions and 1 deletions
|
|
@ -9,13 +9,24 @@ source_pw = environment.get(default="", "SOURCE_PW")
|
|||
def emit_now_playing(station, m) =
|
||||
filename = m["filename"]
|
||||
if filename != "" then
|
||||
# decoder-reported metadata may be empty; fall back to request.duration which
|
||||
# reads it directly from the file. -1.0 means unknown.
|
||||
meta_dur = m["duration"]
|
||||
dur_str =
|
||||
if meta_dur != "" then
|
||||
meta_dur
|
||||
else
|
||||
# request.duration returns float? in liquidsoap 2.3 — unwrap with default -1.
|
||||
d = null.get(default=-1., request.duration(filename))
|
||||
if d > 0. then string(int_of_float(d)) else "" end
|
||||
end
|
||||
payload = json()
|
||||
payload.add("station", station)
|
||||
payload.add("artist", m["artist"])
|
||||
payload.add("title", m["title"])
|
||||
payload.add("album", m["album"])
|
||||
payload.add("filename", filename)
|
||||
payload.add("duration", m["duration"])
|
||||
payload.add("duration", dur_str)
|
||||
payload.add("started_at", string(int_of_float(time())))
|
||||
file.write(data=payload.stringify(), atomic=true, temp_dir="/now-playing", "/now-playing/#{station}.json")
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue