CLI tool для ведения коллекции DJ-миксов и их прослушивания.
Программа заточена под мои очень специфичные нужды в собирательстве и прослушивании миксов. Её очертания вырисовываются постепенно по мере разработки и использования. Позже, по мере готовности, добавлю подробное описание – что, как, и зачем.
github.com/spf13/cobra- CLI фреймворкgithub.com/gopxl/beep- аудио библиотекаgithub.com/dhowden/tag- чтение метаданных MP3github.com/kkdai/youtube- загрузка с YouTube
Используется файл конфигурации ~/.snatcher.
| Параметр | Описание | Значение по умолчанию | Обязательный |
|---|---|---|---|
aws_bucket_name |
Имя бакета в Yandex Cloud Storage | - | Да |
aws_access_key |
Ключ доступа для S3 API | - | Да |
aws_secret_key |
Секретный ключ для S3 API | - | Да |
aws_region |
Регион хранилища | - | Да |
aws_endpoint |
Эндпоинт Yandex Cloud Storage | - | Да |
download_dir |
Папка для загрузки аудиофайлов | ~/Downloads |
Нет |
aws_bucket_name: "your-bucket-name"
aws_access_key: "your-access-key"
aws_secret_key: "your-secret-key"
aws_region: "ru-central1"
aws_endpoint: "https://storage.yandexcloud.net"
download_dir: "~/Music/snatcher"Загружает MP3-файл в облачное хранилище S3 и добавляет его в библиотеку треков.
Синтаксис:
snatcher add [путь к файлу]Примеры:
# Загрузить файл из текущей директории
snatcher add "my_mix.mp3"
# Загрузить файл по абсолютному пути
snatcher add "/Users/username/Music/Deep_House_Mix.mp3"
# Загрузить файл из другой папки
snatcher add "~/Downloads/Techno_Set_2024.mp3"Что происходит:
- Проверка существования файла
- Извлечение метаданных (исполнитель, название, альбом, длительность)
- Загрузка в S3 с отображением прогресса
- Сохранение информации о треке в локальной базе данных
Отображает список всех треков в библиотеке с подробной информацией.
Синтаксис:
snatcher listПример вывода:
📚 Найдено треков: 3
ID Исполнитель Название Альбом Длительность Размер
------------------------------------------------------------------------------------------------------------------------
1 Ben Kaczor Inverted Audio In-Store Various Artists 45:23 64.2 MB
2 Hazadus Deep Dark Mix 08.01.12 Personal Collection 67:45 92.8 MB
Отображаемая информация:
- ID трека (для использования с командой
play) - Исполнитель
- Название трека
- Альбом
- Продолжительность
- Размер файла
Воспроизводит трек по его ID с интерактивным управлением.
Синтаксис:
snatcher play [ID трека]Примеры:
# Воспроизвести трек с ID 1
snatcher play 1
# Воспроизвести трек с ID 5
snatcher play 5Управление во время воспроизведения:
[Пробел]- пауза/возобновление[Ctrl+C]- остановить и выйти
Пример вывода:
🎵 Воспроизводится: Ben Kaczor - Inverted Audio In-Store
Продолжительность: 45:23
Размер буфера: 64 KB
Качество: 16-bit, 44100 Hz, 2 каналов
🎮 Управление:
[Пробел] - пауза/воспроизведение
[Ctrl+C] - остановить и выйти
Скачивает аудио из YouTube видео и сохраняет как MP3-файл в папку загрузок.
Синтаксис:
snatcher download [URL YouTube видео]Примеры:
# Скачать аудио из YouTube видео
snatcher download "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
# Сокращенный URL также работает
snatcher download "https://youtu.be/dQw4w9WgXcQ"Процесс загрузки:
- Извлечение ID видео из URL
- Получение информации о видео (название, автор)
- Поиск лучшего аудио формата
- Загрузка аудио потока
- Сохранение как MP3 в папку
download_dirиз конфигурации
Пример вывода:
Скачиваем аудио для видео ID: dQw4w9WgXcQ
Название: Rick Astley - Never Gonna Give You Up
Автор: RickAstleyVEVO
Загружаем аудио поток...
Файл сохранен: ~/Music/snatcher/Rick_Astley_Never_Gonna_Give_You_Up.mp3
Примечание: После загрузки используйте команду snatcher add для добавления файла в библиотеку.
Удаляет трек по его ID из облачного хранилища S3 и из локальной библиотеки.
Синтаксис:
snatcher delete [ID трека]Примеры:
# Удалить трек с ID 3
snatcher delete 3Что происходит:
- Поиск трека по указанному ID в локальной библиотеке
- Удаление файла из облачного хранилища S3 (если URL присутствует)
- Удаление записи о треке из локальной базы данных
- Сохранение обновленных данных
Пример вывода при успешном удалении:
🗑️ Удаляем трек: Ben Kaczor - Inverted Audio In-Store
✅ Файл успешно удален из S3
✅ Трек успешно удален из библиотеки
Запускает интерактивный текстовый пользовательский интерфейс (TUI) для удобного управления библиотекой треков и их воспроизведения.
Синтаксис:
snatcher tuiОсновные экраны:
- Отображает все треки из библиотеки в виде списка
- Поддерживает навигацию с помощью стрелок ↑/↓
- Фильтрация треков по исполнителю и названию (
/для поиска) - Выбор трека для воспроизведения (
Enter) - Редактирование метаданных трека (
e)
- Интерактивное редактирование информации о треке
- Поля для изменения: исполнитель, название, альбом, продолжительность, исходный URL
- Валидация данных перед сохранением
- Сохранение изменений и возврат к списку треков
- Воспроизведение выбранного трека
- Отображение информации о треке (исполнитель, название, прогресс)
- Интерактивное управление воспроизведением
- Возврат к списку треков (
Escилиq)
Управление в TUI:
В списке треков:
↑/↓илиj/k- навигация по спискуEnter- воспроизвести выбранный трекe- редактировать метаданные выбранного трека/- поиск по исполнителю и названиюEsc- очистить поискCtrl+C- выход из программы
В редакторе метаданных:
Tab- переход между полямиEnter- сохранить изменения и вернуться к спискуEsc- отменить изменения и вернуться к спискуCtrl+C- выход из программы
В плеере:
Space- пауза/воспроизведениеEscилиq- вернуться к списку трековCtrl+C- остановить воспроизведение и выйти
Пример использования:
# Запустить TUI
snatcher tui
# В интерфейсе:
# 1. Выберите трек стрелками ↑/↓
# 2. Нажмите Enter для воспроизведения
# 3. Нажмите e для редактирования метаданных
# 4. В редакторе используйте Tab для перехода между полями
# 5. Нажмите Enter для сохранения или Esc для отмены
# 6. В плеере используйте Space для паузы/воспроизведения
# 7. Нажмите Esc для возврата к списку-
Загрузка аудио с YouTube:
snatcher download "https://www.youtube.com/watch?v=example" -
Добавление в библиотеку:
snatcher add "~/Music/snatcher/downloaded_track.mp3" -
Просмотр библиотеки:
snatcher list
-
Воспроизведение трека:
snatcher play 1
-
Удаление ненужного трека:
snatcher delete 5
-
Загрузка аудио с YouTube:
snatcher download "https://www.youtube.com/watch?v=example" -
Добавление в библиотеку:
snatcher add "~/Music/snatcher/downloaded_track.mp3" -
Запуск интерактивного интерфейса:
snatcher tui
-
В TUI интерфейсе:
- Просматривайте треки с помощью ↑/↓
- Ищите треки нажав
/ - Воспроизводите треки нажав
Enter - Управляйте воспроизведением с помощью
Space
Пример команды:
ffmpeg -i downloaded.m4a -codec:a libmp3lame -b:a 192k output.mp3