Skip to content

Web app for preparing radio tracks: parsing, filtering, metadata processing, and export workflow automation.

Notifications You must be signed in to change notification settings

DenisArger/Track_parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Track Parser - Radio Track Preparation Application

Полноценное веб-приложение для автоматизации подготовки аудиотреков для радио на базе Next.js с TypeScript.

Возможности

  • Скачивание треков: Поддержка YouTube (через RapidAPI) Рё Яндекс Музыки (через yt-dlp)
  • Прослушивание Рё отбор: Встроенный аудиоплеер СЃ кнопками принятия/отклонения
  • Автоматическое определение типа трека: РџРѕ длительности Рё BPM (Быстрый/Средний/Медленный)
  • Обрезка треков: Автоматическая обрезка РґРѕ 6 РјРёРЅСѓС‚ (требует FFmpeg)
  • Редактирование метаданных: Полный редактор СЃ тегированием
  • FTP загрузка: Загрузка обработанных треков РЅР° сервер
  • Проверка «На радио»: Сопоставление СЃ плейлистом Streaming.Center (плейлист id=1), бейдж РІ СЃРїРёСЃРєРµ треков
  • Прогресс-бары: Отображение прогресса для всех операций
  • Организация файлов: Автоматическое управление папками
  • вњ… Полная поддержка Netlify: Р’СЃРµ функции работают СЃ FFmpeg.wasm (WebAssembly версия FFmpeg)

Требования

  • Node.js 20+ (указано РІ package.json)
  • Yarn 4.12.0+
  • FFmpeg (для обработки аудио) - опционально, используется FFmpeg.wasm РїРѕ умолчанию
  • yt-dlp (для скачивания треков) - опционально, требуется только для YouTube Music Рё Яндекс.Музыки

Платформы: Windows, Linux, macOS (кроссплатформенная поддержка)

Деплой: ✅ Netlify, ✅ Vercel (с FFmpeg.wasm), VPS, выделенный сервер

Обработка аудио: �спользуется FFmpeg.wasm (WebAssembly) - работает везде, включая Netlify, без установки бинарных файлов

Установка и настройка

1. Клонирование репозитория

git clone <repository-url>
cd Track_parser

2. Установка зависимостей

yarn install

3. Настройка переменных окружения

Скопируйте файл .env.example в .env и заполните ваши API ключи:

cp .env.example .env

Отредактируйте .env файл:

# RapidAPI Configuration
RAPIDAPI_KEY=your_rapidapi_key_here
RAPIDAPI_HOST=youtube-mp36.p.rapidapi.com

# FTP Configuration
FTP_HOST=s.ruworship.ru
FTP_PORT=21
FTP_USER=radio
FTP_PASSWORD=your_ftp_password_here
FTP_SECURE=false
FTP_REMOTE_PATH=/media/Server_1/0 0 ALL_TRACK  # Optional: remote directory on FTP server

# FFmpeg Configuration (optional)
# FFMPEG_PATH=C:\ffmpeg\bin

# Streaming.Center (проверка «трек уже на радио», плейлист «все треки»)
STREAMING_CENTER_API_URL=https://your-server.streaming.center:1030
STREAMING_CENTER_API_KEY=your_api_key_here
# STREAMING_CENTER_PLAYLIST_ID=1

