Как один разработчик решил переписать IDM на Python и что из этого вышло
Вы когда-нибудь задумывались, почему в 2025 году мы всё ещё ищем «тот самый» идеальный загрузчик? Казалось бы, браузеры умеют качать файлы, есть классический IDM, есть консольный aria2. Но каждый раз всплывают нюансы: то интерфейс застрял в эпохе Windows XP, то скорость режется без видимых причин, то расширение для браузера отваливается после очередного обновления.
Недавно я наткнулся на Ghost-Downloader-3. Это проект китайского разработчика XiaoYouChR, который изначально создавался как небольшая утилита для помощи знакомому блогеру с Bilibili. В итоге хобби переросло в полноценный кроссплатформенный менеджер закачек с открытым исходным кодом.
Что внутри призрачного загрузчика
Автор честно признается в README, что это его первый серьезный проект на Python. Обычно такая фраза пугает, но здесь ситуация обратная. Вместо того чтобы городить велосипеды, разработчик собрал под капотом отличный стек: PySide6 для интерфейса, curl-cffi для работы с сетевыми запросами (умеет имитировать отпечатки браузеров) и Nuitka для компиляции всего этого добра в быстрый бинарник.
Главная фишка, которую заявляет автор — «интеллектуальное сегментирование в стиле IDM». Суть в том, что файл разбивается на части и качается в несколько потоков, но при этом Ghost-Downloader-3 старается избегать долгой стадии финальной склейки файлов, которая часто бесит в других качалках.
Чем он может быть полезен
Если вы привыкли к минимализму aria2, Ghost-Downloader-3 может показаться избыточным. Но у него есть несколько козырей, которые делают жизнь проще.
Во-первых, это кроссплатформенность. Проект одинаково бодро заводится на Windows (даже на старой доброй «семерке»), Linux и macOS. Для пользователей Arch Linux даже завезли пакеты в AUR, что всегда приятно.
Во-вторых, здесь реализован так называемый AI Smart Boost. Звучит как маркетинговый шум, но на деле это алгоритм, который динамически управляет количеством соединений и размером чанков в зависимости от стабильности канала и ответа сервера. В моих тестах это действительно помогало выжать максимум из серверов, которые любят обрывать соединение при слишком агрессивной многопоточности.
В-третьих, интерфейс. Он выполнен в стиле Fluent Design. Выглядит современно, поддерживает темную тему из коробки и не перегружен миллионом кнопок, назначение которых понятно только автору.
Техническая начинка и планы
Интересно наблюдать за тем, как проект эволюционирует архитектурно. Сейчас автор активно переезжает с классической многопоточности на корутины (asyncio) и планирует переход с архитектуры MVC на MVVM. Для Python-проекта с GUI это правильный шаг, который должен заметно снизить потребление памяти.
В дорожной карте значатся любопытные вещи:
- Полноценная система плагинов. Учитывая, что это Python, дописывать поддержку специфических сервисов (вроде того же YouTube или облачных хранилищ) будет очень просто.
- Поддержка Magnet-ссылок и торрентов через libtorrent.
- Улучшенное расширение для браузера, чтобы перехватывать закачки «на лету».
Стоит ли его пробовать
Проект сейчас находится в стадии активной разработки, и автор прямо говорит, что «косяков еще хватает». Если вам нужен инструмент «поставил и забыл» для критически важной работы, возможно, стоит подождать версии 4.0.
Однако, если вы ищете легкую, современную альтернативу тяжеловесным комбайнам или вам просто интересно посмотреть, как на Python пишут производительный софт с красивым GUI — Ghost-Downloader-3 определенно заслуживает места в ваших закладках.
Особенно он пригодится тем, кто:
- Часто качает файлы с серверов с ограничением скорости на один поток.
- Работает в разных ОС и хочет иметь одинаковый инструмент везде.
- Любит софт с открытым кодом, который можно подкрутить под себя.
Посмотреть исходники и скачать бинарники можно в репозитории проекта. Не забудьте заглянуть в раздел Releases, там лежат готовые сборки под все популярные системы.
