Use relative path when running ffprobe.

Avoids problems where directory name starts with something that looks
like and unknown protocol, i.e. 'AVP: Alien vs. Predator (2004)'
This commit is contained in:
Bill Thiede 2019-11-03 21:21:15 -08:00
parent 6f579326b5
commit 297124eedb

View File

@ -234,7 +234,7 @@ pub struct MovieLibrary {
root: String, root: String,
} }
fn json_metadata_for_path<P: AsRef<OsStr>>(path: P) -> Result<String, Error> { fn json_metadata_for_path<P: AsRef<Path> + AsRef<OsStr>>(path: P) -> Result<String, Error> {
let mut cmd = Command::new("ffprobe"); let mut cmd = Command::new("ffprobe");
// TODO(wathiede): maybe add "-select_streams v" // TODO(wathiede): maybe add "-select_streams v"
cmd.args(&[ cmd.args(&[
@ -245,8 +245,9 @@ fn json_metadata_for_path<P: AsRef<OsStr>>(path: P) -> Result<String, Error> {
"-show_format", "-show_format",
"-show_error", "-show_error",
"-show_streams", "-show_streams",
"-i",
]) ])
.arg(path); .arg(Path::new("./").join(path));
info!(target: "json", "cmd {:?}", cmd); info!(target: "json", "cmd {:?}", cmd);
let output = cmd.output()?; let output = cmd.output()?;
if output.status.success() { if output.status.success() {
@ -385,6 +386,9 @@ impl MovieLibrary {
pub fn update_metadata(&self) -> Result<Vec<String>, Error> { pub fn update_metadata(&self) -> Result<Vec<String>, Error> {
let path = Path::new(&self.root).join(FULL_METADATA_FILENAME); let path = Path::new(&self.root).join(FULL_METADATA_FILENAME);
// TODO(wathiede): if we fail to parse the old file (i.e. file not found), create an empty
// old_metadata and keep going.
// Open the file in read-only mode with buffer. // Open the file in read-only mode with buffer.
let f = File::open(&path).context(format!("open {}", path.display()))?; let f = File::open(&path).context(format!("open {}", path.display()))?;
let r = BufReader::new(f); let r = BufReader::new(f);