From 85f7b9d2fb1d11400c187fc117048fbeff6400eb Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sun, 28 Sep 2025 01:26:04 +0300 Subject: [PATCH] feat: add instagram session file --- docker-compose.yml | 6 ++++-- src/download.rs | 10 ++++++++++ src/error.rs | 9 +++++++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 5510414..a6d9743 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,9 +7,11 @@ services: BINARY_NAME: tg-relay-rs environment: TELOXIDE_TOKEN: ${TELOXIDE_TOKEN} - COOKIES_PATH: /app/yt-cookies.txt + COOKIES_PATH: ${YT_COOKIES_PATH:-/app/yt-cookies.txt} + SESSION_PATH: ${IG_SESSION_PATH:-/app/ig-session} RUST_LOG: ${RUST_LOG:-info} restart: unless-stopped volumes: - ./comments.txt:/app/comments.txt:ro - - /etc/secrets/yt-cookies.txt:/app/yt-cookies.txt:rw + - /etc/secrets/ig-session:${IG_SESSION_PATH:-/app/ig-session}:ro + - /etc/secrets/yt-cookies.txt:${YT_COOKIES_PATH:-/app/yt-cookies.txt}:rw diff --git a/src/download.rs b/src/download.rs index 68d60e6..271c337 100644 --- a/src/download.rs +++ b/src/download.rs @@ -8,6 +8,7 @@ use crate::{ use futures::{StreamExt, stream}; use std::{ cmp::min, + env, ffi::OsStr, fs::{self, metadata}, path::{Path, PathBuf}, @@ -109,7 +110,14 @@ async fn run_command_in_tempdir(cmd: &str, args: &[&str]) -> Result Result { + fn get_env_var(name: &str) -> Result { + env::var(name).map_err(|_| Error::env(name)) + } + let session_file = get_env_var("IG_SESSION_PATH")?; + let args = [ + "--sessionfile", + &session_file, "--dirname-pattern=.", "--no-metadata-json", "--no-compress-json", @@ -138,6 +146,8 @@ pub async fn download_ytdlp>( "%(title)s.%(ext)s", "--no-warnings", "--quiet", + "--postprocessor-args", + "ffmpeg:-vf setsar=1 -c:v libx264 -crf 20 -preset veryfast -c:a aac -b:a 128k -movflags +faststart", ]; let mut args = base_args diff --git a/src/error.rs b/src/error.rs index d68306d..15fdb87 100644 --- a/src/error.rs +++ b/src/error.rs @@ -26,8 +26,8 @@ pub enum Error { #[error("join error: {0}")] Join(#[from] tokio::task::JoinError), - #[error("rate limit exceeded")] - RateLimit, + #[error("environment variable `{0}` not found")] + EnvNotFound(String), #[error("other: {0}")] Other(String), @@ -53,6 +53,11 @@ impl Error { pub fn validation_falied(text: impl Into) -> Self { Self::ValidationFailed(text.into()) } + + #[inline] + pub fn env(text: impl Into) -> Self { + Self::EnvNotFound(text.into()) + } } pub type Result = std::result::Result;