modified: outdb

modified:   src/main.rs
This commit is contained in:
Michael Wain 2025-02-06 01:40:55 +03:00
parent 24803a4aaf
commit 088c1dbfa0
2 changed files with 9 additions and 7 deletions

BIN
outdb

Binary file not shown.

View File

@ -393,7 +393,7 @@ fn x_args_to_bytes(args: &Vec<XArgument>) -> Vec<u8> {
let h = bincode::serialize(&ChunkHeader {
chunk_type: ChunkType::StringTypes.into(),
end_of_chunk: 0x18,
children_count: 0x18 + s.len() as u32
children_count: 16 + 0x18 + s.len() as u32
}).unwrap();
b = [h, b, s].concat();
return b;
@ -422,7 +422,7 @@ fn to_bytes(xdb: XDatabase) -> Vec<u8> {
for u in 0..playlists.len() {
let playlist = playlists.get(u).unwrap();
let mut args = x_args_to_bytes(&playlist.args);
pl_bytes.append(&mut generate_header(ChunkType::Playlist, std::mem::size_of::<Playlist>(),args.len()));
pl_bytes.append(&mut generate_header(ChunkType::Playlist, 36,args.len()));
pl_bytes.append(&mut bincode::serialize(&playlist.data).unwrap());
pl_bytes.append(&mut args);
}
@ -438,7 +438,7 @@ fn to_bytes(xdb: XDatabase) -> Vec<u8> {
for u in 0..albums.len() {
let album = albums.get(u).unwrap();
let mut args = x_args_to_bytes(&album.args);
al_bytes.append(&mut generate_header(ChunkType::AlbumItem, std::mem::size_of::<AlbumItem>(),args.len()));
al_bytes.append(&mut generate_header(ChunkType::AlbumItem, 20,args.len()));
al_bytes.append(&mut bincode::serialize(&album.data).unwrap());
al_bytes.append(&mut args);
}
@ -454,7 +454,7 @@ fn to_bytes(xdb: XDatabase) -> Vec<u8> {
for u in 0..tracks.len() {
let track = tracks.get(u).unwrap();
let mut args = x_args_to_bytes(&track.args);
tr_bytes.append(&mut generate_header(ChunkType::TrackItem, std::mem::size_of::<TrackItem>(),args.len()));
tr_bytes.append(&mut generate_header(ChunkType::TrackItem, 292,args.len()));
tr_bytes.append(&mut bincode::serialize(&track.data).unwrap());
tr_bytes.append(&mut args);
}
@ -467,8 +467,10 @@ fn to_bytes(xdb: XDatabase) -> Vec<u8> {
}
}
}
bytes = [bincode::serialize(&xdb.data.unwrap()).unwrap(), bytes].concat();
bytes = [generate_header(ChunkType::Database, std::mem::size_of::<Database>(), bytes.len()), bytes].concat();
let sdb = bincode::serialize(&xdb.data.unwrap()).unwrap();
let sdb_len = sdb.len();
bytes = [sdb, bytes].concat();
bytes = [generate_header(ChunkType::Database, sdb_len, bytes.len()), bytes].concat();
bytes
}
@ -479,7 +481,7 @@ fn main() {
.filter(None, LevelFilter::Info)
.init();
let mut f = File::open("D:\\Documents\\iTunes\\iTunesDB").unwrap();
let mut f = File::open("D:\\Documents\\iTunes\\iTunesDB").unwrap(); // D:\\Documents\\iTunes\\iTunesDB
let mut buf = Vec::new();
match f.read_to_end(&mut buf) {
Ok(n) => {