Skip to content

Repository files navigation

Introduction

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

Два варианта:

  1. Напрямую из консоли
  2. Через поднятие web UI в docker-compose

Детали реализации

Как работает импорт ЯМ:

  • Парсит метаданные ваших лайкнутых треков
  • Качает .mp3/.flac/etc из YoutubeMusic/ЯМ
  • Качает синхронизированные .lrc из LRCLIB
  • Качает обложку альбома из ЯМ
  • Складывает все в целевую папку navidrome

Как работает импорт SoundCloud:

  • Парсит метаданные ваших лайкнутых треков и плейлистов
  • Качает .mp3/.flac/etc из YoutubeMusic посредством yt-dlp
  • Качает синхронизированные .lrc из LRCLIB
  • Качает обложку альбома из ЯМ
  • Складывает все в целевую папку navidrome

В идеале после запуска скрипта запускаете full-scan в navidrome и слушаете всю свою библиотеку с треками без блюра/цензуры.

Требования

  • Установленный python
  • Токен для получения метадаты с ЯМ. Инструкция по получению тут
  • Установленный FFmpeg
  • Установленный zapret или VPN

Установить необходимые зависимости:

pip install -r requirements.txt

Конфигурация

Для запуска в корне проекта должен лежать .env файл со следующими конфигами:

  • YANDEX_MUSIC_TOKEN – Токен яндекс музыке. Способ получения описан выше
  • YTDLP_DOWNLOAD_DIR – Временная директория, где будут храниться промежуточные файлы YoutubeMusic
  • YM_DOWNLOAD_DIR - Временная директория, где будут храниться промежуточные файлы с ЯМы
  • YM_NAVIDROME_DATA – Постоянная директория, где скрипт хранит промежуточные данные о миграции треков из ЯМ в
  • NAVIDROME_FOLDER – Целевая директория, откуда navidrome читает музыку/альбомы/артистов
  • YANDEX_MUSIC_PERIOD_BETWEEN_REQUESTS - Период между запросами в ЯМ, дабы избежать блокировки rate limit

Для команды redownload-playlist (перекачка треков из плейлиста Navidrome):

  • NAVIDROME_URL – URL сервера Navidrome (напр. https://navidrome.example.com)
  • NAVIDROME_USER – Логин пользователя Navidrome
  • NAVIDROME_PASSWORD – Пароль пользователя Navidrome. Если пароль содержит #, &, запятые и др. спецсимволы — обязательно возьмите значение в кавычки: NAVIDROME_PASSWORD="2uY#hG,#^Tw&;_4"

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

  1. Запустить выгрузку с ЯМ в navidrome
python -m main ym-import
  1. Попробовать обработать неуспешные повторно (с большим шансом ничего не даст, т.к. трек либо не найден, либо недоступен для скачивания и т.п.)
python -m main retry-failed
  1. Список неуспешно обработанных треков
python -m main list-failed
  1. Получение количества успешно загруженных треков:
python -m main count-successful
  1. Импорт всего лайкнутого/сохраненного (с публичным доступом) с SoundCloud:
python -m main soundcloud-import <your_nickname>
  1. Перекачать треки из плейлиста Navidrome (напр. _REDOWNLOAD) заново с ЯМ:
python -m main redownload-playlist
# или указать другой плейлист:
python -m main redownload-playlist --playlist _REDOWNLOAD
# тест на одном треке:
python -m main redownload-playlist --limit 1
  1. Запуск webui:
python -m main web

Про возможные клиенты для подключения к navidrome с телефона/пк тут

Ограничения

  • YoutubeMusic, использующийся как главный источник, имеет свое ограничение на кол-во запросов в час. По умолчанию это 300. В случае, если в процессе обработки вылетело исключение в формате The current session has been rate-limited by YouTube - перезапустите через час. Ранее обработанные треки не будут пуллиться по-новой.
  • Процессинг происходит в одном потоке и местами с задержками, дабы избежать блокировки/ограничений, так что запаситесь пивом и чипсами.

Послесловие

Да, условно еще одна обертка над yt-dlp. Да, использовал ИИ при написании. И что вы мне сделаете, я в другом городе.

About

No description or website provided.

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages