summaryrefslogtreecommitdiffstats
path: root/src/youtube_dl.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/youtube_dl.rs')
-rw-r--r--src/youtube_dl.rs38
1 files changed, 38 insertions, 0 deletions
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::<Vec<_>>();
+ let url = lines[0].to_owned();
+ let title = lines[1].to_owned();
+
+ Ok((url, title))
+} \ No newline at end of file