Релиз v1.0.0

This commit is contained in:
2026-08-09 12:06:46 +03:00
commit c3b3ce9901
14 changed files with 2207 additions and 0 deletions
+328
View File
@@ -0,0 +1,328 @@
# Qobuz Streamrip Tools
Набор утилит для Windows для автоматизации работы со **Streamrip** и загрузками из **Qobuz**.
Проект объединяет:
- программу `QobuzWatchdog`, которая последовательно обрабатывает список ссылок через Streamrip и перезапускает зависший процесс;
- очистку базы истории Streamrip;
- приведение скачанных FLAC-файлов к CD-качеству;
- группировку нескольких альбомов одного исполнителя в общую папку.
> Используйте проект только для контента, который вы имеете право скачивать и обрабатывать, и в соответствии с условиями используемых сервисов.
## Структура проекта
```text
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
```
## Общий рабочий процесс
```text
data/urls.txt
↓
QobuzWatchdog
↓
Streamrip
↓
downloads/
↓
Convert-FlacToCD.ps1
↓
GroupAlbumsByArtist.ps1
```
Все загрузки Streamrip направляются в папку `downloads` в корне проекта.
`QobuzWatchdog` при каждом запуске проверяет `%APPDATA%\streamrip\config.toml` и устанавливает параметр `downloads.folder` в путь к локальной папке `downloads`.
## Скачать все зависимости:
[Скачать (.zip)](https://cloud.kolbox.duckdns.org/seafhttp/f/f918d0ca3aac4b4195de/?op=view)
## Основная зависимость — Streamrip
Streamrip:
https://github.com/nathom/streamrip
Для актуальной версии Streamrip необходим Python 3.10 или новее и `pip`.
Установка:
```powershell
pip3 install streamrip --upgrade
```
Проверка:
```powershell
rip
```
Перед первым использованием необходимо настроить Streamrip и авторизацию Qobuz.
Для Qobuz требуется подходящая подписка, позволяющая получать соответствующее качество аудио.
### Где ищется Streamrip
`QobuzWatchdog` ищет `rip.exe` в следующем порядке:
1. `tools\rip.exe`;
2. системная переменная `PATH`.
Если Streamrip установлен через `pip`, обычно достаточно, чтобы каталог Python `Scripts` был добавлен в `PATH`.
## FFmpeg
Для `Convert-FlacToCD.ps1` необходимы:
```text
ffmpeg.exe
ffprobe.exe
```
Сборка FFmpeg для Windows:
https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full.7z
После распаковки файлы находятся в каталоге `bin`.
Их можно положить непосредственно в:
```text
tools/
```
Скрипт ищет `ffmpeg.exe` и `ffprobe.exe`:
1. в `tools`;
2. затем в системном `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` читает ссылки из:
```text
data/urls.txt
```
Каждая ссылка должна находиться на отдельной строке.
Пример:
```text
https://www.qobuz.com/...
https://open.qobuz.com/...
```
Строки, начинающиеся с `#`, игнорируются.
Программа хранит состояние в:
```text
data/completed_urls.txt
data/failed_urls.txt
```
Эти файлы создаются автоматически и не добавляются в Git.
### Что делает Watchdog
Для каждой ссылки программа:
1. запускает `rip --no-progress --verbose url "<URL>"`;
2. отслеживает вывод процесса;
3. если Streamrip долго не выводит ничего, завершает дерево процесса;
4. повторяет попытку;
5. сохраняет успешно обработанные ссылки;
6. повторяет незавершённые ссылки в следующих проходах.
Текущие параметры находятся в `Program.cs`:
```csharp
private const int MaxRunsPerUrl = 10;
private const int MaxRounds = 20;
private const int IdleLimitSeconds = 60;
private const int RestartDelaySeconds = 3;
```
### Сборка QobuzWatchdog
Проект рассчитан на:
```text
.NET Framework 4.7.2
```
Откройте:
```text
QobuzWatchdog.sln
```
в Visual Studio и соберите конфигурацию `Release`.
Каталоги `.vs`, `bin` и `obj` исключены из Git.
## Очистка базы Streamrip
Запустите:
```text
scripts\Clear-StreamripDb.bat
```
Скрипт удаляет:
```text
%APPDATA%\streamrip\downloads.db
%APPDATA%\streamrip\failed_downloads.db
```
Это сбрасывает историю скачанных и неудачно обработанных элементов Streamrip.
## Конвертация FLAC в CD-качество
Запустите:
```powershell
.\scripts\Convert-FlacToCD.ps1
```
Скрипт автоматически обрабатывает:
```text
downloads/
```
Целевые параметры:
```text
FLAC
16 бит
44,1 кГц
2 канала
```
Скрипт:
- рекурсивно ищет FLAC;
- пропускает уже подходящие файлы;
- сохраняет метаданные и встроенные изображения;
- создаёт временный файл;
- проверяет результат через FFprobe;
- только после успешной проверки заменяет исходник;
- при ошибке пытается восстановить исходный файл.
## Группировка альбомов по исполнителям
Запустите:
```powershell
.\scripts\GroupAlbumsByArtist.ps1
```
Скрипт работает с папкой `downloads`.
Он ожидает названия альбомов в формате:
```text
Исполнитель - Альбом
```
Если у одного исполнителя найдено два или больше альбомов:
```text
downloads/
├── Исполнитель/
│ ├── Исполнитель - Альбом 1/
│ └── Исполнитель - Альбом 2/
```
Если альбом только один, его папка остаётся на первом уровне.
## Папка downloads
Вся музыка находится в:
```text
downloads/
```
Содержимое этой папки исключено из Git:
```gitignore
downloads/*
!downloads/.gitkeep
```
## Папка tools
В `tools` можно положить локальные зависимости:
```text
rip.exe
ffmpeg.exe
ffprobe.exe
```
Бинарные файлы из `tools` не добавляются в Git.
## PowerShell
Скрипты рассчитаны на Windows PowerShell 5.1 или новее.
Если Windows блокирует запуск локальных `.ps1`, проверьте текущую политику:
```powershell
Get-ExecutionPolicy
```
При необходимости для текущего пользователя можно использовать:
```powershell
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
```
Меняйте политику выполнения только если понимаете последствия этой настройки.
## Лицензия
Исходный код этого репозитория распространяется по лицензии MIT.
Streamrip и FFmpeg являются отдельными проектами и распространяются на условиях собственных лицензий.