diff --git a/Cargo.toml b/Cargo.toml index 7f3a40f..2ebbeb1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ edition = "2021" [dependencies] anyhow = "1.0.75" dotenv = "0.15.0" -tokio = { version = "1.32.0", features = ["rt-multi-thread", "macros"] } +tokio = { version = "1.32.0", features = ["rt-multi-thread", "macros", "process"] } teloxide = { version = "0.12.2", git ="https://github.com/teloxide/teloxide", features = ["macros"] } serde = { version = "1.0.196", features = ["derive"] } serde_json = "1.0.113" diff --git a/src/dl.rs b/src/dl.rs index ce4caca..e91fcfd 100644 --- a/src/dl.rs +++ b/src/dl.rs @@ -1,2 +1 @@ -pub mod spawn; pub mod yt_dlp; diff --git a/src/dl/spawn.rs b/src/dl/spawn.rs deleted file mode 100644 index 6be8696..0000000 --- a/src/dl/spawn.rs +++ /dev/null @@ -1,24 +0,0 @@ -use std::process::{Command, Output}; -use tokio::task::{spawn_blocking, JoinError}; - -pub enum SpawnError { - CommandError(std::io::Error), - SpawnBlockingError(JoinError), -} - -pub async fn spawn_process(program: String, args: Vec) -> Result { - let output = spawn_blocking(move || { - let output = Command::new(program).args(args).output(); - - match output { - Ok(output) => Ok(output), - Err(e) => Err(SpawnError::CommandError(e)), - } - }) - .await; - - match output { - Ok(output) => output, - Err(e) => Err(SpawnError::SpawnBlockingError(e)), - } -} diff --git a/src/dl/yt_dlp.rs b/src/dl/yt_dlp.rs index 633a5b5..869cdf1 100644 --- a/src/dl/yt_dlp.rs +++ b/src/dl/yt_dlp.rs @@ -1,6 +1,7 @@ use serde::Deserialize; use serde_json; -use std::process::Command; +use std::process::Output; +use tokio::process::Command; #[derive(Deserialize, Debug)] pub struct YtDlpFormat { @@ -23,12 +24,23 @@ pub struct YtDlpInfo { pub formats: Vec, } -enum YtDlpError { - SpawnError, +pub enum YtDlpError { + CommandError(std::io::Error), } pub struct YtDlp {} impl YtDlp { - pub async fn load_info(url: &str) {} + pub async fn load_info(url: &str) -> Result<(), YtDlpError> { + let output = match Command::new("python") + .args(["-m", "yt_dlp", url, "-j"]) + .output() + .await + { + Ok(output) => output, + Err(e) => return Err(YtDlpError::CommandError(e)), + }; + + Ok(()) + } }