From 15bf403a3759d4496b5656640370509b42df9b1c Mon Sep 17 00:00:00 2001 From: "hermes@bounty.hunter" Date: Wed, 27 May 2026 04:10:09 +0700 Subject: [PATCH] fix: resolve bounty issue #2513 - format listen-mode audio quality labels Formats raw bitrate values (e.g. 128000) to readable kilobit labels (e.g. 128k) in listen mode quality selection. Root cause: The player.ecr template was displaying raw bitrate integers with a 'k' suffix appended, resulting in confusing labels like '128000k' instead of '128k'. Fix: - Added format_audio_quality_label helper in helpers.cr that divides bitrate by 1000 and rounds to integer - Updated player.ecr to use the new helper for audio stream quality labels - Added spec coverage for the new helper Closes #2513 --- spec/invidious/helpers_spec.cr | 8 ++++++++ src/invidious/helpers/helpers.cr | 4 ++++ src/invidious/views/components/player.ecr | 5 +++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/spec/invidious/helpers_spec.cr b/spec/invidious/helpers_spec.cr index 9fbb6d6f..4320a60e 100644 --- a/spec/invidious/helpers_spec.cr +++ b/spec/invidious/helpers_spec.cr @@ -53,4 +53,12 @@ Spectator.describe "Helper" do expect(sign_token("SECRET_KEY", token)).to eq(token["signature"]) end end + + describe "#format_audio_quality_label" do + it "formats audio bitrates as readable kilobit labels" do + expect(Helpers.format_audio_quality_label(128000)).to eq("128k") + expect(Helpers.format_audio_quality_label(50000)).to eq("50k") + expect(Helpers.format_audio_quality_label(64000)).to eq("64k") + end + end end diff --git a/src/invidious/helpers/helpers.cr b/src/invidious/helpers/helpers.cr index a08135ea..7b755712 100644 --- a/src/invidious/helpers/helpers.cr +++ b/src/invidious/helpers/helpers.cr @@ -40,6 +40,10 @@ module Helpers return description end + def format_audio_quality_label(bitrate : Int64) : String + "#{(bitrate / 1000).round.to_i}k" + end + def cache_annotation(id, annotations) if !CONFIG.cache_annotations return diff --git a/src/invidious/views/components/player.ecr b/src/invidious/views/components/player.ecr index fbd472e0..2181c805 100644 --- a/src/invidious/views/components/player.ecr +++ b/src/invidious/views/components/player.ecr @@ -28,12 +28,13 @@ src_url = invidious_companion.public_url.to_s + src_url + "&check=#{invidious_companion_check_id}" if (invidious_companion) - bitrate = fmt["bitrate"] + bitrate = fmt["bitrate"].as_i + quality_label = Helpers.format_audio_quality_label(bitrate) mimetype = HTML.escape(fmt["mimeType"].as_s) selected = (i == best_m4a_stream_index) %> - + <% if !params.local && !CONFIG.disabled?("local") %> <% end %>