Retro+ Download Manager

Ç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.

Python 3.11+ Windows · Linux · macOS 108 test kontrolü MIT lisansı Tek bağımlılık: requests
Reklam alanı

Özellikler

Çok parçalı indirme

Varsayılan 8, en fazla 32 parça. 206 Range ile paralel segment; sunucu desteklemiyorsa otomatik tek parçaya düşer.

Duraklat / devam / iptal

Her noktadan duraklatıp kaldığı yerden devam; ilerleme dosyaya yazılır, uygulama kapansa bile kaybolmaz.

Kuyruk ve zamanlayıcı

Eşzamanlılık sınırı, saatlik/günlük tekrarlayan indirmeler, kuyruğu tek tuşla durdur/başlat.

Otomatik kategoriler

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.

Web sayfası / playlist

Uzantısız linklerde og:video ve kaynaklar taranır; YouTube vb. playlist'ler tek görevden tüm videolara genişler.

Hızlı site butonları

YouTube, Instagram, X (Twitter), Facebook, TikTok, Vimeo için tek tıkla ekleme penceresi ve Siteler menüsü.

Tarayıcı köprü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.

Site Grabber

Bir sayfadaki tüm medya bağlantılarını derinlik filtresiyle tarar ve toplu olarak ekler.

Kütüphane olarak kullanım

GUI olmadan DownloadManager sınıfını kendi programınıza bağlayabilirsiniz; ayarlar ve geçmiş kalıcıdır.

Web sitesi ve video linkleri

GirdiDavranış
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.

Reklam alanı

Mimari

DosyaGörev
engine.pyÇok parçalı indirme motoru (HTTP/FTP, duraklat/devam, yeniden deneme, ayna URL, dış indirme modu)
manager.pyKuyruk, zamanlayıcı, kategoriler, grabber, köprü, geçmiş, ayarlar
extractor.pyWeb sayfası medya çözümleme, yt-dlp/ffmpeg köprüsü, playlist genişletme
gui.pyTkinter arayüz: kategori paneli, ikonlu araç çubuğu, hızlı site butonları
util.py / notify.pyKategori tespiti, biçimlendirme, sesli bildirim
tests/108 kontrol (motor, FTP, köprü, yeniden başlatma, GUI, sayfa/medya)

Kurulum

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.

Çalıştırma ve kütüphane kullanımı

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.

Testler

DosyaKapsamKontrol
test_download_manager.pyÇok parçalı, Range yok, bilinmeyen boyut, duraklat/devam, iptal, kuyruk, grabber37
test_restart_resume.pyKapanınca duraklat → açılınca devam + gerçek internet indirmesi8
test_ftp.pyFTP parça/duraklat/iptal10
test_bridge.pyKöprü uçları (/add, /links, /status)7
test_gui.pyDiyaloglar, hızlı site butonları, arayüz24
test_page_media.pySayfa çözümleme, hata davranışı, site adları22
Toplam108
python tests/test_download_manager.py
python tests/test_gui.py        # grafik oturum gerekir
python -m pyflakes download_manager

Sınırlamalar

Tarayıcı entegrasyonuEklenti yerine yerel köprü + pano izleme
Range desteklemeyen sunucuParalel segment kullanılmaz, tek parça iner
Video indirmeleriyt-dlp tarafından yürütülür; duraklat/devam yerine iptal → yeniden başlatma mantığı
FTPSDeneme 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