use Track::new_with_data
Some checks failed
tests / fmt (push) Successful in 1m31s
tests / clippy (push) Successful in 1m42s
tests / pre-commit (push) Successful in 1m42s
tests / test (push) Successful in 1m55s
tests / build (push) Successful in 1m58s
renovate / renovate (push) Successful in 27s
deploy / release-image (push) Has been cancelled

This commit is contained in:
2025-03-05 03:51:02 +01:00
parent f240b8f0f6
commit ebb66e21cc
2 changed files with 15 additions and 15 deletions

View File

@@ -1,6 +1,7 @@
use crate::metadata::Metadata;
use crate::state::{State, StateRef};
use async_trait::async_trait;
use songbird::tracks::Track;
use songbird::{Event, EventContext, EventHandler, TrackEvent};
use std::ops::Sub;
use std::time::Duration;
@@ -101,8 +102,9 @@ impl EventHandler for TrackEndNotifier {
// get metadata from finished track
let old_metadata = track_handle.data::<Metadata>();
// enqueue track
let handle = call.enqueue_with_preload(
old_metadata.src.clone().into(),
let track = Track::new_with_data(old_metadata.src.clone().into(), old_metadata.clone());
let _handle = call.enqueue_with_preload(
track,
old_metadata.duration.map(|duration| -> Duration {
if duration.as_secs() > 5 {
duration.sub(Duration::from_secs(5))
@@ -111,10 +113,6 @@ impl EventHandler for TrackEndNotifier {
}
}),
);
// insert metadata into new track
let mut _new_metadata = handle.data::<Metadata>();
_new_metadata = old_metadata.clone();
}
None
}

View File

@@ -368,12 +368,21 @@ pub(crate) async fn play_inner(
.context("Could not find url")?;
let mut src = YoutubeDl::new(state.client.clone(), url.clone());
let track: Track = src.clone().into();
match src.aux_metadata().await {
Ok(metadata) => {
debug!("metadata: {:?}", metadata);
let track: Track = Track::new_with_data(
src.clone().into(),
Arc::new(Metadata {
title: metadata.title.clone(),
duration: metadata.duration,
url: url.clone(),
src,
}),
);
persistence(interaction, yttrack, Arc::clone(&state))
.await
.unwrap_or_else(|e| {
@@ -391,7 +400,7 @@ pub(crate) async fn play_inner(
match state.songbird.get(guild_id) {
Some(call_lock) => {
let mut call = call_lock.lock().await;
let handle = call.enqueue_with_preload(
let _handle = call.enqueue_with_preload(
track,
metadata.duration.map(|duration| -> Duration {
if duration.as_secs() > 5 {
@@ -401,13 +410,6 @@ pub(crate) async fn play_inner(
}
}),
);
let mut _x = handle.data::<Metadata>();
_x = Arc::new(Metadata {
title: metadata.title,
duration: metadata.duration,
url,
src,
});
}
None => tracing::error!("could not get call lock"),
}