Bot & Sistem Otomasyonu
Açık Kaynak

Yt-dlp & FFmpeg Telegram Medya Arşiv Botu (Rust)

RustShellTokioTeloxideyt-dlpFFmpegRegexSerde

YouTube ve X (Twitter) medyalarını indiren, boyut limitlerine göre asenkron FFmpeg işlemleri uygulayan ve Telegram yerel sunucuları (local bot API) üzerinden kullanıcılara sunan yetkilendirmeli bot motoru.

Teknoloji Yığını

RustShellTokioTeloxideyt-dlpFFmpegRegexSerde

Sistem Metrikleri

I/O işlemlerinde lock contention'ı (kilit çekişmesi) önlemek için bellek snapshot'ları alınıp disk yazım işlemi RwLock scope'u dışında yürütülür
Ağır video encode/decode işlemleri ayrı işletim sistemi proseslerine (spawn) devredildiği için Tokio'nun ana event-loop'u kesinlikle bloklanmaz
Sadece asenkron I/O ve Regex parsing kullanılarak bellek tüketimi minimumda tutulur

Bunu Neden İnşa Ettim?

"Kişisel veri arşivleme süreçlerinde X ve YouTube medyalarını indirmek için sürekli üçüncü parti, reklam dolu veya rate-limit uygulayan servislere bel bağlamak mühendislik açısından verimsizdi. Doğrudan Telegram üzerinden CLI araçlarını (yt-dlp, ffmpeg) asenkron alt süreçler (subprocesses) olarak orkestre eden, yetkisiz erişimleri engelleyen izole ve otonom bir bot mimarisi kurmak istedim."

Mimari & Kararlar

Çekirdek uygulama, teloxide framework'ü ve tokio asenkron runtime'ı üzerinde çalışır. Ağ I/O'su ve mesaj dinleme asenkron olarak yönetilirken, video indirme işlemi tokio::process::Command kullanılarak yt-dlp alt süreçlerine devredilir. İndirme süreci boyunca alt sürecin standart çıktısı (stdout) Regex ile anlık parse edilerek Telegram UI üzerinde dinamik bir ilerleme çubuğuna (progress bar) dönüştürülür. Dosya boyut sınırları aşıldığında, ffmpeg devreye girerek medyayı libx264 ve aac kodekleriyle donanım/yazılım tabanlı sıkıştırır (-movflags +faststart). Uygulama durumu (state), Arc<RwLock> ile thread-safe olarak bellekte tutulur ve diskte oluşabilecek bozulmaları (corruption) önlemek için atomik dosya işlemleri (rename syscall) ile diske yazılır.

Temel Özellikler

  • 01.yt-dlp stdout verisini Regex ile çözümleyerek asenkron, gerçek zamanlı (real-time) Telegram ilerleme bildirimleri
  • 02.Boyut limiti aşıldığında otonom olarak tetiklenen FFmpeg H.264/AAC downsampling ve kompresyon hattı
  • 03.TELEGRAM_API_URL desteği ile 50MB sınırını aşan Local Telegram Server entegrasyonu
  • 04.Disk corruption'ı kökünden engelleyen, geçici dosya (tmp) tabanlı asenkron atomik I/O algoritması
  • 05.Basit ve katı RwLock tabanlı In-Memory kullanıcı yetkilendirme ve denetim (audit log) sistemi
Bu proje, Rust asenkron ekosisteminin işletim sistemi alt süreçleriyle (subprocess) nasıl güvenli ve performanslı bir şekilde entegre edilebileceğini gösterir. tokio::process::Command ile stdout buffer'ının non-blocking (bloke etmeyen) şekilde okunup UI'a aktarılması, kullanıcı deneyimini doğrudan artırır. Ayrıca veritabanı kullanmamak adına JSON tabanlı yerel depolama tercih edilmiş; ancak concurrency kaynaklı dosya yozlaşmasını (corruption) engellemek için doğrudan işletim sistemi seviyesinde atomic rename operatörü (atomic_write) implemente edilmiştir.