İçeriğe geç
Tüm projeler
Bot & OtomasyonAçık kaynak

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

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ı

Diller
Çatılar & kütüphaneler

Performans & metrikler

  • 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

Neden geliştirdim?

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

  1. 01yt-dlp stdout verisini Regex ile çözümleyerek asenkron, gerçek zamanlı (real-time) Telegram ilerleme bildirimleri
  2. 02Boyut limiti aşıldığında otonom olarak tetiklenen FFmpeg H.264/AAC downsampling ve kompresyon hattı
  3. 03TELEGRAM_API_URL desteği ile 50MB sınırını aşan Local Telegram Server entegrasyonu
  4. 04Disk corruption'ı kökünden engelleyen, geçici dosya (tmp) tabanlı asenkron atomik I/O algoritması
  5. 05Basit ve katı RwLock tabanlı In-Memory kullanıcı yetkilendirme ve denetim (audit log) sistemi

Teknik değerlendirme

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.