diff --git a/Cargo.lock b/Cargo.lock index 6defd31..d3ee4ea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -90,7 +90,7 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "itunesdb" -version = "0.1.54" +version = "0.1.56" dependencies = [ "bincode", "env_logger", diff --git a/Cargo.toml b/Cargo.toml index b03430b..df96b86 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "itunesdb" -version = "0.1.55" +version = "0.1.56" edition = "2021" authors = ["alterwain"] diff --git a/src/xobjects.rs b/src/xobjects.rs index 8b433e0..d7f1f26 100644 --- a/src/xobjects.rs +++ b/src/xobjects.rs @@ -246,7 +246,7 @@ impl XDatabase { } fn add_track_to_playlists(&mut self, n: u32, track: &XTrackItem) { - if let XSomeList::Playlists(playlists) = &mut self.find_dataset(n).child { + /*if let XSomeList::Playlists(playlists) = &mut self.find_dataset(n).child { let playlist = playlists.iter_mut().find(|t| t.data.is_master_playlist_flag != 0); if playlist.is_none() { return; } let playlist = playlist.unwrap(); @@ -255,6 +255,27 @@ impl XDatabase { let gr = pl_item.group_id.to_le_bytes(); let raw: Vec = vec![ 109,104,111,100,24,0,0,0,44,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,gr[0],gr[1],gr[2],gr[3],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ]; playlist.elems.push((pl_item, vec![RawArgument(raw)])); + }*/ + + if let XSomeList::Playlists(playlists) = &mut self.find_dataset(n).child { + let playlist = playlists.iter_mut().find(|t| t.data.is_master_playlist_flag != 0); + if playlist.is_none() { return; } + let playlist = playlist.unwrap(); + playlist.data.playlist_item_count += 1; + + let elem = playlist.elems.last().unwrap(); + let mut pl_item = elem.0.clone(); + println!("{:#?}", pl_item); + pl_item.track_id = track.data.unique_id; + + pl_item.group_id = rand::random(); + let mut args = elem.1.clone(); + println!("{:#?}", args); + if let XPlArgument::RawArgument(raw) = args.last_mut().unwrap() { + raw[24] = pl_item.group_id as u8; + } + + playlist.elems.push((pl_item, args)); } }