fix(instagram): session cookie

This commit is contained in:
Kristofers Solo 2025-10-27 10:47:52 +02:00
parent 02133b79dd
commit 8e339e53c7
Signed by: kristoferssolo
GPG Key ID: 74FF8144483D82C8
2 changed files with 7 additions and 34 deletions

View File

@ -7,11 +7,9 @@ services:
BINARY_NAME: tg-relay-rs BINARY_NAME: tg-relay-rs
environment: environment:
TELOXIDE_TOKEN: ${TELOXIDE_TOKEN} TELOXIDE_TOKEN: ${TELOXIDE_TOKEN}
COOKIES_PATH: ${YT_COOKIES_PATH:-/app/yt-cookies.txt} IG_SESSION_COOKIE_PATH: /app/www.instagram.com_cookies.txt
SESSION_PATH: ${IG_SESSION_PATH:-/app/ig-session}
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
- /etc/secrets/ig-session:${IG_SESSION_PATH:-/app/ig-session}:ro - ${IG_SESSION_COOKIE_PATH:-/etc/secrets/www.instagram.com_cookies.txt}:/app/www.instagram.com_cookies.txt:rw
- /etc/secrets/yt-cookies.txt:${YT_COOKIES_PATH:-/app/yt-cookies.txt}:rw

View File

@ -117,9 +117,8 @@ pub async fn download_instaloader(url: &str) -> Result<DownloadResult> {
.map(ToString::to_string) .map(ToString::to_string)
.collect::<Vec<_>>(); .collect::<Vec<_>>();
let cookies_path = env::var("COOKIES_PATH").ok(); if let Ok(cookies_path) = env::var("IG_SESSION_COOKIE_PATH") {
if let Some(cookies) = read_cookies_file(cookies_path) { args.extend(["--cookies".into(), cookies_path]);
args.extend(["--cookies".into(), cookies]);
} }
args.push(url.into()); args.push(url.into());
@ -136,7 +135,7 @@ pub async fn download_instaloader(url: &str) -> Result<DownloadResult> {
/// - Propagates `run_command_in_tempdir` errors. /// - Propagates `run_command_in_tempdir` errors.
#[cfg(feature = "youtube")] #[cfg(feature = "youtube")]
pub async fn download_ytdlp(url: &str) -> Result<DownloadResult> { pub async fn download_ytdlp(url: &str) -> Result<DownloadResult> {
let base_args = [ let args = [
"--no-playlist", "--no-playlist",
"-t", "-t",
"mp4", "mp4",
@ -148,34 +147,10 @@ pub async fn download_ytdlp(url: &str) -> Result<DownloadResult> {
"-f", "-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 28 -preset ultrafast -maxrate 800k -bufsize 1600k -vf scale=854:480 -c:a aac -b:a 64k -movflags +faststart",
url,
]; ];
let mut args = base_args run_command_in_tempdir("yt-dlp", &args).await
.iter()
.map(ToString::to_string)
.collect::<Vec<_>>();
let cookies_path = env::var("COOKIES_PATH").ok();
if let Some(cookies) = read_cookies_file(cookies_path) {
args.extend(["--cookies".into(), cookies]);
}
args.push(url.into());
let args_ref = args.iter().map(String::as_ref).collect::<Vec<_>>();
run_command_in_tempdir("yt-dlp", &args_ref).await
}
fn read_cookies_file<P: AsRef<Path>>(cookies_path: Option<P>) -> Option<String> {
if let Some(cookie_path) = cookies_path {
let path = cookie_path.as_ref();
if path.exists() {
return Some(path.to_string_lossy().to_string());
}
warn!("Cookies file not found: {}", path.display());
}
None
} }
/// Post-process a `DownloadResult`. /// Post-process a `DownloadResult`.