modified: outdb
modified: src/main.rs modified: src/objects.rs
This commit is contained in:
parent
b80b866781
commit
4cfabd239b
46
src/main.rs
46
src/main.rs
@ -2,7 +2,7 @@ use std::{fs::File, io::{Read, Write}};
|
|||||||
use env_logger::Builder;
|
use env_logger::Builder;
|
||||||
use log::{error, info, LevelFilter};
|
use log::{error, info, LevelFilter};
|
||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
use xobjects::{XArgument, XSomeList};
|
use xobjects::{XArgument, XPlArgument, XSomeList};
|
||||||
|
|
||||||
mod objects;
|
mod objects;
|
||||||
mod xobjects;
|
mod xobjects;
|
||||||
@ -22,7 +22,7 @@ fn main() {
|
|||||||
.init();
|
.init();
|
||||||
|
|
||||||
// /Users/michael/Documents/ipod/iTunes/iTunesDB
|
// /Users/michael/Documents/ipod/iTunes/iTunesDB
|
||||||
let mut f = File::open("D:\\Documents\\iTunes\\iTunesDB").unwrap(); // D:\\Documents\\iTunes\\iTunesDB
|
let mut f = File::open("/Users/michael/Documents/ipod/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) => {
|
||||||
@ -30,15 +30,10 @@ fn main() {
|
|||||||
let mut xdb = deserializer::parse_bytes(data);
|
let mut xdb = deserializer::parse_bytes(data);
|
||||||
//info!("XDB: {:#?}", xdb);
|
//info!("XDB: {:#?}", xdb);
|
||||||
|
|
||||||
|
let unique_id = rand::thread_rng().gen_range(10..999);
|
||||||
let json = serde_json::to_string_pretty(&xdb).unwrap();
|
|
||||||
let mut f1 = File::create("output.json").unwrap();
|
|
||||||
f1.write(json.as_bytes());
|
|
||||||
|
|
||||||
/* let unique_id = rand::thread_rng().gen_range(10..99);
|
|
||||||
|
|
||||||
if let XSomeList::TrackList(tracks) = &mut xdb.find_dataset(1).child {
|
if let XSomeList::TrackList(tracks) = &mut xdb.find_dataset(1).child {
|
||||||
/*let mut item = (*tracks.last().unwrap()).clone();
|
let mut item = (*tracks.last().unwrap()).clone();
|
||||||
let mut xargs = Vec::new();
|
let mut xargs = Vec::new();
|
||||||
xargs.push(XArgument { arg_type: 1, val: String::from("They beat you") });
|
xargs.push(XArgument { arg_type: 1, val: String::from("They beat you") });
|
||||||
xargs.push(XArgument { arg_type: 6, val: String::from("MPEG audio file")});
|
xargs.push(XArgument { arg_type: 6, val: String::from("MPEG audio file")});
|
||||||
@ -48,18 +43,37 @@ fn main() {
|
|||||||
item.data.unique_id = unique_id;
|
item.data.unique_id = unique_id;
|
||||||
item.data.dbid = rand::thread_rng().gen_range(0..10000);
|
item.data.dbid = rand::thread_rng().gen_range(0..10000);
|
||||||
item.data.dbid2 = rand::thread_rng().gen_range(0..10000);
|
item.data.dbid2 = rand::thread_rng().gen_range(0..10000);
|
||||||
tracks.push(item);*/
|
tracks.push(item);
|
||||||
let mut item = tracks.last_mut().unwrap();
|
}
|
||||||
item.args.first_mut().unwrap().val = String::from("Goy next door");
|
|
||||||
} */
|
|
||||||
|
|
||||||
/*if let XSomeList::Playlists(playlists) = &mut xdb.find_dataset(3).child {
|
if let XSomeList::Playlists(playlists) = &mut xdb.find_dataset(2).child {
|
||||||
let playlist = playlists.last_mut().unwrap();
|
let playlist = playlists.last_mut().unwrap();
|
||||||
let elem = playlist.elems.last().unwrap();
|
let elem = playlist.elems.last().unwrap();
|
||||||
let mut pl_item = elem.0.clone();
|
let mut pl_item = elem.0.clone();
|
||||||
pl_item.track_id = unique_id;
|
pl_item.track_id = unique_id;
|
||||||
playlist.elems.push((pl_item, elem.1.clone()));
|
|
||||||
}*/
|
pl_item.group_id = rand::thread_rng().gen_range(10..255);
|
||||||
|
let mut args = elem.1.clone();
|
||||||
|
if let XPlArgument::RawArgument(raw) = args.last_mut().unwrap() {
|
||||||
|
raw[24] = pl_item.group_id as u8;
|
||||||
|
}
|
||||||
|
|
||||||
|
playlist.elems.push((pl_item, args));
|
||||||
|
}
|
||||||
|
|
||||||
|
if let XSomeList::Playlists(playlists) = &mut xdb.find_dataset(3).child {
|
||||||
|
let playlist = playlists.last_mut().unwrap();
|
||||||
|
let elem = playlist.elems.last().unwrap();
|
||||||
|
let mut pl_item = elem.0.clone();
|
||||||
|
pl_item.track_id = unique_id;
|
||||||
|
pl_item.group_id = rand::thread_rng().gen_range(10..255);
|
||||||
|
let mut args = elem.1.clone();
|
||||||
|
if let XPlArgument::RawArgument(raw) = args.last_mut().unwrap() {
|
||||||
|
raw[24] = pl_item.group_id as u8;
|
||||||
|
}
|
||||||
|
|
||||||
|
playlist.elems.push((pl_item, args));
|
||||||
|
}
|
||||||
|
|
||||||
let mut op = File::create("outdb").unwrap();
|
let mut op = File::create("outdb").unwrap();
|
||||||
info!("Write res: {:?}", op.write(&serializer::to_bytes(xdb)));
|
info!("Write res: {:?}", op.write(&serializer::to_bytes(xdb)));
|
||||||
|
@ -230,7 +230,7 @@ pub struct PlaylistItem {
|
|||||||
data_object_child_count: u32,
|
data_object_child_count: u32,
|
||||||
podcast_grouping_flag: u16,
|
podcast_grouping_flag: u16,
|
||||||
unk4: u16,
|
unk4: u16,
|
||||||
group_id: u32,
|
pub group_id: u32,
|
||||||
pub track_id: u32,
|
pub track_id: u32,
|
||||||
timestamp: u32,
|
timestamp: u32,
|
||||||
podcast_grouping_reference: u32,
|
podcast_grouping_reference: u32,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user