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 { let h = bincode::serialize(&ChunkHeader {
chunk_type: ChunkType::StringTypes.into(), chunk_type: ChunkType::StringTypes.into(),
end_of_chunk: 0x18, end_of_chunk: 0x18,
children_count: 0x18 + s.len() as u32 children_count: 16 + 0x18 + s.len() as u32
}).unwrap(); }).unwrap();
b = [h, b, s].concat(); b = [h, b, s].concat();
return b; return b;
@ -422,7 +422,7 @@ fn to_bytes(xdb: XDatabase) -> Vec<u8> {
for u in 0..playlists.len() { for u in 0..playlists.len() {
let playlist = playlists.get(u).unwrap(); let playlist = playlists.get(u).unwrap();
let mut args = x_args_to_bytes(&playlist.args); 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 bincode::serialize(&playlist.data).unwrap());
pl_bytes.append(&mut args); pl_bytes.append(&mut args);
} }
@ -438,7 +438,7 @@ fn to_bytes(xdb: XDatabase) -> Vec<u8> {
for u in 0..albums.len() { for u in 0..albums.len() {
let album = albums.get(u).unwrap(); let album = albums.get(u).unwrap();
let mut args = x_args_to_bytes(&album.args); 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 bincode::serialize(&album.data).unwrap());
al_bytes.append(&mut args); al_bytes.append(&mut args);
} }
@ -454,7 +454,7 @@ fn to_bytes(xdb: XDatabase) -> Vec<u8> {
for u in 0..tracks.len() { for u in 0..tracks.len() {
let track = tracks.get(u).unwrap(); let track = tracks.get(u).unwrap();
let mut args = x_args_to_bytes(&track.args); 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 bincode::serialize(&track.data).unwrap());
tr_bytes.append(&mut args); 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(); let sdb = bincode::serialize(&xdb.data.unwrap()).unwrap();
bytes = [generate_header(ChunkType::Database, std::mem::size_of::<Database>(), bytes.len()), bytes].concat(); let sdb_len = sdb.len();
bytes = [sdb, bytes].concat();
bytes = [generate_header(ChunkType::Database, sdb_len, bytes.len()), bytes].concat();
bytes bytes
} }
@ -479,7 +481,7 @@ fn main() {
.filter(None, LevelFilter::Info) .filter(None, LevelFilter::Info)
.init(); .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(); let mut buf = Vec::new();
match f.read_to_end(&mut buf) { match f.read_to_end(&mut buf) {
Ok(n) => { Ok(n) => {