From ea0f99b74156276ef9fc7ddc10b694d47eac6217 Mon Sep 17 00:00:00 2001 From: JasonDavis666 Date: Sun, 26 Apr 2026 22:18:42 +0800 Subject: [PATCH] fix: show readable audio quality labels Convert audio stream bitrates from bits per second to kilobit labels in listen mode so the quality selector shows values like 128k instead of 128000k. Closes iv-org/invidious#2513 --- spec/invidious/helpers_spec.cr | 7 +++++++ src/invidious/helpers/helpers.cr | 4 ++++ src/invidious/views/components/player.ecr | 5 +++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/spec/invidious/helpers_spec.cr b/spec/invidious/helpers_spec.cr index 9fbb6d6fe..bf1ed5303 100644 --- a/spec/invidious/helpers_spec.cr +++ b/spec/invidious/helpers_spec.cr @@ -31,6 +31,13 @@ Spectator.describe "Helper" do 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") + end + end + describe "#sign_token" do it "correctly signs a given hash" do token = { diff --git a/src/invidious/helpers/helpers.cr b/src/invidious/helpers/helpers.cr index a08135eaa..a502c7a03 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 : Int) : 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 fbd472e0e..2181c8056 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 %>