From 9741228b51856902f3791b43012b2ae792cf3f5d Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Sat, 31 Jan 2026 16:29:24 +0100 Subject: pkgs/mpdpopm: Add a (basic) dj mode --- pkgs/by-name/mp/mpdpopm/src/dj/mod.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 pkgs/by-name/mp/mpdpopm/src/dj/mod.rs (limited to 'pkgs/by-name/mp/mpdpopm/src/dj/mod.rs') diff --git a/pkgs/by-name/mp/mpdpopm/src/dj/mod.rs b/pkgs/by-name/mp/mpdpopm/src/dj/mod.rs new file mode 100644 index 00000000..a211a571 --- /dev/null +++ b/pkgs/by-name/mp/mpdpopm/src/dj/mod.rs @@ -0,0 +1,28 @@ +use anyhow::Result; +use tracing::info; + +use crate::{clients::Client, dj::algorithms::Algorithm}; + +pub(crate) mod algorithms; + +pub(crate) struct Dj { + algo: A, +} + +impl Dj { + pub(crate) fn new(algo: A) -> Self { + Self { algo } + } + + /// Add the next track to the playlist. + /// + /// This should be called after the previous track is finished, to avoid unbounded growth. + pub(crate) async fn add_track(&mut self, client: &mut Client) -> Result<()> { + let next = self.algo.next_track(client).await?; + + info!("Adding `{next}`, due to active dj mode"); + client.add(&next).await?; + + Ok(()) + } +} -- cgit 1.4.1