0.1.37 upd

This commit is contained in:
Michael Wain 2025-02-17 03:20:37 +03:00
parent c9135b64dd
commit 766003ce9d
2 changed files with 25 additions and 4 deletions

View File

@ -1,6 +1,6 @@
[package] [package]
name = "itunesdb" name = "itunesdb"
version = "0.1.36" version = "0.1.37"
edition = "2021" edition = "2021"
authors = ["alterwain"] authors = ["alterwain"]

View File

@ -101,6 +101,7 @@ pub mod deserializer {
} }
pub mod serializer { pub mod serializer {
use log::info;
use crate::artworkdb::aobjects::ADatabase; use crate::artworkdb::aobjects::ADatabase;
use crate::artworkdb::objects::{ChunkHeader, ChunkType}; use crate::artworkdb::objects::{ChunkHeader, ChunkType};
@ -108,6 +109,7 @@ pub mod serializer {
let mut bytes: Vec<u8> = Vec::new(); let mut bytes: Vec<u8> = Vec::new();
for i in 0..(adb.children.len()) { for i in 0..(adb.children.len()) {
let data_set = adb.children.get(i).unwrap(); let data_set = adb.children.get(i).unwrap();
let mut entry_bytes = Vec::new();
for img in data_set.child.iter() { for img in data_set.child.iter() {
let mut args = Vec::new(); let mut args = Vec::new();
for arg in img.args.iter() { for arg in img.args.iter() {
@ -119,10 +121,13 @@ pub mod serializer {
argv.append(&mut generate_header(ChunkType::LocationTag, 12, str_b.len())); argv.append(&mut generate_header(ChunkType::LocationTag, 12, str_b.len()));
argv.append(&mut str_b); argv.append(&mut str_b);
}, },
_ => { // 2 2 => {
let mut data = [2u32.to_le_bytes(), 0u32.to_le_bytes(), 0u32.to_le_bytes()].concat(); let mut data = [2u32.to_le_bytes(), 0u32.to_le_bytes(), 0u32.to_le_bytes()].concat();
argv.append(&mut generate_header(ChunkType::LocationTag, 12, 0)); argv.append(&mut generate_header(ChunkType::LocationTag, 12, 0));
argv.append(&mut data); argv.append(&mut data);
},
_ => {
info!("Other datatype found!");
} }
} }
@ -138,12 +143,28 @@ pub mod serializer {
let mut item = Vec::new(); let mut item = Vec::new();
item.append(&mut generate_header(ChunkType::ImageItem, 40, args.len())); item.append(&mut generate_header(ChunkType::ImageItem, 40, args.len()));
item.append(&mut bincode::serialize(img.data.as_ref().unwrap()).unwrap()); item.append(&mut bincode::serialize(img.data.as_ref().unwrap()).unwrap());
entry_bytes.append(&mut item);
} }
if img.file.is_some() { if img.file.is_some() {
entry_bytes.append(&mut generate_header(ChunkType::FileImage, 12, 0));
entry_bytes.append(&mut bincode::serialize(img.file.as_ref().unwrap()).unwrap());
}
entry_bytes.append(&mut args);
} }
match data_set.data.data_type {
1 => {
entry_bytes.append(&mut generate_header(ChunkType::ImageList, 80, data_set.child.len()));
entry_bytes.append(&mut [0; 76].to_vec());
} // Image List
_ => { info!("Unknown data_set type!"); }
} }
bytes.append(&mut generate_header(ChunkType::DataSet, 84, entry_bytes.len()));
bytes.append(&mut [0; 80].to_vec());
bytes.append(&mut bincode::serialize(&data_set.data).unwrap())
} }
bytes bytes