2018-02-13 15:25:33 +00:00
|
|
|
extern crate clap;
|
2018-02-11 06:10:52 +00:00
|
|
|
extern crate hls_m3u8;
|
|
|
|
#[macro_use]
|
|
|
|
extern crate trackable;
|
|
|
|
|
2018-02-13 15:25:33 +00:00
|
|
|
use clap::{App, Arg};
|
2018-02-14 03:00:19 +00:00
|
|
|
use hls_m3u8::{MasterPlaylist, MediaPlaylist};
|
2018-10-04 11:18:56 +00:00
|
|
|
use std::io::{self, Read};
|
2018-02-11 06:10:52 +00:00
|
|
|
use trackable::error::Failure;
|
|
|
|
|
|
|
|
fn main() {
|
2018-02-13 15:25:33 +00:00
|
|
|
let matches = App::new("parse")
|
|
|
|
.arg(
|
|
|
|
Arg::with_name("M3U8_TYPE")
|
|
|
|
.long("m3u8-type")
|
|
|
|
.takes_value(true)
|
|
|
|
.default_value("media")
|
|
|
|
.possible_values(&["media", "master"]),
|
2018-10-04 11:18:56 +00:00
|
|
|
).get_matches();
|
2018-02-11 06:10:52 +00:00
|
|
|
let mut m3u8 = String::new();
|
|
|
|
track_try_unwrap!(
|
|
|
|
io::stdin()
|
|
|
|
.read_to_string(&mut m3u8)
|
|
|
|
.map_err(Failure::from_error)
|
|
|
|
);
|
2018-02-13 15:25:33 +00:00
|
|
|
|
|
|
|
match matches.value_of("M3U8_TYPE").unwrap() {
|
|
|
|
"media" => {
|
|
|
|
let playlist: MediaPlaylist = track_try_unwrap!(m3u8.parse());
|
|
|
|
println!("{}", playlist);
|
|
|
|
}
|
2018-02-14 01:31:24 +00:00
|
|
|
"master" => {
|
|
|
|
let playlist: MasterPlaylist = track_try_unwrap!(m3u8.parse());
|
|
|
|
println!("{}", playlist);
|
|
|
|
}
|
2018-02-13 15:25:33 +00:00
|
|
|
_ => unreachable!(),
|
2018-02-11 06:10:52 +00:00
|
|
|
}
|
|
|
|
}
|