From 8fefbddffd95d800bbbd1765d41dc58675fc6827 Mon Sep 17 00:00:00 2001 From: brotoskyj Date: Tue, 20 Jan 2026 21:30:39 -0500 Subject: [PATCH] Added --no-playlist to yt-dlp command. This seems to fix the bot randomly skipping songs --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/main.rs | 18 +++++++++++++++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a87df28..54269aa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,7 +4,7 @@ version = 4 [[package]] name = "RhythmWorks" -version = "0.5.0" +version = "0.5.1" dependencies = [ "dialoguer", "keyring", diff --git a/Cargo.toml b/Cargo.toml index 5dd8958..6d86d22 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "RhythmWorks" -version = "0.5.0" +version = "0.5.1" edition = "2024" [dependencies] diff --git a/src/main.rs b/src/main.rs index c7cc245..eb4a8eb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,3 @@ -use core::error; use dialoguer::Select; use dialoguer::theme::ColorfulTheme; use modules::*; @@ -28,6 +27,7 @@ struct TrackTraceHandler { otel_ctx: opentelemetry::Context, guild_id: String, track_url: String, + hls_url: String, event_name: &'static str, } @@ -45,7 +45,15 @@ impl VoiceEventHandler for TrackTraceHandler { .set_attribute(KeyValue::new("Guild_ID", self.guild_id.clone())); cx.span() .set_attribute(KeyValue::new("Youtube_URL", self.track_url.clone())); - cx.span().add_event(self.event_name, vec![KeyValue::new("track_status", track_status.unwrap().to_string())]); + cx.span() + .set_attribute(KeyValue::new("Stream_URL", self.hls_url.clone())); + cx.span().add_event( + self.event_name, + vec![KeyValue::new( + "track_status", + track_status.unwrap().to_string(), + )], + ); }); None @@ -215,7 +223,7 @@ impl EventHandler for Handler { manager.join(guild_id, channel_id).await.unwrap() }; let output = match Command::new("./yt-dlp") - .args(["-f", "bestaudio", "-g", &yt_url]) + .args(["-f", "bestaudio", "-g", "--no-playlist", &yt_url]) .stdout(Stdio::piped()) .output() { @@ -240,6 +248,7 @@ impl EventHandler for Handler { .expect("Invalid UTF-8") .trim() .to_string(); + let telemetry_stream_url = stream_url.clone(); let mut call = handler_lock.lock().await; let input = Input::from(HlsRequest::new(reqwest::Client::new(), stream_url)); let track_handle = call.enqueue_input(input).await; @@ -265,6 +274,7 @@ impl EventHandler for Handler { otel_ctx: otel_ctx.clone(), guild_id: guild_id.to_string().clone(), track_url: yt_url.clone(), + hls_url: telemetry_stream_url.clone(), event_name: "Track Started Playing", }, ); @@ -274,6 +284,7 @@ impl EventHandler for Handler { otel_ctx: otel_ctx.clone(), guild_id: guild_id.to_string().clone(), track_url: yt_url.clone(), + hls_url: telemetry_stream_url.clone(), event_name: "Track Finished", }, ); @@ -283,6 +294,7 @@ impl EventHandler for Handler { otel_ctx: otel_ctx.clone(), guild_id: guild_id.to_string().clone(), track_url: yt_url.clone(), + hls_url: telemetry_stream_url.clone(), event_name: "Playback had an error", }, );