diff --git a/Cargo.lock b/Cargo.lock index 72af5cc..3ab5b11 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -90,7 +90,7 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "itunesdb" -version = "0.1.44" +version = "0.1.46" dependencies = [ "bincode", "env_logger", diff --git a/Cargo.toml b/Cargo.toml index f10b0a5..1407825 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "itunesdb" -version = "0.1.45" +version = "0.1.46" edition = "2021" authors = ["alterwain"] diff --git a/src/artworkdb.rs b/src/artworkdb.rs index 94c46f8..299ebaa 100644 --- a/src/artworkdb.rs +++ b/src/artworkdb.rs @@ -122,15 +122,10 @@ pub mod serializer { for img in data_set.child.iter() { let mut args = Vec::new(); if img.data.is_some() { - let mut item = Vec::new(); - item.append(&mut generate_header(ChunkType::ImageItem, 140, args.len())); - item.append(&mut bincode::serialize(img.data.as_ref().unwrap()).unwrap()); - item.append(&mut [0; 100].to_vec()); - entry_bytes.append(&mut item); for o in &img.tag { let mut data = [2u32.to_le_bytes(), 0u32.to_le_bytes(), 0u32.to_le_bytes()].concat(); - entry_bytes.append(&mut generate_header(ChunkType::LocationTag, 12, 0)); - entry_bytes.append(&mut data); + args.append(&mut generate_header(ChunkType::LocationTag, 12, 0)); + args.append(&mut data); if let Some(name) = &o.child { @@ -141,12 +136,17 @@ pub mod serializer { str_b = [3u32.to_le_bytes().to_vec(), 0u32.to_le_bytes().to_vec(), 0u32.to_le_bytes().to_vec(), (str_b.len() as u32).to_le_bytes().to_vec(), 2u32.to_le_bytes().to_vec(), 0u32.to_le_bytes().to_vec(), str_b ].concat(); nb.append(&mut generate_header(ChunkType::LocationTag, 12, str_b.len())); nb.append(&mut str_b); - - entry_bytes.append(&mut generate_header(ChunkType::ImageName, 76, nb.len())); - entry_bytes.append(&mut bincode::serialize(&name.iname).unwrap()); - entry_bytes.append(&mut nb); + + args.append(&mut generate_header(ChunkType::ImageName, 76, nb.len())); + args.append(&mut bincode::serialize(&name.iname).unwrap()); + args.append(&mut nb); } } + let mut item = Vec::new(); + item.append(&mut generate_header(ChunkType::ImageItem, 140, args.len())); + item.append(&mut bincode::serialize(img.data.as_ref().unwrap()).unwrap()); + item.append(&mut [0; 100].to_vec()); + entry_bytes.append(&mut item); } if img.file.is_some() {