use crate::prelude2::*;
use crate::commons::upload_folder;
use crate::core::youtube::check_by_id;
use crate::core::youtube::download_async;
use crate::core::youtube::download_by_id;
use crate::core::youtube::video_info;
pub async fn check(
query: web::Query<std::collections::HashMap<String, String>>,
request: HttpRequest,
) -> impl Responder {
let video_identifier = query
.get("video_identifier")
.ok_or_else(|| Error::invalid_request("Missing post parameter: `video_identifier`"))?;
let output = check_by_id(video_identifier).await?;
request.text(200, &output)
}
pub async fn content_length(
query: web::Query<std::collections::HashMap<String, String>>,
request: HttpRequest,
) -> impl Responder {
let video_identifier = query
.get("video_identifier")
.ok_or_else(|| Error::invalid_request("Missing post parameter: `video_identifier`"))?;
let (title, content_length, quality) =
crate::core::youtube::content_length(video_identifier).await?;
request.json(
200,
R::ok((
title,
quality,
crate::commons::format_bytes_size(content_length as usize),
content_length,
)),
)
}
pub async fn descrambler(
query: web::Query<std::collections::HashMap<String, String>>,
request: HttpRequest,
) -> impl Responder {
let video_identifier = query
.get("video_identifier")
.ok_or_else(|| Error::invalid_request("Missing post parameter: `video_identifier`"))?;
let video_info = video_info(video_identifier).await?;
request.json(200, R::ok(video_info))
}
pub async fn best_quality(
query: web::Query<std::collections::HashMap<String, String>>,
request: HttpRequest,
) -> impl Responder {
let video_identifier = query
.get("video_identifier")
.ok_or_else(|| Error::invalid_request("Missing post parameter: `video_identifier`"))?;
let stream = crate::core::youtube::best_quality(video_identifier).await?;
request.json(200, R::ok(stream))
}
pub async fn dl(
query: web::Query<std::collections::HashMap<String, String>>,
request: HttpRequest,
) -> impl Responder {
let video_identifier = query
.get("video_identifier")
.ok_or_else(|| Error::invalid_request("Missing post parameter: `video_identifier`"))?;
let saved_path = download_by_id(video_identifier, &upload_folder()).await?;
request.json(200, R::ok(saved_path.as_os_str()))
}
pub async fn dl_async(
query: web::Query<std::collections::HashMap<String, String>>,
form: web::Form<std::collections::HashMap<String, String>>,
request: HttpRequest,
) -> impl Responder {
let video_identifier = query
.get("video_identifier")
.ok_or_else(|| Error::invalid_request("Missing post parameter: `video_identifier`"))?;
let _prefix = query.get("prefix");
let _download_foler = form
.get("download_foler")
.ok_or_else(|| Error::invalid_request("Missing post parameter: `download_foler`"))?;
let (title, content_length, quality) = download_async(
video_identifier,
_download_foler,
_prefix,
)
.await?;
request.json(
200,
R::ok((
title,
quality,
crate::commons::format_bytes_size(content_length as usize),
content_length,
)),
)
}