From 193987e0c7185eb63827b2d91f1e2779c4e557d3 Mon Sep 17 00:00:00 2001 From: Felix Kaaman Date: Tue, 7 Jan 2020 22:12:28 +0200 Subject: Add enterprise logging and split out gstreamer & teamspeak specific code --- src/youtube_dl.rs | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/youtube_dl.rs (limited to 'src/youtube_dl.rs') diff --git a/src/youtube_dl.rs b/src/youtube_dl.rs new file mode 100644 index 0000000..1eff302 --- /dev/null +++ b/src/youtube_dl.rs @@ -0,0 +1,38 @@ +use std::process::{Command, Stdio}; + +use log::{debug}; + +pub fn get_audio_download_url(uri: String) -> Result<(String, String), String> { + let ytdl_args = [ + "--no-playlist", + "-f", + "bestaudio/best", + "-g", + "--get-filename", + "-o", + "%(title)s", + &uri, + ]; + + let mut cmd = Command::new("youtube-dl"); + cmd.args(&ytdl_args); + cmd.stdin(Stdio::null()); + + debug!("yt-dl command: {:?}", cmd); + + let ytdl_output = cmd + .output() + .unwrap(); + + let output = String::from_utf8(ytdl_output.stdout.clone()).unwrap(); + + if ytdl_output.status.success() == false { + return Err(String::from_utf8(ytdl_output.stderr.clone()).unwrap()); + } + + let lines = output.lines().collect::>(); + let url = lines[0].to_owned(); + let title = lines[1].to_owned(); + + Ok((url, title)) +} \ No newline at end of file -- cgit v1.2.3-70-g09d2