Как один разработчик решил переписать IDM на Python и что из этого вышло

06 мар 2026
9,197
591
32
2 недели

Вы когда-нибудь задумывались, почему в 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, там лежат готовые сборки под все популярные системы.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.