mirror of
https://github.com/kristoferssolo/tg-relay-rs.git
synced 2025-12-20 11:04:41 +00:00
feat(youtube): add session cookie
This commit is contained in:
parent
5c2038024e
commit
5dfc82508b
@ -9,9 +9,11 @@ services:
|
|||||||
TELOXIDE_TOKEN: ${TELOXIDE_TOKEN}
|
TELOXIDE_TOKEN: ${TELOXIDE_TOKEN}
|
||||||
IG_SESSION_COOKIE_PATH: /app/www.instagram.com_cookies.txt
|
IG_SESSION_COOKIE_PATH: /app/www.instagram.com_cookies.txt
|
||||||
TIKTOK_SESSION_COOKIE_PATH: /app/www.tiktok.com_cookies.txt
|
TIKTOK_SESSION_COOKIE_PATH: /app/www.tiktok.com_cookies.txt
|
||||||
|
YOUTUBE_SESSION_COOKIE_PATH: /app/www.youtube.com_cookies.txt
|
||||||
RUST_LOG: ${RUST_LOG:-info}
|
RUST_LOG: ${RUST_LOG:-info}
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- ./comments.txt:/app/comments.txt:ro
|
- ./comments.txt:/app/comments.txt:ro
|
||||||
- ${IG_SESSION_COOKIE_PATH:-/etc/secrets/www.instagram.com_cookies.txt}:/app/www.instagram.com_cookies.txt:rw
|
- ${IG_SESSION_COOKIE_PATH:-/etc/secrets/www.instagram.com_cookies.txt}:/app/www.instagram.com_cookies.txt:rw
|
||||||
- ${TIKTOK_SESSION_COOKIE_PATH:-/etc/secrets/www.tiktok.com_cookies.txt}:/app/www.tiktok.com_cookies.txt:rw
|
- ${TIKTOK_SESSION_COOKIE_PATH:-/etc/secrets/www.tiktok.com_cookies.txt}:/app/www.tiktok.com_cookies.txt:rw
|
||||||
|
- ${YOUTUBE_SESSION_COOKIE_PATH:-/etc/secrets/www.youtube.com_cookies.txt}:/app/www.youtube.com_cookies.txt:rw
|
||||||
|
|||||||
@ -110,7 +110,7 @@ async fn run_command_in_tempdir(cmd: &str, args: &[&str]) -> Result<DownloadResu
|
|||||||
/// - Propagates `run_command_in_tempdir` errors.
|
/// - Propagates `run_command_in_tempdir` errors.
|
||||||
#[cfg(feature = "instagram")]
|
#[cfg(feature = "instagram")]
|
||||||
pub async fn download_instagram(url: impl Into<String>) -> Result<DownloadResult> {
|
pub async fn download_instagram(url: impl Into<String>) -> Result<DownloadResult> {
|
||||||
let base_args = ["--extractor-args", "instagram:"];
|
let base_args = ["-t", "mp4", "--extractor-args", "instagram:"];
|
||||||
let mut args = base_args
|
let mut args = base_args
|
||||||
.iter()
|
.iter()
|
||||||
.map(ToString::to_string)
|
.map(ToString::to_string)
|
||||||
@ -134,7 +134,7 @@ pub async fn download_instagram(url: impl Into<String>) -> Result<DownloadResult
|
|||||||
/// - Propagates `run_command_in_tempdir` errors.
|
/// - Propagates `run_command_in_tempdir` errors.
|
||||||
#[cfg(feature = "tiktok")]
|
#[cfg(feature = "tiktok")]
|
||||||
pub async fn download_tiktok(url: impl Into<String>) -> Result<DownloadResult> {
|
pub async fn download_tiktok(url: impl Into<String>) -> Result<DownloadResult> {
|
||||||
let base_args = ["--extractor-args", "tiktok:"];
|
let base_args = ["-t", "mp4", "--extractor-args", "tiktok:"];
|
||||||
let mut args = base_args
|
let mut args = base_args
|
||||||
.iter()
|
.iter()
|
||||||
.map(ToString::to_string)
|
.map(ToString::to_string)
|
||||||
@ -158,7 +158,7 @@ pub async fn download_tiktok(url: impl Into<String>) -> Result<DownloadResult> {
|
|||||||
/// - Propagates `run_command_in_tempdir` errors.
|
/// - Propagates `run_command_in_tempdir` errors.
|
||||||
#[cfg(feature = "twitter")]
|
#[cfg(feature = "twitter")]
|
||||||
pub async fn download_twitter(url: impl Into<String>) -> Result<DownloadResult> {
|
pub async fn download_twitter(url: impl Into<String>) -> Result<DownloadResult> {
|
||||||
let args = ["--extractor-args", "twitter:", &url.into()];
|
let args = ["-t", "mp4", "--extractor-args", "twitter:", &url.into()];
|
||||||
run_command_in_tempdir("yt-dlp", &args).await
|
run_command_in_tempdir("yt-dlp", &args).await
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,22 +169,29 @@ pub async fn download_twitter(url: impl Into<String>) -> Result<DownloadResult>
|
|||||||
/// - Propagates `run_command_in_tempdir` errors.
|
/// - Propagates `run_command_in_tempdir` errors.
|
||||||
#[cfg(feature = "youtube")]
|
#[cfg(feature = "youtube")]
|
||||||
pub async fn download_youtube(url: impl Into<String>) -> Result<DownloadResult> {
|
pub async fn download_youtube(url: impl Into<String>) -> Result<DownloadResult> {
|
||||||
let args = [
|
let base_args = [
|
||||||
"--no-playlist",
|
"--no-playlist",
|
||||||
"-t",
|
"-t",
|
||||||
"mp4",
|
"mp4",
|
||||||
"--restrict-filenames",
|
"--restrict-filenames",
|
||||||
"-o",
|
"-o",
|
||||||
"%(title)s.%(ext)s",
|
"%(title)s.%(ext)s",
|
||||||
"--no-warnings",
|
|
||||||
"--quiet",
|
|
||||||
"-f",
|
|
||||||
"--postprocessor-args",
|
"--postprocessor-args",
|
||||||
"ffmpeg:-vf setsar=1 -c:v libx264 -crf 28 -preset ultrafast -maxrate 800k -bufsize 1600k -vf scale=854:480 -c:a aac -b:a 64k -movflags +faststart",
|
"ffmpeg:-vf setsar=1 -c:v libx264 -crf 20 -preset veryfast -c:a aac -b:a 128k -movflags +faststart",
|
||||||
&url.into(),
|
|
||||||
];
|
];
|
||||||
|
let mut args = base_args
|
||||||
|
.iter()
|
||||||
|
.map(ToString::to_string)
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
run_command_in_tempdir("yt-dlp", &args).await
|
if let Ok(cookies_path) = env::var("YOUTUBE_SESSION_COOKIE_PATH") {
|
||||||
|
args.extend(["--cookies".into(), cookies_path]);
|
||||||
|
}
|
||||||
|
args.push(url.into());
|
||||||
|
|
||||||
|
let args_ref = args.iter().map(String::as_ref).collect::<Vec<_>>();
|
||||||
|
|
||||||
|
run_command_in_tempdir("yt-dlp", &args_ref).await
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Post-process a `DownloadResult`.
|
/// Post-process a `DownloadResult`.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user