Added --no-playlist to yt-dlp command. This seems to fix the bot randomly skipping songs

This commit is contained in:
brotoskyj
2026-01-20 21:30:39 -05:00
parent 7dea731cbf
commit 8fefbddffd
3 changed files with 17 additions and 5 deletions
Generated
+1 -1
View File
@@ -4,7 +4,7 @@ version = 4
[[package]] [[package]]
name = "RhythmWorks" name = "RhythmWorks"
version = "0.5.0" version = "0.5.1"
dependencies = [ dependencies = [
"dialoguer", "dialoguer",
"keyring", "keyring",
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "RhythmWorks" name = "RhythmWorks"
version = "0.5.0" version = "0.5.1"
edition = "2024" edition = "2024"
[dependencies] [dependencies]
+15 -3
View File
@@ -1,4 +1,3 @@
use core::error;
use dialoguer::Select; use dialoguer::Select;
use dialoguer::theme::ColorfulTheme; use dialoguer::theme::ColorfulTheme;
use modules::*; use modules::*;
@@ -28,6 +27,7 @@ struct TrackTraceHandler {
otel_ctx: opentelemetry::Context, otel_ctx: opentelemetry::Context,
guild_id: String, guild_id: String,
track_url: String, track_url: String,
hls_url: String,
event_name: &'static str, event_name: &'static str,
} }
@@ -45,7 +45,15 @@ impl VoiceEventHandler for TrackTraceHandler {
.set_attribute(KeyValue::new("Guild_ID", self.guild_id.clone())); .set_attribute(KeyValue::new("Guild_ID", self.guild_id.clone()));
cx.span() cx.span()
.set_attribute(KeyValue::new("Youtube_URL", self.track_url.clone())); .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 None
@@ -215,7 +223,7 @@ impl EventHandler for Handler {
manager.join(guild_id, channel_id).await.unwrap() manager.join(guild_id, channel_id).await.unwrap()
}; };
let output = match Command::new("./yt-dlp") let output = match Command::new("./yt-dlp")
.args(["-f", "bestaudio", "-g", &yt_url]) .args(["-f", "bestaudio", "-g", "--no-playlist", &yt_url])
.stdout(Stdio::piped()) .stdout(Stdio::piped())
.output() .output()
{ {
@@ -240,6 +248,7 @@ impl EventHandler for Handler {
.expect("Invalid UTF-8") .expect("Invalid UTF-8")
.trim() .trim()
.to_string(); .to_string();
let telemetry_stream_url = stream_url.clone();
let mut call = handler_lock.lock().await; let mut call = handler_lock.lock().await;
let input = Input::from(HlsRequest::new(reqwest::Client::new(), stream_url)); let input = Input::from(HlsRequest::new(reqwest::Client::new(), stream_url));
let track_handle = call.enqueue_input(input).await; let track_handle = call.enqueue_input(input).await;
@@ -265,6 +274,7 @@ impl EventHandler for Handler {
otel_ctx: otel_ctx.clone(), otel_ctx: otel_ctx.clone(),
guild_id: guild_id.to_string().clone(), guild_id: guild_id.to_string().clone(),
track_url: yt_url.clone(), track_url: yt_url.clone(),
hls_url: telemetry_stream_url.clone(),
event_name: "Track Started Playing", event_name: "Track Started Playing",
}, },
); );
@@ -274,6 +284,7 @@ impl EventHandler for Handler {
otel_ctx: otel_ctx.clone(), otel_ctx: otel_ctx.clone(),
guild_id: guild_id.to_string().clone(), guild_id: guild_id.to_string().clone(),
track_url: yt_url.clone(), track_url: yt_url.clone(),
hls_url: telemetry_stream_url.clone(),
event_name: "Track Finished", event_name: "Track Finished",
}, },
); );
@@ -283,6 +294,7 @@ impl EventHandler for Handler {
otel_ctx: otel_ctx.clone(), otel_ctx: otel_ctx.clone(),
guild_id: guild_id.to_string().clone(), guild_id: guild_id.to_string().clone(),
track_url: yt_url.clone(), track_url: yt_url.clone(),
hls_url: telemetry_stream_url.clone(),
event_name: "Playback had an error", event_name: "Playback had an error",
}, },
); );