modified: src/main.rs

This commit is contained in:
Michael Wain 2025-01-26 01:23:55 +03:00
parent ed5b5638ba
commit 45f90c65d4

View File

@ -127,6 +127,21 @@ struct Entry { // mhod
unk4: u32
}
#[derive(Archive, Deserialize, Serialize, Debug, PartialEq)]
#[rkyv(compare(PartialEq), derive(Debug))]
struct Playlist {
data_object_child_count: u32,
playlist_item_count: u32,
is_master_playlist_flag: u8,
unk: [u8; 3],
timestamp: u32,
persistent_playlist_id: u64,
unk3: u32,
string_mhod_count: u16,
podcast_flag: u16,
list_sort_order: u32
}
enum ChunkState {
Header,
Data
@ -176,10 +191,9 @@ fn db(data: &[u8]) {
},
[109, 104, 111, 100] => { // mhod
u = usize::try_from(header.children_count).unwrap() - 12;
//info!("head: {}, {}", header.end_of_chunk, header.children_count);
let header_offset: usize = (header.end_of_chunk + 4) as usize;
let str_end: usize = (header.children_count - 12) as usize;
let entry = rkyv::access::<ArchivedEntry, Error>(&data[i..]).unwrap();
let entry = rkyv::access::<ArchivedEntry, Error>(&data[i..i+28]).unwrap();
info!("val: {:?}", &entry);
let mut bytes = Vec::new();
@ -190,10 +204,19 @@ fn db(data: &[u8]) {
}
h+=1;
}
//info!("bytes: {:?}", &data[i+header_offset..i+str_end]);
let g = String::from_utf8(bytes).unwrap();
info!("str: {}", g);
}
},
[0x6D, 0x68, 0x6C, 0x70] => { // mhlp
//info!("head: {}, {}", header.end_of_chunk, header.children_count);
info!("Playlists count: {}", header.children_count);
u = usize::try_from(header.end_of_chunk).unwrap() - 12;
},
[0x6D, 0x68, 0x79, 0x70] => { // mhyp
u = usize::try_from(header.end_of_chunk).unwrap() - 12;
let playlist = rkyv::access::<ArchivedPlaylist, Error>(&data[i..i+u]).unwrap();
info!("playlist: {:?}", playlist);
},
_ => return
}
i += u;