diff options
Diffstat (limited to 'src/audio/ytdl.rs')
| -rw-r--r-- | src/audio/ytdl.rs | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/audio/ytdl.rs b/src/audio/ytdl.rs deleted file mode 100644 index 645f3f4..0000000 --- a/src/audio/ytdl.rs +++ /dev/null @@ -1,62 +0,0 @@ -/// This module is entirely adapted from the relevant code in Serenity. - -use std::{ - process::{ - Command, - Stdio, - }, -}; - -use serde_json::Value; -use serenity::{ - voice::{ - VoiceError, - } -}; -use lazy_static::lazy_static; - -use crate::{Result, CONFIG}; - -lazy_static! { - static ref YTDL_COMMAND: String = { - let result = CONFIG.ytdl.clone().unwrap_or("youtube-dl".to_owned()); - log::debug!("got ytdl: {}", result); - - result - }; -} - -pub fn ytdl_url(uri: &str) -> Result<String> { - let args = [ - "-f", - "webm[abr>0]/bestaudio/best", - "--no-playlist", - "--print-json", - "--skip-download", - uri, - ]; - - let out = Command::new(&*YTDL_COMMAND) - .args(&args) - .stdin(Stdio::null()) - .output()?; - - if !out.status.success() { - log::error!("running ytdl {:?}", out); - return Err(VoiceError::YouTubeDLRun(out).into()); - } - - let value = serde_json::from_reader(&out.stdout[..])?; - let mut obj = match value { - Value::Object(obj) => obj, - other => return Err(VoiceError::YouTubeDLProcessing(other).into()), - }; - - match obj.remove("url") { - Some(v) => match v { - Value::String(uri) => Ok(uri), - other => Err(VoiceError::YouTubeDLUrl(other).into()), - }, - None => Err(VoiceError::YouTubeDLUrl(Value::Object(obj)).into()), - } -} |
