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, чтобы запустить этот проект.
- Установите Ansible на своем локальном компьютере.
- Создайте пустую рабочую директорию.
- Перейдите в только что созданную директорию и выполните следующую команду:
ansible-galaxy install xmordax.librespot -p ./roles
. Это должно создать папку с названием roles, которая включает код из этого репозитория. - Создайте два новых файла в корневом каталоге вашей рабочей директории:
playbook.yml
иinventory
. - В файле
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>
- Файл
playbook.yml
используется для настройки вашего развертывания, в моем случае я сделаю только базовую конфигурацию для упрощения данного руководства.- hosts: server become: true roles: - librespot vars: # Конфигурация Raspotify librespot_installation_type: "librespot" raspotify_device_name: "home-spotify-connect"
- Разверните с помощью следующей команды:
ansible-playbook playbook.yml -i inventory
.
Важно
Обязательно сначала прочитайте раздел зависимости этого проекта. Если у вас возникнут проблемы с развертыванием, пожалуйста, сначала обратитесь к официальной документации Ansible и попытайтесь решить проблемы самостоятельно перед созданием тикета.
Лицензия
MIT / BSD
Информация об Авторе
Эта роль была создана в 2019 году Aljaz Gantar.
Librespot automated installation
ansible-galaxy install xMordax/ansible-role-librespot