librespot

Название Роли: Librespot

Установка и настройка клиента Librespot на системах на базе arm64 и armhf, которые поддерживают systemd. Эта роль также включает настройку устройства Hifiberry. Если вы хотите увидеть какие-либо новые функции, не стесняйтесь создать новый тикет или создать PR, чтобы добавить их сами.

Требования

Только для установки типа librespot-java:

- src: geerlingguy.java
  version: 1.9.6
  name: java
  when: librespot_installation_type == "librespot-java"

Переменные Роли

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

librespot_installation_type: librespot # тип установки librespot: librespot(rust), librespot-java, raspotify
raspotify_enable_hifiberry: "false" # логическое значение, если у вас есть устройство hifiberry

Переменные для установки типа raspotify:

raspotify_device_name: "{{ ansible_hostname }}" # имя устройства на Spotify Connect
raspotify_bitrate: "320" # битрейт, один из 96 (низкое качество), 160 (обычное качество) или 320 (высокое качество)
raspotify_options: "--zeroconf-port 40995" # дополнительные аргументы командной строки для librespot могут быть установлены ниже.
raspotify_cache_args: "" # используйте /var/cache/librespot для кэширования, если это необходимо. Кэш отключен по умолчанию
raspotify_volume: "--enable-volume-normalisation --linear-volume --initial-volume=100" # громкость при подключении к клиенту
raspotify_args: "--backend alsa --device default" # бэкенд может быть установлен на pipe, но это для очень продвинутых случаев использования
raspotify_git_branch: "master" # ветка git/коммит, от которого вы хотите построить
raspotify_librespot_git_branch: "dev" # ветка git из librespot, от которой вы хотите построить, оставьте пустой, если хотите использовать по умолчанию

Переменные для нативной установки типа librespot:

librespot_device_name: "{{ ansible_hostname }}" # имя устройства на Spotify Connect
librespot_bitrate: "320" # битрейт, один из 96 (низкое качество), 160 (обычное качество) или 320 (высокое качество)
librespot_options: "--zeroconf-port 40995" # дополнительные аргументы командной строки для librespot могут быть установлены ниже
librespot_cache_args: "--disable-audio-cache" # используйте /var/cache/librespot для кэширования, если это необходимо. Кэш отключен по умолчанию
librespot_volume: "--enable-volume-normalisation --linear-volume --initial-volume=100" # громкость при подключении к клиенту
librespot_args: "--backend alsa" # бэкенд может быть установлен на pipe, но это для очень продвинутых случаев использования
librespot_git_branch: "dev" # ветка git/коммит, от которого вы хотите построить

Переменные для нативной установки типа librespot-java:

---

librespot_installation_type: librespot-java # тип установки librespot: librespot(rust), librespot-java, raspotify
raspotify_enable_hifiberry: "false" # логическое значение, если у вас есть устройство hifiberry

# raspotify
raspotify_device_name: "{{ ansible_hostname }}" # имя устройства на Spotify Connect
raspotify_bitrate: "320" # битрейт, один из 96 (низкое качество), 160 (обычное качество) или 320 (высокое качество)
raspotify_options: "--zeroconf-port 40995" # дополнительные аргументы командной строки для librespot могут быть установлены ниже.
raspotify_cache_args: "" # используйте /var/cache/librespot для кэширования, если это необходимо. Кэш отключен по умолчанию
raspotify_volume: "--enable-volume-normalisation --linear-volume --initial-volume=100" # громкость при подключении к клиенту
raspotify_args: "--backend alsa --device default" # бэкенд может быть установлен на pipe, но это для очень продвинутых случаев использования
raspotify_git_branch: "master" # ветка git/коммит, от которого вы хотите построить
raspotify_librespot_git_branch: "dev" # ветка git из librespot, от которой вы хотите построить, оставьте пустой, если хотите использовать по умолчанию

# librespot
librespot_device_name: "{{ ansible_hostname }}" # имя устройства на Spotify Connect
librespot_bitrate: "320" # битрейт, один из 96 (низкое качество), 160 (обычное качество) или 320 (высокое качество)
librespot_options: "--zeroconf-port 40995" # дополнительные аргументы командной строки для librespot могут быть установлены ниже
librespot_cache_args: "--disable-audio-cache" # используйте /var/cache/librespot для кэширования, если это необходимо. Кэш отключен по умолчанию
librespot_volume: "--enable-volume-normalisation --linear-volume --initial-volume=100" # громкость при подключении к клиенту
librespot_args: "--backend alsa" # бэкенд может быть установлен на pipe, но это для очень продвинутых случаев использования
librespot_git_branch: "dev" # ветка git/коммит, от которого вы хотите построить

