Çok parçalı indirme yöneticisi · Python + Tkinter
32 parçaya kadar paralel indirme, duraklat/devam, kuyruk ve zamanlama, otomatik kategoriler, tarayıcı köprüsü, web sayfası ve playlist çözümleme (yt-dlp) — hepsi tek, bağımsız, MIT lisanslı modülde.
Varsayılan 8, en fazla 32 parça. 206 Range ile paralel segment; sunucu desteklemiyorsa otomatik tek parçaya düşer.
Her noktadan duraklatıp kaldığı yerden devam; ilerleme dosyaya yazılır, uygulama kapansa bile kaybolmaz.
Eşzamanlılık sınırı, saatlik/günlük tekrarlayan indirmeler, kuyruğu tek tuşla durdur/başlat.
Video, müzik, arşiv, program, belge… uzantı ve anahtar kelimeye göre klasörlere ayırır; kurallar tamamen kendi kural setimizle çalışır.
Uzantısız linklerde og:video ve kaynaklar taranır; YouTube
vb. playlist'ler tek görevden tüm videolara genişler.
YouTube, Instagram, X (Twitter), Facebook, TikTok, Vimeo için tek tıkla ekleme penceresi ve Siteler menüsü.
Yerel HTTP köprüsü (127.0.0.1:8877) + pano izleme ile
bağlantıları tarayıcıdan tek tuşla kuyruğa taşıyın.
Bir sayfadaki tüm medya bağlantılarını derinlik filtresiyle tarar ve toplu olarak ekler.
GUI olmadan DownloadManager sınıfını kendi programınıza
bağlayabilirsiniz; ayarlar ve geçmiş kalıcıdır.
| Girdi | Davranış |
|---|---|
Doğrudan dosya (.zip, .mp4, ...) |
Çok parçalı HTTP/FTP indirme |
.html / .htm uzantılı bağlantı |
Sayfa dosya olarak iner |
| Web sayfası (uzantısız, PHP, ...) | og:video / <source> / JSON-LD ile medya adresi çözümlenir |
| Medya bulunamayan sayfa | Net hata mesajı, dosya oluşturmaz |
| Playlist / video sayfası (YouTube vb.) | yt-dlp ile liste çözümlenir, tüm videolar kuyruğa eklenir |
| Ses+video ayrı akış (DASH) | yt-dlp indirir, ffmpeg ile tek dosyada birleştirir |
Video/playlist için opsiyonel yt-dlp + ffmpeg
gerekir; kurulu değilse normal indirmeler sorunsuz devam eder. Gizli/kişisel
içerikte (Instagram, Facebook) Ayarlar → Çerez alanına tarayıcı çerezini
girmeniz gerekir.
| Dosya | Görev |
|---|---|
engine.py | Çok parçalı indirme motoru (HTTP/FTP, duraklat/devam, yeniden deneme, ayna URL, dış indirme modu) |
manager.py | Kuyruk, zamanlayıcı, kategoriler, grabber, köprü, geçmiş, ayarlar |
extractor.py | Web sayfası medya çözümleme, yt-dlp/ffmpeg köprüsü, playlist genişletme |
gui.py | Tkinter arayüz: kategori paneli, ikonlu araç çubuğu, hızlı site butonları |
util.py / notify.py | Kategori tespiti, biçimlendirme, sesli bildirim |
tests/ | 108 kontrol (motor, FTP, köprü, yeniden başlatma, GUI, sayfa/medya) |
git clone https://github.com/RetroNyym/Retro-Download-Manager.git
cd Retro-Download-Manager
python -m pip install -r requirements.txt
# video/playlist desteği için (opsiyonel):
python -m pip install yt-dlp
winget install Gyan.FFmpeg
Zip olarak indirmek için İndirme sayfasına gidin; eski sürümler Releases sayfasındadır.
python -m download_manager # GUI
baslat_gui.bat # Windows kısayolu
# kütüphane olarak:
from download_manager import DownloadManager
mgr = DownloadManager(max_tasks=4)
mgr.add(["https://ornek.com/dosya.zip", "https://ornek.com/bolum-01.mkv"],
segments=16, speed_limit=2048) # parça, KB/sn
mgr.start()
Durum ve sonuçlar mgr.tasks üzerinden okunur; yeniden
başlatıldığında yarım kalan indirmeler kaldığı yerden devam eder.
| Dosya | Kapsam | Kontrol |
|---|---|---|
test_download_manager.py | Çok parçalı, Range yok, bilinmeyen boyut, duraklat/devam, iptal, kuyruk, grabber | 37 |
test_restart_resume.py | Kapanınca duraklat → açılınca devam + gerçek internet indirmesi | 8 |
test_ftp.py | FTP parça/duraklat/iptal | 10 |
test_bridge.py | Köprü uçları (/add, /links, /status) | 7 |
test_gui.py | Diyaloglar, hızlı site butonları, arayüz | 24 |
test_page_media.py | Sayfa çözümleme, hata davranışı, site adları | 22 |
| Toplam | 108 |
python tests/test_download_manager.py
python tests/test_gui.py # grafik oturum gerekir
python -m pyflakes download_manager
| Tarayıcı entegrasyonu | Eklenti yerine yerel köprü + pano izleme |
Range desteklemeyen sunucu | Paralel segment kullanılmaz, tek parça iner |
| Video indirmeleri | yt-dlp tarafından yürütülür; duraklat/devam yerine iptal → yeniden başlatma mantığı |
| FTPS | Deneme amaçlı; bazı sunucularda MLSD yerine NLST'ye düşer |
| Hız sınırı | İstemci tarafıdır; sunucunun izin verdiği kadar hızlanır |