diff options
Diffstat (limited to 'tools/src/bin/import.rs')
-rw-r--r-- | tools/src/bin/import.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/tools/src/bin/import.rs b/tools/src/bin/import.rs new file mode 100644 index 0000000..eeb09e7 --- /dev/null +++ b/tools/src/bin/import.rs @@ -0,0 +1,38 @@ +use clap::Parser; +use jellycommon::ItemInfo; +use jellymatroska::read::EbmlReader; +use jellyremuxer::import::import_read; +use std::{fs::File, io::Write, path::PathBuf}; + +#[derive(Parser)] +struct Args { + #[clap(short = 'I', long)] + item: PathBuf, + #[clap(short = 'd', long)] + dry: bool, + #[clap(short = 'i', long)] + input: PathBuf, +} + +fn main() -> anyhow::Result<()> { + env_logger::init_from_env("LOG"); + let args = Args::parse(); + + let mut iteminfo: ItemInfo = serde_json::from_reader(File::open(&args.item)?)?; + // let iteminfo_orig = iteminfo.clone(); + + let input = File::open(args.input.clone()).unwrap(); + let mut input = EbmlReader::new(input); + + import_read(&mut input, &mut iteminfo)?; + + let k = serde_json::to_string_pretty(&iteminfo)?; + if args.dry { + println!("{k}") + } else { + let mut f = File::create(args.item)?; + f.write_all(k.as_bytes())?; + } + + Ok(()) +} |