From 6cceb3cbfacb6f4416e49321a9b63b4ce7a9f036 Mon Sep 17 00:00:00 2001 From: salmonik Date: Mon, 18 May 2026 21:46:26 +0200 Subject: fix for new symphony API and less debug info in release --- src/queue.rs | 64 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 32 insertions(+), 32 deletions(-) (limited to 'src/queue.rs') diff --git a/src/queue.rs b/src/queue.rs index 26aeb8b..b0acf5f 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -17,28 +17,27 @@ pub struct AudioMetadata { } pub fn extract_metadata(path: &Path) -> Option { + use symphonia::core::formats::probe::Hint; use symphonia::core::io::MediaSourceStream; - use symphonia::core::meta::StandardTagKey; - use symphonia::core::probe::Hint; + use symphonia::core::meta::StandardTag; let file = std::fs::File::open(path).ok()?; let mss = MediaSourceStream::new(Box::new(file), Default::default()); let hint = Hint::new(); let mut probed = symphonia::default::get_probe() - .format(&hint, mss, &Default::default(), &Default::default()) + .probe(&hint, mss, Default::default(), Default::default()) .ok()?; - // Extract duration from format track's codec parameters + // Extract duration from track's num_frames and time_base let duration_secs = probed - .format .tracks() .iter() - .find(|t| t.codec_params.n_frames.is_some() && t.codec_params.time_base.is_some()) + .find(|t| t.num_frames.is_some() && t.time_base.is_some()) .and_then(|t| { - let n_frames = t.codec_params.n_frames?; - let tb = t.codec_params.time_base?; - Some(n_frames as f64 * tb.numer as f64 / tb.denom as f64) + let n_frames = t.num_frames?; + let tb = t.time_base?; + Some(n_frames as f64 * tb.numer.get() as f64 / tb.denom.get() as f64) }); let mut metadata = AudioMetadata { @@ -46,38 +45,39 @@ pub fn extract_metadata(path: &Path) -> Option { ..Default::default() }; - if let Some(meta) = probed.metadata.get() - && let Some(rev) = meta.current() { - for tag in rev.tags() { - match tag.std_key { - Some(StandardTagKey::TrackTitle) => { - metadata.title = Some(tag.value.to_string()); - } - Some(StandardTagKey::Artist) => { - metadata.artist = Some(tag.value.to_string()); - } - Some(StandardTagKey::Album) => { - metadata.album = Some(tag.value.to_string()); + let meta = probed.metadata(); + if let Some(rev) = meta.current() { + for tag in &rev.media.tags { + match &tag.std { + Some(StandardTag::TrackTitle(value)) => { + metadata.title = Some(value.to_string()); + } + Some(StandardTag::Artist(value)) => { + metadata.artist = Some(value.to_string()); + } + Some(StandardTag::Album(value)) => { + metadata.album = Some(value.to_string()); + } + _ => {} } - _ => {} } } } if metadata.title.is_none() && metadata.artist.is_none() && metadata.album.is_none() { - let mut format = probed.format; - if let Some(rev) = format.metadata().current() { - for tag in rev.tags() { - match tag.std_key { - Some(StandardTagKey::TrackTitle) => { - metadata.title = Some(tag.value.to_string()); + let meta = probed.metadata(); + if let Some(rev) = meta.current() { + for tag in &rev.media.tags { + match &tag.std { + Some(StandardTag::TrackTitle(value)) => { + metadata.title = Some(value.to_string()); } - Some(StandardTagKey::Artist) => { - metadata.artist = Some(tag.value.to_string()); + Some(StandardTag::Artist(value)) => { + metadata.artist = Some(value.to_string()); } - Some(StandardTagKey::Album) => { - metadata.album = Some(tag.value.to_string()); + Some(StandardTag::Album(value)) => { + metadata.album = Some(value.to_string()); } _ => {} } -- cgit v1.2.3