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
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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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"),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user