Qobuz Streamrip Tools
Набор утилит для Windows для автоматизации работы со Streamrip и загрузками из Qobuz.
Проект объединяет:
- программу
QobuzWatchdog, которая последовательно обрабатывает список ссылок через Streamrip и перезапускает зависший процесс; - очистку базы истории Streamrip;
- приведение скачанных FLAC-файлов к CD-качеству;
- группировку нескольких альбомов одного исполнителя в общую папку.
Используйте проект только для контента, который вы имеете право скачивать и обрабатывать, и в соответствии с условиями используемых сервисов.
Структура проекта
qobuz-streamrip-tools/
├── QobuzWatchdog/
│ ├── Properties/
│ ├── App.config
│ ├── Program.cs
│ └── QobuzWatchdog.csproj
│
├── scripts/
│ ├── Clear-StreamripDb.bat
│ ├── Convert-FlacToCD.ps1
│ └── GroupAlbumsByArtist.ps1
│
├── tools/
│ └── .gitkeep
│
├── downloads/
│ └── .gitkeep
│
├── data/
│ └── urls.txt
│
├── QobuzWatchdog.sln
├── README.md
├── LICENSE
└── .gitignore
Общий рабочий процесс
data/urls.txt
↓
QobuzWatchdog
↓
Streamrip
↓
downloads/
↓
Convert-FlacToCD.ps1
↓
GroupAlbumsByArtist.ps1
Все загрузки Streamrip направляются в папку downloads в корне проекта.
QobuzWatchdog при каждом запуске проверяет %APPDATA%\streamrip\config.toml и устанавливает параметр downloads.folder в путь к локальной папке downloads.
Скачать все зависимости:
Основная зависимость — Streamrip
Streamrip:
https://github.com/nathom/streamrip
Для актуальной версии Streamrip необходим Python 3.10 или новее и pip.
Установка:
pip3 install streamrip --upgrade
Проверка:
rip
Перед первым использованием необходимо настроить Streamrip и авторизацию Qobuz.
Для Qobuz требуется подходящая подписка, позволяющая получать соответствующее качество аудио.
Где ищется Streamrip
QobuzWatchdog ищет rip.exe в следующем порядке:
tools\rip.exe;- системная переменная
PATH.
Если Streamrip установлен через pip, обычно достаточно, чтобы каталог Python Scripts был добавлен в PATH.
FFmpeg
Для Convert-FlacToCD.ps1 необходимы:
ffmpeg.exe
ffprobe.exe
Сборка FFmpeg для Windows:
https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z
После распаковки файлы находятся в каталоге bin.
Их можно положить непосредственно в:
tools/
Скрипт ищет ffmpeg.exe и ffprobe.exe:
- в
tools; - затем в системном
PATH.
Зависимости по компонентам
| Компонент | Streamrip | FFmpeg | FFprobe | PowerShell | .NET Framework |
|---|---|---|---|---|---|
QobuzWatchdog |
✓ | — | — | — | 4.7.2 |
Clear-StreamripDb.bat |
✓ | — | — | — | — |
Convert-FlacToCD.ps1 |
— | ✓ | ✓ | 5.1+ | — |
GroupAlbumsByArtist.ps1 |
— | — | — | 5.1+ | — |
QobuzWatchdog
QobuzWatchdog читает ссылки из:
data/urls.txt
Каждая ссылка должна находиться на отдельной строке.
Пример:
https://www.qobuz.com/...
https://open.qobuz.com/...
Строки, начинающиеся с #, игнорируются.
Программа хранит состояние в:
data/completed_urls.txt
data/failed_urls.txt
Эти файлы создаются автоматически и не добавляются в Git.
Что делает Watchdog
Для каждой ссылки программа:
- запускает
rip --no-progress --verbose url "<URL>"; - отслеживает вывод процесса;
- если Streamrip долго не выводит ничего, завершает дерево процесса;
- повторяет попытку;
- сохраняет успешно обработанные ссылки;
- повторяет незавершённые ссылки в следующих проходах.
Текущие параметры находятся в Program.cs:
private const int MaxRunsPerUrl = 10;
private const int MaxRounds = 20;
private const int IdleLimitSeconds = 60;
private const int RestartDelaySeconds = 3;
Сборка QobuzWatchdog
Проект рассчитан на:
.NET Framework 4.7.2
Откройте:
QobuzWatchdog.sln
в Visual Studio и соберите конфигурацию Release.
Каталоги .vs, bin и obj исключены из Git.
Очистка базы Streamrip
Запустите:
scripts\Clear-StreamripDb.bat
Скрипт удаляет:
%APPDATA%\streamrip\downloads.db
%APPDATA%\streamrip\failed_downloads.db
Это сбрасывает историю скачанных и неудачно обработанных элементов Streamrip.
Конвертация FLAC в CD-качество
Запустите:
.\scripts\Convert-FlacToCD.ps1
Скрипт автоматически обрабатывает:
downloads/
Целевые параметры:
FLAC
16 бит
44,1 кГц
2 канала
Скрипт:
- рекурсивно ищет FLAC;
- пропускает уже подходящие файлы;
- сохраняет метаданные и встроенные изображения;
- создаёт временный файл;
- проверяет результат через FFprobe;
- только после успешной проверки заменяет исходник;
- при ошибке пытается восстановить исходный файл.
Группировка альбомов по исполнителям
Запустите:
.\scripts\GroupAlbumsByArtist.ps1
Скрипт работает с папкой downloads.
Он ожидает названия альбомов в формате:
Исполнитель - Альбом
Если у одного исполнителя найдено два или больше альбомов:
downloads/
├── Исполнитель/
│ ├── Исполнитель - Альбом 1/
│ └── Исполнитель - Альбом 2/
Если альбом только один, его папка остаётся на первом уровне.
Папка downloads
Вся музыка находится в:
downloads/
Содержимое этой папки исключено из Git:
downloads/*
!downloads/.gitkeep
Папка tools
В tools можно положить локальные зависимости:
rip.exe
ffmpeg.exe
ffprobe.exe
Бинарные файлы из tools не добавляются в Git.
PowerShell
Скрипты рассчитаны на Windows PowerShell 5.1 или новее.
Если Windows блокирует запуск локальных .ps1, проверьте текущую политику:
Get-ExecutionPolicy
При необходимости для текущего пользователя можно использовать:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
Меняйте политику выполнения только если понимаете последствия этой настройки.
Лицензия
Исходный код этого репозитория распространяется по лицензии MIT.
Streamrip и FFmpeg являются отдельными проектами и распространяются на условиях собственных лицензий.