|
|
|
@ -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);
|
|
|
|
|