Files
hDM/README.md
2026-05-09 11:38:04 +03:00

82 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# hOLOlu Download Manager (hDM)
Modern, hızlı ve kullanıcı dostu, .NET 8 ve WPF tabanlıı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 `BrowserBridge` teknolojisi 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:**ı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 `Scope` tabanlı 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:
```powershell
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](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.reg` dosyasına sağ tıklayıp **Birleştir (Merge)** diyerek kayıt defteri ayarlarını uygulayın.
* *Not: Kayıt defterindeki `path` değerinin derlediğiniz `DownloadManager.BrowserBridge.exe` dosyası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-extension` klasörünü seçerek yükleyebilirsiniz.
* **Chrome Web Store ID:** Eklenti yayınlandığında sabitlenen ID'yi `manifest.json` içindeki `allowed_origins` kı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:
- [x] **Stabilite:** DbContext eşzamanlılık (concurrency) hataları `Transient` servis ömrü ve `Scope` yönetimi ile tamamen çözüldü.
- [x] **Kuyruk Kontrolü:** "Tümünü Duraklat" komutunun ardından indirmelerin kendiliğinden tekrar başlaması sorunu, veritabanı durum kontrolü ile giderildi.
- [x] **Açılış Hızı:** Uygulama açıldığında bekleyen indirmelerin otomatik başlaması engellenerek sistem kaynakları korundu.
- [x] **Görsel Detaylar:** Alt kısma indirme durumlarını (Tamamlanan, Hata, Aktif vb.) özetleyen detaylı bir durum çubuğu eklendi.
- [x] **Tekil Örnek:** Tarayıcıdan gelen çoklu tetiklemelerin arka planda süreç (process) biriktirmesi `Mutex` ile 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