Bunu Neden İnşa Ettim?
"Twitch ve Kick gibi platformlarda eşzamanlı izleme oturumları (viewing sessions) oluşturmak; proxy yönetimini, alt süreç (subprocess) kontrolünü ve ciddi bellek kısıtlamalarını yönetmeyi gerektirir. Puppeteer gibi hantal tarayıcı otomasyonları kullanmak yerine bu native Go aracını geliştirdim. Temel amaç, `streamlink` ve `mpv` örneklerinin yaşam döngüsünü, proxy rotasyonunu ve dinamik pencere yönetimini minimum sistem yüküyle (overhead) otonom hale getirmektir."
Mimari & Kararlar
Sistem, Go'nun eşzamanlılık (concurrency) yapıtaşları (`goroutines` ve `sync.WaitGroup`) üzerine inşa edilmiştir. Orkestratör, `exec.CommandContext` üzerinden `streamlink` alt süreçlerini başlatan worker'lar dağıtır. İşlem yaşam döngüleri ve güvenli kapanma (graceful teardown - SIGTERM/SIGINT yakalama) mekanizmaları Go'nun `context` ağacı ile yönetilir, bu da zombi process oluşumunu kesin olarak engeller. Motor, `mpv` pencereleri için dinamik X/Y uzamsal geometrisi hesaplar ve node başına RAM tüketimini minimize etmek için önbelleksiz (cacheless), düşük gecikmeli oynatma profillerini zorunlu kılar.
Temel Özellikler
- 01.Context farkındalığına sahip, alt süreçleri güvenle senkronize eden ve sonlandıran goroutine tabanlı worker havuzu
- 02.Doğrudan Streamlink parametrelerine enjekte edilen otonom proxy rotasyonu (SOCKS5/HTTP)
- 03.`mpv` pencerelerinin ekranda çakışmasını önleyen matematiksel uzamsal geometri hesaplaması
- 04.Uygulama sonlandığında tüm child process'leri temiz bir şekilde kapatan kararlı OS sinyal (interrupt) yönetimi