diff options
| author | Nathan | 2017-07-22 09:24:43 -0400 |
|---|---|---|
| committer | Nathan | 2017-07-22 09:24:43 -0400 |
| commit | c2a8ea951ad98baa7f1776cba6edf7127860cbb3 (patch) | |
| tree | 442b61762d2299a32b54e7f80dd6e9f4e89ff540 /src | |
| parent | 1462b58d2a5ad5f7cbbd1086cd1219048584e69c (diff) | |
| download | podcast-c2a8ea951ad98baa7f1776cba6edf7127860cbb3.tar.bz2 | |
Attempt to play in VLC if mpv isn't found
Diffstat (limited to 'src')
| -rw-r--r-- | src/actions.rs | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/src/actions.rs b/src/actions.rs index 15d19a4..d81aa8c 100644 --- a/src/actions.rs +++ b/src/actions.rs @@ -3,7 +3,7 @@ use reqwest; use rss::Channel; use std::fs::{DirBuilder, File}; use std::io::{self, Read, Write}; -use std::process::{Command, ExitStatus}; +use std::process::Command; use structs::*; use utils::*; @@ -101,28 +101,41 @@ pub fn play_episode(state: &State, p_search: &str, ep_num_string: &str) { path.push(podcast.title()); path.push(filename); if path.exists() { - if let Err(err) = launch_mpv(path.to_str().unwrap()) { - handle_launch_mpv_error(err); - } + launch_player(path.to_str().unwrap()); } else { - if let Err(err) = launch_mpv(episode.url().unwrap()) { - handle_launch_mpv_error(err); - } + launch_player(episode.url().unwrap()); } return; } } } -fn launch_mpv(url: &str) -> io::Result<ExitStatus> { - Command::new("mpv") - .args(&["--audio-display=no", url]) - .status() +fn launch_player(url: &str) { + if let Err(_) = launch_mpv(&url) { + launch_vlc(url) + } +} + +fn launch_mpv(url: &str) -> Result<(), io::Error> { + if let Err(err) = Command::new("mpv").args(&["--audio-display=no", "--ytdl=no", url]).status() { + match err.kind() { + io::ErrorKind::NotFound => { + eprintln!("Couldn't open mpv\nTrying vlc..."); + return Err(err); + }, + _ => eprintln!("Error: {}", err), + } + } + Ok(()) } -fn handle_launch_mpv_error(err: io::Error) { - match err.kind() { - io::ErrorKind::NotFound => eprintln!("mpv not found in PATH, is it installed?"), - _ => eprintln!("Error: {}", err), +fn launch_vlc(url: &str) { + if let Err(err) = Command::new("vlc").args(&["-I ncurses", url]).status() { + match err.kind() { + io::ErrorKind::NotFound => { + eprintln!("vlc not found in PATH\nAborting..."); + }, + _ => eprintln!("Error: {}", err), + } } } |
