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 | |
| parent | 1462b58d2a5ad5f7cbbd1086cd1219048584e69c (diff) | |
| download | podcast-c2a8ea951ad98baa7f1776cba6edf7127860cbb3.tar.bz2 | |
Attempt to play in VLC if mpv isn't found
| -rw-r--r-- | Cargo.toml | 2 | ||||
| -rw-r--r-- | src/actions.rs | 43 | 
2 files changed, 29 insertions, 16 deletions
| @@ -1,6 +1,6 @@  [package]  name = "podcast" -version = "0.1.3" +version = "0.1.4"  authors = ["njaremko <njaremko@gmail.com>"]  description = "A command line podcast player"  license = "GPL-3.0" 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), +        }      }  } | 
