diff options
author | tomsmeding <tom.smeding@gmail.com> | 2020-01-05 20:44:27 +0100 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2020-01-05 20:44:27 +0100 |
commit | 8421f2c03d6f905b58b5447a6e0469519c7f8fa6 (patch) | |
tree | 6258db477e638c43a6c51cb0549c070fb0f8f9b2 /src/main.rs |
Initial
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..6760ee7 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,41 @@ +use std::io; +use std::fs::File; +use argparse::{ArgumentParser, StoreTrue, Store}; +use crate::options::{EncodingOptions, Options}; + +mod encoding; +mod error; +mod id3v2; +mod options; +mod util; + +fn main() -> io::Result<()> { + let options = { + let mut options: Options = Default::default(); + + { + let mut ap = ArgumentParser::new(); + ap.set_description("ID3v2 tag editor/fixer. Incomplete/work-in-progress."); + ap.refer(&mut options.latin1_as_utf8) + .add_option(&["--assume-utf8"], StoreTrue, + "Assume that all strings specified as Latin-1 are really UTF-8."); + ap.refer(&mut options.file) + .required() + .add_argument("file", Store, + "File to operate on (probably a .mp3)"); + ap.parse_args_or_exit(); + } + + options + }; + + let mut f = File::open(options.file)?; + let tag = id3v2::ID3v2::from_stream(&mut f)?; + println!("{:?}", tag); + + for frame in tag.frames { + println!("{:?}", frame.interpret(&EncodingOptions { latin1_as_utf8: options.latin1_as_utf8 })); + } + + Ok(()) +} |