hOLOlu Download Manager (hDM)
Modern, hızlı ve kullanıcı dostu, .NET 8 ve WPF tabanlı açık kaynaklı bir indirme yöneticisidir.
🚀 Öne Çıkan Özellikler
- Segmentli İndirme: Dosyaları parçalara bölerek maksimum bant genişliği ile indirme sağlar.
- Hız Limitleme (Speed Throttling): Kullanıcı tanımlı hız limiti (KB/s) belirleyerek ağ trafiğini kontrol etme imkanı.
- Otomatik Yeniden Deneme (Auto-Retry): Kopan bağlantılarda veya hata veren indirme parçalarında artan gecikme (exponential backoff) süreleriyle otomatik tekrar deneme.
- Kesintiye Uğrayan İndirmelere Devam Etme (Resuming): İndirmeyi duraklattığınızda ve daha sonra devam ettirdiğinizde, tam kaldığı yerden segment bazlı veya tekil devam edebilme.
- Tarayıcı Entegrasyonu: Özel browser eklentisi (Chrome/Edge) ve
BrowserBridgeteknolojisi ile tarayıcıdaki linkleri otomatik yakalama. - Site İncele (Site Grabber): Bir web sitesindeki indirilebilir tüm dosyaları analiz edip listeleme ve seçilenleri tek tıkla indirme.
- Canlı Hız Grafiği: Ana pencerenin üst kısmında, son 30 saniyelik toplam indirme hızını gösteren interaktif grafik.
- Akıllı Dosya Adı Algılama: Karmaşık yönlendirmeler (redirect) ve dinamik URL'lerden gerçek dosya adını otomatik tespit eder.
- Sistem Tepsisi (Systray) Desteği: Uygulama kapandığında sistem tepsisine küçülür, arka planda çalışmaya devam eder.
- Gelişmiş Sıralama ve Filtreleme: İndirmeleri tarihe, boyuta, duruma veya isme göre akıllıca sıralar; kategori bazlı filtreleme yapar.
- Kullanıcı Arayüzü Özelleştirme: Açık/Koyu tema desteği, kategori panelini gizleme/gösterme ve sütun genişliklerini otomatik kaydetme.
- Detaylı Durum Çubuğu: Toplam, Tamamlanan, Aktif, Duraklatılan ve Hatalı indirme sayılarını anlık olarak gösteren renkli istatistik paneli.
- Akıllı Kuyruk Yönetimi: Uygulama açılışında tüm indirmelerin otomatik başlamasını engelleyen, kullanıcı kontrolünde "Bekleyenleri Başlat" ve "Tümünü Duraklat" özellikleri.
- Tekil Örnek (Single Instance): Uygulamanın birden fazla kopyasının açılmasını engelleyen Mutex tabanlı koruma.
🛠 Teknik Mimari
Uygulama modern yazılım prensipleri (Clean Architecture) ve MVVM deseni üzerine inşa edilmiştir:
- DownloadManager.Core: İndirme motoru, Hız Sınırlayıcı (SpeedThrottler), HTTP protokol yönetimi, SQLite veritabanı katmanı ve temel modelleri içerir.
- DownloadManager.WPF: CommunityToolkit.Mvvm kullanılarak geliştirilmiş, ModernWpf UI kütüphanesi ile zenginleştirilmiş kullanıcı arayüzü.
- DownloadManager.BrowserBridge: Tarayıcı eklentisinden gelen verileri Named Pipe üzerinden ana (
hDM) uygulamaya aktaran hafif köprü uygulaması. - Veritabanı: Ayarlar ve indirme geçmişi SQLite üzerinde Entity Framework Core ile yönetilir. Arka plan işlemleri için
Scopetabanlı asenkron erişim ile yüksek stabilite sağlanmıştır.
📦 Kurulum ve Çalıştırma
Gereksinimler
- .NET 8.0 SDK (Eğer Self-Contained olarak derlenmediyse .NET Desktop Runtime 8.0 gereklidir)
- Windows 10/11
- Google Chrome veya Microsoft Edge (Eklenti için)
Derleme
Proje kök dizininde aşağıdaki komutu kullanarak Release modunda derleme yapabilirsiniz:
dotnet build ./src/DownloadManager.sln -c Release
Daha gelişmiş dağıtım seçenekleri (Self-Contained veya Advanced Installer kullanımı) için lütfen docs/DEPLOYMENT.md rehberini okuyun.
🧩 Tarayıcı Eklentisi Kurulumu
hDM'nin tarayıcı ile entegre çalışabilmesi için aşağıdaki iki adımı tamamlamanız gerekir:
1. Köprü Uygulamasını Kaydetme (Windows Registry)
Tarayıcının eklenti üzerinden ana uygulama ile konuşabilmesi için "Native Messaging" köprüsünü Windows'a tanıtmalısınız:
src/DownloadManager.BrowserBridge/register_bridge.regdosyasına sağ tıklayıp Birleştir (Merge) diyerek kayıt defteri ayarlarını uygulayın.- Not: Kayıt defterindeki
pathdeğerinin derlediğinizDownloadManager.BrowserBridge.exedosyasının gerçek yolu ile eşleştiğinden emin olun.
2. Eklentiyi Tarayıcıya Yükleme
- Chrome Web Store üzerinden yükleyebilir veya geliştirici modunda
browser-extensionklasörünü seçerek yükleyebilirsiniz. - Chrome Web Store ID: Eklenti yayınlandığında sabitlenen ID'yi
manifest.jsoniçindekiallowed_originskısmına eklemeyi unutmayın.
🖱 Kullanım
- Otomatik Yakalama: Eklenti yüklendikten sonra tarayıcıda sağ tık menüsünden "hDM ile indir" diyerek veya desteklenen uzantılara tıklayarak otomatik yakalama sağlayabilirsiniz.
- Site İncele: Sayfa içindeyken sağ tıklayıp "Siteyi hDM ile incele" diyerek sayfadaki tüm dosyaları topluca analiz edebilirsiniz.
- Kuyruk Yönetimi: "Bekleyenleri Başlat" butonu ile duraklatılmış tüm indirmeleri sıraya alabilir, "Tümünü Duraklat" ile ağ trafiğini anında durdurabilirsiniz.
- Pano Desteği: Herhangi bir linki kopyalayıp hDM içindeki "Ekle" butonuna bastığınızda link otomatik olarak yapıştırılır.
📈 Son Durum ve İyileştirmeler
Son yapılan güncellemeler ile:
- Stabilite: DbContext eşzamanlılık (concurrency) hataları
Transientservis ömrü veScopeyönetimi ile tamamen çözüldü. - Kuyruk Kontrolü: "Tümünü Duraklat" komutunun ardından indirmelerin kendiliğinden tekrar başlaması sorunu, veritabanı durum kontrolü ile giderildi.
- Açılış Hızı: Uygulama açıldığında bekleyen indirmelerin otomatik başlaması engellenerek sistem kaynakları korundu.
- Görsel Detaylar: Alt kısma indirme durumlarını (Tamamlanan, Hata, Aktif vb.) özetleyen detaylı bir durum çubuğu eklendi.
- Tekil Örnek: Tarayıcıdan gelen çoklu tetiklemelerin arka planda süreç (process) biriktirmesi
Mutexile engellendi.
🛡 Güvenlik ve Gizlilik
hDM, kullanıcı verilerini sadece yerel SQLite veritabanında saklar. Şifreler ve kimlik bilgileri ProtectedData (DPAPI) ile Windows seviyesinde şifrelenerek korunur.
Geliştirici: hOLOlu
Lisans: MIT