From bca2e1ee7780cef628d63b6cb18216c1b17211e0 Mon Sep 17 00:00:00 2001 From: "alterwain@protonmail.com" Date: Thu, 20 Feb 2025 19:47:23 +0300 Subject: [PATCH] 0.1.60 upd --- Cargo.toml | 2 +- src/xobjects.rs | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6954791..92774c6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "itunesdb" -version = "0.1.59" +version = "0.1.60" edition = "2021" authors = ["alterwain"] diff --git a/src/xobjects.rs b/src/xobjects.rs index d2f70cb..65ff54e 100644 --- a/src/xobjects.rs +++ b/src/xobjects.rs @@ -188,7 +188,7 @@ impl XDatabase { self.children.iter_mut().find(|d| d.data.data_type == data_type).unwrap() } - pub fn remove_track(&mut self, unique_id: u32) { + pub fn remove_track_completely(&mut self, unique_id: u32) { if let XSomeList::TrackList(tracks) = &mut self.find_dataset(1).child { tracks.retain_mut(|t| t.data.unique_id != unique_id); } @@ -211,6 +211,28 @@ impl XDatabase { } } } + + pub fn remove_track(&mut self, unique_id: u32, playlist_id: u64) { + if let XSomeList::Playlists(playlists) = &mut self.find_dataset(2).child { + for playlist in playlists.iter_mut() { + if playlist.data.persistent_playlist_id != playlist_id { continue } + let mut s = playlist.elems.len(); + playlist.elems.retain_mut(|t| t.0.track_id != unique_id); + s -= playlist.elems.len(); + playlist.data.playlist_item_count -= (s as u32); + } + } + + if let XSomeList::Playlists(playlists) = &mut self.find_dataset(3).child { + for playlist in playlists.iter_mut() { + if playlist.data.persistent_playlist_id != playlist_id { continue } + let mut s = playlist.elems.len(); + playlist.elems.retain_mut(|t| t.0.track_id != unique_id); + s -= playlist.elems.len(); + playlist.data.playlist_item_count -= (s as u32); + } + } + } pub fn get_playlists(&mut self) -> Vec { let mut res_pls = Vec::new();