Skip to content

Repository files navigation

Video Downloader Pro 5

Нативный загрузчик видео и аудио на C++20 / Qt 6 Widgets. Движок — yt-dlp с явным подключением Deno; объединение потоков и обработка аудио выполняются FFmpeg.

Возможности 5.0

  • Простые пресеты: Лучшее, 1080p, 720p, 480p и MP3.
  • Расширенный выбор после проверки ссылки: разрешение, кодек, частота кадров, оригинальное аудио и MP3 с целевым битрейтом 192/320 кбит/с. Оценка размера показывается при наличии данных; размер отдельного видеопотока подписан отдельно.
  • Очередь с ограничением параллельности, настоящим прогрессом и этапом обработки. Отмена остаётся отменой; неудачные и отменённые задачи можно повторять.
  • Незавершённая очередь сохраняется атомарно и восстанавливается после перезапуска. Закрытие приложения не удаляет скачанные файлы.
  • Метаданные: до трёх процессов одновременно, объединение одинаковых запросов и кеш на 128 ссылок. Ошибка проверки не запрещает загрузку с простым пресетом.
  • Завершённые карточки удаляются из интерфейса и памяти.
  • История до 500 записей: поиск, открытие файла/папки, повтор, копирование ссылки и удаление записи. Интерфейс показывает время MSK (UTC+3), хранение — UTC.
  • Фоновое обновление runtime с прогрессом, отменой сетевой стадии, таймаутом, SHA256 и откатом. FFmpeg и ffprobe заменяются вместе.
  • Диагностика с удалением секретов; журналы ограничены 2 МБ на файл и одной резервной копией.

Использование

Вставьте HTTP(S)-ссылку, выберите пресет и нажмите «Добавить в очередь». «Проверить» показывает название, автора, длительность и форматы. Расширенный выбор необязателен.

Ctrl+L — ссылка, Ctrl+I — проверка, Ctrl+D — добавить, Ctrl+O — папка загрузок, Ctrl+Q — выход.

«Инструменты» показывает версии, пути и целостность всех четырёх компонентов. Во время их использования конфликтующие обновления недоступны. Сетевую загрузку обновления можно отменить; стадия установки должна завершиться для сохранения целостности runtime.

Установка и пакеты

Опубликованные релизы доступны отдельно от этой рабочей ветки. Реализация 5.0 не означает публикацию нового релиза.

Локальная сборка создаёт:

  • dist/VideoDownloaderPro-<version>-win-x64.zip — переносная Windows-версия;
  • dist/VideoDownloaderPro-Setup-<version>.exe — установщик без обязательных прав администратора;
  • dist/VideoDownloaderPro-<version>-macos-x64.zip — macOS Intel;
  • SHA256SUMS-windows.txt / SHA256SUMS-macos.txt.

Qt и runtime входят в пакеты. Python для запуска приложения не нужен; стандартная библиотека Python используется только в скриптах подготовки релиза.

Данные и переход с 4.x

%LOCALAPPDATA%/VideoDownloaderPro/
├── runtime/             yt-dlp, Deno, ffmpeg/bin, manifest.json
├── data/settings.ini    совместимые ключи настроек
├── data/history.json    чтение прежнего массива, запись schema 1
├── data/queue.json      незавершённые задачи, schema 1
├── logs/                app.log, downloads.log, runtime.log
└── cache/               временные файлы обновлений

macOS использует ~/Library/Application Support/VideoDownloaderPro. Тесты и smoke задают отдельный VDP_DATA_ROOT — корневую папку данных приложения — и не затрагивают пользовательские настройки/runtime.

Повреждённая очередь сохраняется в .recovery-<id>.json; приложение сообщает об ошибке и продолжает запуск. Непонятный формат истории не перезаписывается. У прежних установленных инструментов целостность может быть неизвестной; проверенный пакет или обновление добавляют подтверждённый SHA256 в manifest.

Сборка и проверки

CMake 3.21+, Ninja, C++20-компилятор, Qt 6.6+ (Core, Widgets, Network, Test). Python 3.11+ нужен для packaging и его тестов. Локально проверяются Qt 6.8.3 / MSVC 2022 x64. Для MSVC используйте Developer PowerShell или окружение vcvars64.bat. Qt bin должен быть в PATH при запуске тестов.

cmake -S . -B build-cpp/pro5 -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$env:Qt6_DIR" -DBUILD_TESTING=ON
cmake --build build-cpp/pro5 --clean-first --parallel 4
ctest --test-dir build-cpp/pro5 --output-on-failure
python -m unittest discover -s scripts -p test_release_tools.py -v
python scripts/release_tools.py validate-lock

Тесты не обращаются к YouTube: используются локальные дочерние процессы, подставной HTTPS-транспорт и временные файлы; GUI проверяется через Qt Test. Packaging также проверяет настоящий yt-dlp на собственном видео с локального HTTP-сервера, извлечение MP3 через FFmpeg/ffprobe и запуск упакованного приложения с изолированными данными.

Windows требует Inno Setup 6:

./scripts/build_release_windows.ps1 -QtDir "$env:Qt6_DIR" -InnoSetupCompiler "$env:ISCC_PATH"

-SkipToolDownloads принимает только кеш с проверяемым manifest и совпадающими SHA256. Сборка использует build-cpp/pro5-package; другие каталоги сборок не очищаются.

На macOS:

QT_ROOT_DIR=/path/to/Qt/6.8.3/macos bash scripts/build_release.sh

Проверенные FFmpeg-пакеты Evermeet — Intel. На Apple Silicon для них требуется Rosetta; нативная совместимость этого runtime не заявляется. Сборку, smoke и подпись необходимо подтвердить на macOS.

Целостность и выпуск

runtime/toolchain-lock.json — общий источник артефактов для приложения и packaging. yt-dlp, Deno и Windows FFmpeg проверяются по HTTPS-документам SHA256 с выбором точного имени файла. Для macOS FFmpeg/ffprobe зафиксированы реальные SHA256 архивов, проверенных по подписям поставщика. Несовпадение, отсутствие контрольной суммы или неудачный запуск отменяют установку с сохранением предыдущего runtime.

Каноническая версия находится в CMake project(... VERSION ...); python scripts/release_tools.py version выводит её для скриптов. PR и push в main проверяют обе платформы. Только тег v<version> запускает выпуск, требующий успешных Windows/macOS jobs и прикладывающий оба пакета с SHA256SUMS. Локальные build-скрипты не делают push или публикацию.

Необязательная подпись: Windows — VDP_SIGN_CERT_PATH / VDP_SIGN_CERT_PASSWORD; macOS — VDP_MAC_SIGN_IDENTITY / VDP_MAC_NOTARY_PROFILE. Без них Windows-сборка неподписанная, macOS использует ad-hoc подпись. Секреты CI задаются вне репозитория.

О компонентах и обязанностях при распространении: THIRD_PARTY_NOTICES.md. Лицензия проекта от имени владельца не назначалась.

Плейлисты, субтитры, клипы, cookies браузера, proxy UI и самообновление приложения отложены как P2. Фактические acceptance gates и ограничения: отчёт реализации.

About

YouTube 4K Downloader

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages