rsmediainfo 0.2.0

Rust wrapper for MediaInfo library
//! Example that downloads a remote media file over HTTP/HTTPS, hands the
//! bytes to the parser through an in-memory cursor, and prints the audio and
//! video tracks as a structured data dictionary.
//!
//! Run with:
//!
//! ```text
//! cargo run --example parse_url -- <media_url>
//! ```

use rsmediainfo::MediaInfo;
use std::env;
use std::io::Cursor;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut args = env::args().skip(1);
    let url = args.next().ok_or("usage: parse_url <media_url>")?;

    let response = reqwest::blocking::get(&url)?.error_for_status()?;
    let bytes = response.bytes()?;

    let mut cursor = Cursor::new(bytes.to_vec());
    let mi = MediaInfo::parse_media_info(&mut cursor)?;

    for track in mi.tracks() {
        match track.track_type() {
            "Audio" | "Video" => {
                let data = track.to_data();
                println!("{} track:", track.track_type());
                println!("{data:#?}");
            }
            _ => {}
        }
    }

    Ok(())
}