Streaming.Center (опционально): для проверки «трек уже на радио» в плейлисте укажите:

  • STREAMING_CENTER_API_URL — базовый URL (например https://your-server.streaming.center:1030)
  • STREAMING_CENTER_API_KEY — ключ API
  • STREAMING_CENTER_PLAYLIST_ID — ID плейлиста СЃРѕ всеми треками (РїРѕ умолчанию 1)

Без этих переменных проверка отключена, бейдж «На радио» не показывается.

Важно:

  • Получите ваш RapidAPI ключ РЅР° rapidapi.com
  • Настройки FTP хранятся РІ .env для безопасности (пароль РЅРµ должен попадать РІ репозиторий)

4. Установка FFmpeg и yt-dlp

Windows

  1. FFmpeg:

    • Скачайте FFmpeg СЃ официального сайта
    • Распакуйте РІ C:\ffmpeg\ или добавьте РІ PATH
    • Р�ли укажите путь РІ config.json или переменной окружения FFMPEG_PATH
  2. yt-dlp:

    • Скачайте yt-dlp.exe Рё поместите РІ папку bin/ проекта

Linux

  1. FFmpeg:

    # Ubuntu/Debian
    sudo apt-get update
    sudo apt-get install ffmpeg
    
    # �ли укажите путь в config.json или переменной окружения FFMPEG_PATH
  2. yt-dlp:

    # Установка через pip (рекомендуется)
    pip install yt-dlp
    
    # �ли скачайте бинарник и поместите в папку bin/ проекта
    wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O bin/yt-dlp
    chmod +x bin/yt-dlp

Настройка пути к FFmpeg (опционально)

Вы можете указать путь к FFmpeg одним из способов:

  1. Через переменную окружения:

    export FFMPEG_PATH=/usr/bin  # Linux
    # или
    set FFMPEG_PATH=C:\ffmpeg\bin  # Windows
  2. Через config.json:

    {
      "ffmpeg": {
        "path": "/usr/bin"  // Linux или "C:\\ffmpeg\\bin" для Windows
      }
    }

5. Проверка FFmpeg

yarn check

6. Запуск приложения

yarn dev

Приложение будет доступно по адресу: http://localhost:3000

Структура проекта

track-parser/
в”њв”Ђв”Ђ app/
│   ├── api/                    # API маршруты
│   │   ├── audio/[trackId]/    # Служение аудиофайлов
│   │   ├── download/           # Скачивание треков
│   │   ├── process-track/      # Обработка треков
│   │   ├── reject-track/       # Отклонение треков
│   │   ├── test-ftp/           # Тест FTP соединения
│   │   ├── tracks/             # Получение списка треков
│   │   ├── update-metadata/    # Обновление метаданных
│   │   └── upload-ftp/         # Загрузка на FTP
│   ├── components/             # React компоненты
│   │   ├── DownloadTrack.tsx   # Компонент скачивания
│   │   ├── TrackPlayer.tsx     # Аудиоплеер
│   │   ├── MetadataEditor.tsx  # Редактор метаданных
│   │   └── FtpUploader.tsx     # FTP загрузчик
│   ├── globals.css             # Глобальные стили
│   ├── layout.tsx              # Корневой layout
│   └── page.tsx                # Главная страница
├── lib/                        # Библиотечные функции
│   ├── config.ts               # Управление конфигурацией
│   └── processTracks.ts        # Логика обработки треков
├── types/                      # TypeScript типы
│   └── track.ts                # Типы для треков
├── config.json                 # Конфигурация приложения
├── next.config.js              # Конфигурация Next.js
├── package.json                # Зависимости
├── postcss.config.js           # Конфигурация PostCSS
├── tailwind.config.js          # Конфигурация Tailwind CSS
├── tsconfig.json               # Конфигурация TypeScript
└── README.md                   # Документация

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

1. Скачивание треков

  1. Перейдите на вкладку "Download Tracks"
  2. Выберите источник (YouTube или YouTube Music)
  3. Введите URL трека
  4. Нажмите "Download Track"
  5. Отслеживайте прогресс скачивания

2. Прослушивание и отбор

  1. Перейдите на вкладку "Listen & Review"
  2. Выберите трек из списка скачанных
  3. �спользуйте аудиоплеер для прослушивания
  4. Нажмите "Accept Track" или "Reject Track"

3. Редактирование метаданных

  1. Перейдите на вкладку "Edit Metadata"
  2. Выберите обработанный трек
  3. Отредактируйте метаданные:
    • Название
    • Артист
    • Альбом
    • РўРёРї трека (Быстрый/Средний/Медленный)
    • Рейтинг (1-10)
    • Год
  4. Нажмите "Save Metadata"

4. Загрузка на FTP

  1. Перейдите на вкладку "FTP Upload"
  2. Настройте FTP параметры:
    • Host
    • Port
    • Username
    • Password
    • Secure connection (опционально)
  3. Нажмите "Test Connection" для проверки
  4. Выберите треки для загрузки или нажмите "Upload All Tracks"

Организация файлов

Приложение автоматически создает и управляет следующими папками:

  • downloads/ - Скачанные треки
  • processed/ - Обработанные треки
  • rejected/ - Отклоненные треки
  • server_upload/ - Треки для загрузки РЅР° сервер

API Endpoints

  • GET /api/tracks - Получение СЃРїРёСЃРєР° треков
  • POST /api/download - Скачивание трека
  • POST /api/process-track - Обработка трека
  • POST /api/reject-track - Отклонение трека
  • POST /api/update-metadata - Обновление метаданных
  • POST /api/upload-ftp - Загрузка РЅР° FTP
  • POST /api/test-ftp - Тест FTP соединения
  • POST /api/radio/check-batch - Проверка, какие треки СѓР¶Рµ есть РІ плейлисте Streaming.Center
  • GET /api/audio/[trackId] - Получение аудиофайла

Технологии

  • Frontend: Next.js 14, React 18, TypeScript
  • Styling: Tailwind CSS
  • Audio Processing: FFmpeg, fluent-ffmpeg
  • Download: ytdl-core
  • FTP: basic-ftp
  • File Management: fs-extra
  • Audio Metadata: node-audiotags

Разработка

Команды

yarn dev          # Запуск в режиме разработки
yarn build        # Сборка для продакшена
yarn start        # Запуск продакшен версии
yarn lint         # Проверка кода

Переменные окружения

Создайте файл .env.local для локальных настроек:

NEXT_PUBLIC_API_URL=http://localhost:3000

Деплой

Деплой на Vercel

✅ Проект поддерживает деплой на Vercel.

  1. Подключите репозиторий к Vercel.
  2. Добавьте переменные окружения (Supabase, RapidAPI, FTP) — см. VERCEL_DEPLOY.md.
  3. Деплой выполняется автоматически при git push.

Ограничения те же, что и на Netlify: yt-dlp недоступен, обработка через FFmpeg.wasm.

Деплой в Netlify

✅ Проект полностью поддерживает деплой в Netlify!

Проект был переработан для полной поддержки Netlify с graceful degradation - все функции работают, но обработка аудио выполняется только при наличии FFmpeg.

✅ Что работает в Netlify

  1. Скачивание через RapidAPI:

    • вњ… Скачивание треков СЃ YouTube (обычный YouTube, РЅРµ Music)
    • вњ… Получение метаданных
    • вњ… Прослушивание треков
  2. Веб-интерфейс:

    • вњ… Р’СЃРµ UI компоненты
    • вњ… Редактирование метаданных
    • вњ… Просмотр СЃРїРёСЃРєР° треков
  3. Обработка треков (с graceful degradation):

    • вњ… Функция обработки работает без ошибок
    • вљ пёЏ Обрезка РЅРµ выполняется (файл копируется без изменений)
    • вљ пёЏ BPM РЅРµ определяется
    • вњ… Настройки обрезки сохраняются РІ метаданных

⚠️ Ограничения в Netlify

  1. yt-dlp:

    • вќЊ Нельзя запускать бинарные файлы РІ serverless
    • вќЊ YouTube Music Рё Яндекс.Музыка недоступны
    • вњ… Обычный YouTube работает через RapidAPI
  2. Обработка аудио:

    • вљ пёЏ Обрезка треков РЅРµ выполняется (требует FFmpeg)
    • вљ пёЏ Fade in/out РЅРµ применяется (требует FFmpeg)
    • вљ пёЏ Определение BPM РЅРµ работает (требует FFmpeg)
    • вњ… Функции РЅРµ падают СЃ ошибками, работают gracefully

Подробнее: См. NETLIFY_LIMITATIONS.md

Настройка для Netlify

  1. Переменные окружения в Netlify:

    • RAPIDAPI_KEY - ваш ключ RapidAPI
    • RAPIDAPI_HOST - С…РѕСЃС‚ RapidAPI (обычно youtube-mp36.p.rapidapi.com)
  2. Конфигурация уже настроена:

    • Файл netlify.toml СѓР¶Рµ содержит необходимые настройки
    • Next.js плагин для Netlify установлен
  3. Деплой:

    # Подключите репозиторий к Netlify
    # Netlify автоматически соберет проект при push в main ветку

Рекомендации для Netlify

Проект готов для деплоя в Netlify:

  • вњ… Р’СЃРµ функции работают без ошибок
  • вњ… Скачивание через RapidAPI работает
  • вњ… Редактирование метаданных работает полностью
  • вљ пёЏ Обработка аудио работает СЃ graceful degradation (без обработки, РЅРѕ без ошибок)

Для полной функциональности (обработка аудио):

  • вњ… Р�спользуйте VPS или выделенный сервер
  • вњ… Установите FFmpeg Рё yt-dlp РЅР° сервере
  • вњ… Деплойте Next.js приложение РЅР° сервер
  • вњ… Р’СЃРµ функции Р±СѓРґСѓС‚ работать полностью

Бинарники в bin/:

  • вњ… Полезны для локальной разработки (полная функциональность)
  • вњ… Полезны для деплоя РЅР° VPS/сервер (полная функциональность)
  • вљ пёЏ РќРµ используются РІ Netlify (РЅРѕ проект работает gracefully)

Устранение неполадок

Проблемы с FFmpeg

  1. Windows:

    • Убедитесь, что FFmpeg установлен Рё доступен РІ PATH
    • Проверьте версию: ffmpeg -version
    • Р�ли укажите путь через FFMPEG_PATH или config.json
  2. Linux:

    • Установите через пакетный менеджер: sudo apt-get install ffmpeg
    • Проверьте версию: ffmpeg -version
    • Если установлен РІ нестандартном месте, укажите путь через FFMPEG_PATH
  3. Путь не найден:

    • Проверьте, что путь указывает РЅР° директорию СЃ ffmpeg Рё ffprobe
    • РќР° Windows: C:\ffmpeg\bin\ (должны быть ffmpeg.exe Рё ffprobe.exe)
    • РќР° Linux: /usr/bin/ (должны быть ffmpeg Рё ffprobe)

Проблемы с yt-dlp

  1. Windows:

    • Убедитесь, что yt-dlp.exe находится РІ папке bin/ проекта
  2. Linux:

    • Установите через pip: pip install yt-dlp
    • Р�ли скачайте бинарник РІ папку bin/ Рё сделайте исполняемым: chmod +x bin/yt-dlp
    • Проверьте: yt-dlp --version

Проблемы с YouTube

  1. RapidAPI не работает:

    • Проверьте правильность API ключа
    • Убедитесь, что Сѓ вас есть активная РїРѕРґРїРёСЃРєР° РЅР° RapidAPI
    • Приложение автоматически попробует yt-dlp как fallback
  2. yt-dlp не работает:

    • Убедитесь, что yt-dlp установлен Рё доступен
    • Обновите yt-dlp: pip install --upgrade yt-dlp (Linux) или скачайте РЅРѕРІСѓСЋ версию (Windows)
    • Проверьте, что FFmpeg установлен (требуется для конвертации РІ MP3)

Проблемы с FTP

  1. Проверьте правильность FTP настроек
  2. Убедитесь, что сервер поддерживает выбранный тип соединения
  3. Проверьте файрвол и настройки безопасности

Проблемы с памятью

  1. Для больших файлов увеличьте лимиты Node.js:
    node --max-old-space-size=4096 yarn dev

Лицензия

MIT License

Поддержка

При возникновении проблем создайте issue в репозитории проекта.

About

Web app for preparing radio tracks: parsing, filtering, metadata processing, and export workflow automation.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages