media-remote 0.3.7

Bindings for MediaRemote.framework
Documentation
use std::{
    io::Write,
    process::{Command, Stdio},
};

use serde_json::Value;

static SCRIPT: &[u8] = include_bytes!("../../assets/nowPlaying.jxa");

pub fn get_raw_info() -> Option<Value> {
    let mut child = Command::new("osascript")
        .stdin(Stdio::piped())
        .stdout(Stdio::piped())
        .arg("-l")
        .arg("JavaScript")
        .spawn()
        .expect("Failed to spawn command");

    child
        .stdin
        .as_mut()
        .expect("Failed to open stdin")
        .write_all(SCRIPT)
        .expect("Failed to write to stdin");

    let output = child.wait_with_output().expect("Failed to read stdout");
    if !output.status.success() {
        return None;
    }

    serde_json::from_slice(&output.stdout).ok()
}