diff --git a/src/main.rs b/src/main.rs index 08b4e36..e4cdcb1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,27 +1,37 @@ -use http::Uri; +use rust_util::*; +use m3u8_rs::*; +use m3u8_rs::playlist::Playlist; // https://github.com/rutgersc/m3u8-rs/blob/master/examples/simple.rs -fn main() { - println!("Hello, world!"); +fn main() -> XResult<()> { + let test_fn = "/Users/hatterjiang/m/vod"; + let test_f_content = std::fs::read_to_string(test_fn)?; - let u = "https://a:d@hatter.ink:443/aaa/bbb/cccc?aa=1#dd"; - let uri = u.parse::().unwrap(); - println!("{}", uri); - println!("{:?}", uri.scheme()); - println!("{:?}", uri.scheme_str()); - println!("{:?}", uri.authority()); - println!("{:?}", uri.host()); - println!("{:?}", uri.port()); - println!("{:?}", uri.path()); - println!("{:?}", uri.query()); - println!("{:?}", uri.path_and_query()); - println!("{:?}", uri.path().split('/').collect::>()); - let mut v = uri.path().split('/').collect::>(); - if !v.is_empty() { - let l = v.len()-1; - v[l]="xxxxx"; + let parsed = parse_playlist_res(test_f_content.as_bytes()); + + match parsed { + Ok(Playlist::MasterPlaylist(_pl)) => { //println!("Master playlist:\n{:?}", pl), + println!("Master play list not supported!"); + return Ok(()); + }, + Ok(Playlist::MediaPlaylist(pl)) => { //println!("Media playlist:\n{:?}", pl), + println!("Version: {}", pl.version); + println!("Duration: {}", pl.target_duration); + println!("Media sequence: {}", pl.media_sequence); + println!("Discontinueity sequence: {}", pl.discontinuity_sequence); + println!("Play list type: {:?}", pl.playlist_type); + println!("I frames only: {}", pl.i_frames_only); + println!("Start: {:?}", pl.start); + println!("Independent segments: {}", pl.independent_segments); + println!("End list: {}", pl.end_list); + for _s in pl.segments { + // println!("{:?}", s); + } + }, + Err(e) => println!("Error: {:?}", e) } - println!("{:?}", v.join("/")); // make_url("", "").ok(); + + Ok(()) }