#[macro_export]
macro_rules! youtube {
($yt_dlp:expr, $ffmpeg:expr, $output:expr) => {{
let libraries =
$crate::client::Libraries::new(std::path::PathBuf::from($yt_dlp), std::path::PathBuf::from($ffmpeg));
$crate::Downloader::builder(libraries, $output).build()
}};
($yt_dlp:expr, $ffmpeg:expr, $output:expr, cache: $cache:expr) => {{
let libraries =
$crate::client::Libraries::new(std::path::PathBuf::from($yt_dlp), std::path::PathBuf::from($ffmpeg));
$crate::Downloader::builder(libraries, $output)
.with_cache($cache)
.build()
}};
}
#[macro_export]
macro_rules! ytdlp_args {
($($arg:expr),* $(,)?) => {{
vec![$($arg.to_string()),*]
}};
($($key:ident: $value:expr),* $(,)?) => {{
vec![$(format!("--{}={}", stringify!($key).replace('_', "-"), $value)),*]
}};
}
#[macro_export]
macro_rules! install_libraries {
($dir:expr) => {{
use std::path::PathBuf;
use $crate::client::Libraries;
use $crate::client::deps::LibraryInstaller;
let dir = PathBuf::from($dir);
let yt_dlp = dir.join("yt-dlp");
let ffmpeg = dir.join("ffmpeg");
let libraries = Libraries::new(yt_dlp, ffmpeg);
libraries.install_dependencies().await?;
Ok::<Libraries, $crate::error::Error>(libraries)
}};
($dir:expr, token: $token:expr) => {{
use std::path::PathBuf;
use $crate::client::Libraries;
use $crate::client::deps::LibraryInstaller;
let dir = PathBuf::from($dir);
let yt_dlp = dir.join("yt-dlp");
let ffmpeg = dir.join("ffmpeg");
let libraries = Libraries::new(yt_dlp, ffmpeg);
libraries.install_dependencies_with_token($token).await?;
Ok::<Libraries, $crate::error::Error>(libraries)
}};
}
#[macro_export]
macro_rules! ternary {
($condition:expr, $true:expr, $false:expr) => {
if $condition { $true } else { $false }
};
}