# librespot-java
librespot_java_device_name: "{{ ansible_hostname }}" # имя устройства на Spotify Connect
librespot_java_device: "Computer" # тип устройства (КОМПЬЮТЕР, ПЛАНШЕТ, СМАРТФОН, ДИНАМИК, ТВ, AVR, STB, АУДИОДОНГЛ, ИГРОВОЙ КОНСОЛЬ, CAST_VIDEO, CAST_AUDIO, АВТО, НОСИМОЕ, UNKNOWN_SPOTIFY, CAR_THING, UNKNOWN)
librespot_java_preferred_locale: "Computer" # предпочтительный язык
librespot_java_auth_strategy: "ZEROCONF" # стратегия (USER_PASS, ZEROCONF, BLOB, FACEBOOK)
librespot_java_auth_username: "" # имя пользователя Spotify (только BLOB, USER_PASS)
librespot_java_auth_password: "" # пароль Spotify (только USER_PASS)
librespot_java_auth_blob: "" # аутентификационный blob Spotify (только BLOB)
librespot_java_zeroconf_port: 40995 # слушать на этом порту (`-1` для случайного)
librespot_java_zeroconf_listen_all: "true" # слушать на всех интерфейсах (перезаписывает `zeroconf.interfaces`)
librespot_java_zeroconf_interfaces: "" # слушать на этих интерфейсах (список имен, разделенных запятыми)
librespot_java_cache_enabled: "true" # включить кэширование
librespot_java_cache_dir: "./cache" # директория для кэширования
librespot_java_cache_do_clean_up: "true" # периодическая очистка кэша
librespot_java_preload_enabled: "true" # предварительная загрузка песен
librespot_java_time_synchronization_method: "NTP" # метод синхронизации времени (NTP, PING, MELODY, MANUAL)
librespot_java_time_manual_correction: 0 # ручная корректировка времени в миллисекундах
librespot_java_player_autoplay_enabled: "true" # автозапуск похожих песен, когда ваша музыка заканчивается
librespot_java_player_preferred_audio_quality: "VORBIS_320" # предпочтительное качество звука (VORBIS_96, VORBIS_160, VORBIS_320)
librespot_java_player_normalisation_enable: "true" # применять нормализацию громкости Spotify
librespot_java_player_normalisation_pregain: 0.0 # предгейн нормализации
librespot_java_player_initial_volume: 65536 # начальная громкость (0-65536)
librespot_java_player_log_available_mixers: "false" # логировать доступные миксеры
librespot_java_player_mixer_search_keywords: "plughw" # ключевые слова для поиска миксеров/бэкендов (разделённые точкой с запятой)
librespot_java_player_crossfade_duration: 0 # время перекрытия пересмешивания (в миллисекундах)
librespot_java_timer_output: "MIXER" # аудиовыходное устройство (MIXER, PIPE, STDOUT)
librespot_java_player_release_line_delay: 20 # высвобождать линию микшера после заданной задержки (в секундах)
librespot_java_player_pipe: "" # выводить необработанный (подписанный) PCM в этот файл (`player.output` должен быть PIPE)
librespot_java_git_branch: "master" # ветка git/коммит, от которого вы хотите построить

Зависимости

Роли будут строить каждое из приложений из исходников на вашей машине-источнике, прежде чем перенести артефакт на вашу целевую систему. Поэтому требуется, чтобы ваша машина-источник соответствовала всем необходимым зависимостям для сборки проектов.

В зависимости от типа установки изучите следующие ссылки:

Пример Playbook

- hosts: all
  roles:
    - role: xmordax.librespot

Руководство по Ansible

Вот краткое руководство по Ansible, чтобы запустить этот проект.

  1. Установите Ansible на своем локальном компьютере.
  2. Создайте пустую рабочую директорию.
  3. Перейдите в только что созданную директорию и выполните следующую команду: ansible-galaxy install xmordax.librespot -p ./roles. Это должно создать папку с названием roles, которая включает код из этого репозитория.
  4. Создайте два новых файла в корневом каталоге вашей рабочей директории: playbook.yml и inventory.
  5. В файле inventory вам нужно написать конфигурацию о том, как подключиться к вашей целевой системе. В моем примере я буду использовать SSH. Если вы хотите использовать другой вид аутентификации, ознакомьтесь с документацией Ansible о том, как настроить файл инвентаря.
    [server]
    hostname ansible_host=<IP_OF_TARGET_MACHINE> ansible_user=<USER_ON_TARGET_MACHINE> ansible_ssh_private_key_file=<PATH_TO_SSH_KEY>
    
  6. Файл playbook.yml используется для настройки вашего развертывания, в моем случае я сделаю только базовую конфигурацию для упрощения данного руководства.
    - hosts: server
      become: true
      roles:
        - librespot
    
      vars:
        # Конфигурация Raspotify
        librespot_installation_type: "librespot"
        raspotify_device_name: "home-spotify-connect"
    
  7. Разверните с помощью следующей команды: ansible-playbook playbook.yml -i inventory.

Важно

Обязательно сначала прочитайте раздел зависимости этого проекта. Если у вас возникнут проблемы с развертыванием, пожалуйста, сначала обратитесь к официальной документации Ansible и попытайтесь решить проблемы самостоятельно перед созданием тикета.

Лицензия

MIT / BSD

Информация об Авторе

Эта роль была создана в 2019 году Aljaz Gantar.

Установить
ansible-galaxy install xMordax/ansible-role-librespot
Лицензия
mit
Загрузки
97
Владелец