Send reply to browser and suppress output from mpv #2
2 changed files with 19 additions and 1 deletions
|
@ -1,7 +1,7 @@
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::BufReader;
|
use std::io::BufReader;
|
||||||
use std::io::Read;
|
use std::io::{Read, Write};
|
||||||
|
|
||||||
use crate::error::FF2MpvError;
|
use crate::error::FF2MpvError;
|
||||||
|
|
||||||
|
@ -10,6 +10,11 @@ pub struct FF2MpvMessage {
|
||||||
pub url: String,
|
pub url: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn send_reply() -> Result<(), io::Error> {
|
||||||
|
// "ok" formatted as a JSON string
|
||||||
|
send_message("\"ok\"")
|
||||||
|
}
|
||||||
|
|
||||||
pub fn get_mpv_message() -> Result<FF2MpvMessage, FF2MpvError> {
|
pub fn get_mpv_message() -> Result<FF2MpvMessage, FF2MpvError> {
|
||||||
let message = read_message()?;
|
let message = read_message()?;
|
||||||
let ff2mpv_message = serde_json::from_str(&message)?;
|
let ff2mpv_message = serde_json::from_str(&message)?;
|
||||||
|
@ -28,3 +33,13 @@ fn read_message() -> Result<String, io::Error> {
|
||||||
reader.read_to_string(&mut string)?;
|
reader.read_to_string(&mut string)?;
|
||||||
Ok(string)
|
Ok(string)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn send_message(message: &str) -> Result<(), io::Error> {
|
||||||
|
let length = (message.len() as u32).to_ne_bytes();
|
||||||
|
let message = message.as_bytes();
|
||||||
|
|
||||||
|
let mut stdout = io::stdout();
|
||||||
|
stdout.write_all(&length)?;
|
||||||
|
stdout.write_all(message)?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
|
@ -64,12 +64,15 @@ impl Command {
|
||||||
let config = Config::build();
|
let config = Config::build();
|
||||||
let ff2mpv_message = browser::get_mpv_message()?;
|
let ff2mpv_message = browser::get_mpv_message()?;
|
||||||
Command::launch_mpv(config.player_command, config.player_args, &ff2mpv_message.url)?;
|
Command::launch_mpv(config.player_command, config.player_args, &ff2mpv_message.url)?;
|
||||||
|
browser::send_reply()?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn launch_mpv(command: String, args: Vec<String>, url: &str) -> Result<(), io::Error> {
|
fn launch_mpv(command: String, args: Vec<String>, url: &str) -> Result<(), io::Error> {
|
||||||
process::Command::new(command)
|
process::Command::new(command)
|
||||||
|
.stdout(process::Stdio::null())
|
||||||
|
.stderr(process::Stdio::null())
|
||||||
.args(args)
|
.args(args)
|
||||||
.arg(url)
|
.arg(url)
|
||||||
.spawn()?;
|
.spawn()?;
|
||||||
|
|
Loading…
Reference in a new issue