prompt before opening media player

pull/22/head
chris west 4 years ago
parent c1dc7a1b84
commit f8c808e8f3

@ -190,7 +190,12 @@ impl UI {
#[cfg(feature = "media")]
if typ.is_media() {
return self.open_media(url);
self.dirty = true;
return if self.confirm(&format!("Open in media player? {}", url)) {
utils::open_media(url)
} else {
Ok(())
};
}
if typ.is_download() {
@ -494,32 +499,6 @@ impl UI {
}
}
#[cfg(feature = "media")]
/// Opens a media file with `mpv`.
fn open_media(&mut self, url: &str) -> Result<()> {
// mpv only supports /9/
let url = url.replace("/;/", "/9/").replace("/s/", "/9/");
// support URL: selectors
let url = if let Some (idx) = url.find("URL:") {
url.split_at(idx).1.trim_start_matches("URL:")
} else {
&url
};
terminal::disable_raw_mode()?;
let mut cmd = process::Command::new("mpv")
.arg(url)
.stdin(Stdio::inherit())
.stdout(Stdio::inherit())
.spawn()?;
cmd.wait()?;
terminal::enable_raw_mode()?;
self.dirty = true; // redraw when finished with session
Ok(())
}
/// Opens an interactive telnet session.
fn telnet(&mut self, url: &str) -> Result<()> {
let gopher::Url { host, port, .. } = gopher::parse_url(url);

@ -95,3 +95,30 @@ pub fn open_external(url: &str) -> Result<()> {
))
}
}
#[cfg(feature = "media")]
/// Opens a media file with `mpv`.
pub fn open_media(url: &str) -> Result<()> {
use crate::terminal;
// mpv only supports /9/
let url = url.replace("/;/", "/9/").replace("/s/", "/9/");
// support URL: selectors
let url = if let Some(idx) = url.find("URL:") {
url.split_at(idx).1.trim_start_matches("URL:")
} else {
&url
};
terminal::disable_raw_mode()?;
let mut cmd = process::Command::new("mpv")
.arg(url)
.stdin(Stdio::inherit())
.stdout(Stdio::inherit())
.spawn()?;
cmd.wait()?;
terminal::enable_raw_mode()?;
Ok(())
}

Loading…
Cancel
Save