Skip to content

hazadus/go-snatcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔊 go-snatcher

CLI tool для ведения коллекции DJ-миксов и их прослушивания.

Программа заточена под мои очень специфичные нужды в собирательстве и прослушивании миксов. Её очертания вырисовываются постепенно по мере разработки и использования. Позже, по мере готовности, добавлю подробное описание – что, как, и зачем.

Ссылки

Зависимости

  • github.com/spf13/cobra - CLI фреймворк
  • github.com/gopxl/beep - аудио библиотека
  • github.com/dhowden/tag - чтение метаданных MP3
  • github.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 Нет

Пример конфигурации для Yandex Cloud Storage:

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"

Команды

snatcher add

Загружает 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

Отображает список всех треков в библиотеке с подробной информацией.

Синтаксис:

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)
  • Исполнитель
  • Название трека
  • Альбом
  • Продолжительность
  • Размер файла

snatcher 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] - остановить и выйти

snatcher download

Скачивает аудио из YouTube видео и сохраняет как MP3-файл в папку загрузок.

Синтаксис:

snatcher download [URL YouTube видео]

Примеры:

# Скачать аудио из YouTube видео
snatcher download "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

# Сокращенный URL также работает
snatcher download "https://youtu.be/dQw4w9WgXcQ"

Процесс загрузки:

  1. Извлечение ID видео из URL
  2. Получение информации о видео (название, автор)
  3. Поиск лучшего аудио формата
  4. Загрузка аудио потока
  5. Сохранение как 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 для добавления файла в библиотеку.


snatcher delete

Удаляет трек по его ID из облачного хранилища S3 и из локальной библиотеки.

Синтаксис:

snatcher delete [ID трека]

Примеры:

# Удалить трек с ID 3
snatcher delete 3

Что происходит:

  1. Поиск трека по указанному ID в локальной библиотеке
  2. Удаление файла из облачного хранилища S3 (если URL присутствует)
  3. Удаление записи о треке из локальной базы данных
  4. Сохранение обновленных данных

Пример вывода при успешном удалении:

🗑️  Удаляем трек: Ben Kaczor - Inverted Audio In-Store
✅ Файл успешно удален из S3
✅ Трек успешно удален из библиотеки

snatcher tui

Запускает интерактивный текстовый пользовательский интерфейс (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 для возврата к списку

Типичный рабочий процесс

Вариант 1: Использование CLI команд

  1. Загрузка аудио с YouTube:

    snatcher download "https://www.youtube.com/watch?v=example"
  2. Добавление в библиотеку:

    snatcher add "~/Music/snatcher/downloaded_track.mp3"
  3. Просмотр библиотеки:

    snatcher list
  4. Воспроизведение трека:

    snatcher play 1
  5. Удаление ненужного трека:

    snatcher delete 5

Вариант 2: Использование TUI

  1. Загрузка аудио с YouTube:

    snatcher download "https://www.youtube.com/watch?v=example"
  2. Добавление в библиотеку:

    snatcher add "~/Music/snatcher/downloaded_track.mp3"
  3. Запуск интерактивного интерфейса:

    snatcher tui
  4. В TUI интерфейсе:

    • Просматривайте треки с помощью ↑/↓
    • Ищите треки нажав /
    • Воспроизводите треки нажав Enter
    • Управляйте воспроизведением с помощью Space

Исользование ffmpeg для перекодирования в подходящий формат

Пример команды:

ffmpeg -i downloaded.m4a -codec:a libmp3lame -b:a 192k output.mp3

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks