Save watched right after something is watched, and use match
This commit is contained in:
122
src/main.rs
122
src/main.rs
@ -29,22 +29,27 @@ async fn main() {
|
||||
let search = readline.input("Search by name [ r/q/f ]: ").to_lowercase();
|
||||
let search = search.trim();
|
||||
|
||||
// If they want to quit, let them-
|
||||
if search == "q" {
|
||||
break;
|
||||
} else if search == "r" {
|
||||
search_result = None;
|
||||
refresh(&parser).await;
|
||||
continue;
|
||||
} else if search == "f" {
|
||||
mpv_fs = !mpv_fs;
|
||||
println!(
|
||||
"Toggled mpv to {}launch in fullscreen",
|
||||
if mpv_fs { "" } else { "not " }
|
||||
);
|
||||
continue;
|
||||
// Special commands
|
||||
match search {
|
||||
// Quit
|
||||
"q" => break,
|
||||
// Refresh playlist
|
||||
"r" => {
|
||||
search_result = None;
|
||||
refresh(&parser).await;
|
||||
continue;
|
||||
}
|
||||
// Toggle fullscreen for mpv
|
||||
"f" => {
|
||||
mpv_fs = !mpv_fs;
|
||||
println!(
|
||||
"Toggled mpv to {}launch in fullscreen",
|
||||
if mpv_fs { "" } else { "not " }
|
||||
);
|
||||
continue;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
search_result = Some(Rc::new(parser.find(search)));
|
||||
|
||||
if search_result.as_ref().unwrap().len() == 0 {
|
||||
@ -64,61 +69,68 @@ async fn main() {
|
||||
let user_wish = user_wish.trim();
|
||||
|
||||
// If they want to quit, let them-
|
||||
if user_wish == "q" {
|
||||
break;
|
||||
} else if user_wish == "s" {
|
||||
search_result = None;
|
||||
continue;
|
||||
} else if user_wish == "r" {
|
||||
println!("Refreshing local m3u8-file");
|
||||
search_result = None;
|
||||
refresh(&parser).await;
|
||||
continue;
|
||||
} else if user_wish == "d" {
|
||||
let selection = readline
|
||||
.input("Download all or select in comma separated [a | 1,2,3,4]: ")
|
||||
.to_lowercase();
|
||||
let selection = selection.trim();
|
||||
match user_wish {
|
||||
// Quit
|
||||
"q" => break,
|
||||
// Go inte search-mode
|
||||
"s" => {
|
||||
search_result = None;
|
||||
continue;
|
||||
}
|
||||
// Refresh playlist
|
||||
"r" => {
|
||||
println!("Refreshing local m3u8-file");
|
||||
search_result = None;
|
||||
refresh(&parser).await;
|
||||
continue;
|
||||
}
|
||||
// Downloadmode
|
||||
"d" => {
|
||||
let selection = readline
|
||||
.input("Download all or select in comma separated [a | 1,2,3,4]: ")
|
||||
.to_lowercase();
|
||||
let selection = selection.trim();
|
||||
|
||||
let to_download = loop {
|
||||
break if selection == "a" {
|
||||
println!("Downloading all");
|
||||
search_result.as_ref().unwrap().clone()
|
||||
} else {
|
||||
let selections = selection
|
||||
.split(",")
|
||||
.map(|x| x.trim().parse::<usize>())
|
||||
.collect::<Vec<Result<usize, ParseIntError>>>();
|
||||
let to_download = loop {
|
||||
break if selection == "a" {
|
||||
println!("Downloading all");
|
||||
search_result.as_ref().unwrap().clone()
|
||||
} else {
|
||||
let selections = selection
|
||||
.split(",")
|
||||
.map(|x| x.trim().parse::<usize>())
|
||||
.collect::<Vec<Result<usize, ParseIntError>>>();
|
||||
|
||||
for selection in selections.iter() {
|
||||
if selection.is_err() {
|
||||
println!("Not a valid number or the option {}", "a".bold());
|
||||
continue;
|
||||
for selection in selections.iter() {
|
||||
if selection.is_err() {
|
||||
println!("Not a valid number or the option {}", "a".bold());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
let selections = selections.into_iter().map(|x| x.unwrap() - 1);
|
||||
let mut final_selections = Vec::new();
|
||||
for selection in selections {
|
||||
final_selections.push((search_result.as_ref().unwrap())[selection]);
|
||||
}
|
||||
}
|
||||
let selections = selections.into_iter().map(|x| x.unwrap() - 1);
|
||||
let mut final_selections = Vec::new();
|
||||
for selection in selections {
|
||||
final_selections.push((search_result.as_ref().unwrap())[selection]);
|
||||
}
|
||||
|
||||
Rc::new(final_selections)
|
||||
Rc::new(final_selections)
|
||||
};
|
||||
};
|
||||
};
|
||||
download_m3u8(to_download).await;
|
||||
download_m3u8(to_download).await;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
let choosen = user_wish.parse::<usize>();
|
||||
match choosen {
|
||||
Ok(k) => {
|
||||
let search_result = search_result.as_ref().unwrap().clone();
|
||||
stream(&(search_result[k - 1]), mpv_fs)
|
||||
stream(&(search_result[k - 1]), mpv_fs);
|
||||
parser.save_watched();
|
||||
}
|
||||
Err(e) => println!("Have to be a valid number! {:?}", e),
|
||||
}
|
||||
}
|
||||
|
||||
parser.save_watched();
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -90,13 +90,8 @@ impl Parser {
|
||||
|
||||
let _ = fs::create_dir_all(&*self.watched_name.parent().unwrap());
|
||||
|
||||
match fs::write(&*self.watched_name, watched_items.join("\n")) {
|
||||
Ok(_) => {
|
||||
println!("Saved watched")
|
||||
}
|
||||
Err(e) => {
|
||||
eprintln!("Failed to write downloaded m3u8file {:?}", e);
|
||||
}
|
||||
if let Err(e) = fs::write(&*self.watched_name, watched_items.join("\n")) {
|
||||
eprintln!("Failed to write watched links {:?}", e);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user