xmordax.librespot
Nombre del rol: Librespot
Instalación y configuración del cliente Librespot en sistemas basados en arm64 y armhf que soportan systemd. Este rol también incluye la configuración de un dispositivo Hifiberry. Si deseas ver alguna nueva función, no dudes en crear un nuevo ticket o siéntete libre de crear un PR para añadirlo tú mismo.
Requisitos
Solo para la instalación tipo librespot-java
:
- src: geerlingguy.java
version: 1.9.6
name: java
when: librespot_installation_type == "librespot-java"
Variables del rol
Variables para definir el tipo de instalación:
librespot_installation_type: librespot # tipo de instalación de librespot: librespot(rust), librespot-java, raspotify
raspotify_enable_hifiberry: "false" # booleano, si tienes un dispositivo hifiberry
Variables para la instalación tipo raspotify
:
raspotify_device_name: "{{ ansible_hostname }}" # nombre del dispositivo en Spotify Connect
raspotify_bitrate: "320" # bitrate, uno de 96 (baja calidad), 160 (calidad por defecto) o 320 (alta calidad)
raspotify_options: "--zeroconf-port 40995" # argumentos adicionales de línea de comandos para librespot.
raspotify_cache_args: "" # usar /var/cache/librespot para la ubicación de la caché si es necesario. La caché está deshabilitada por defecto.
raspotify_volume: "--enable-volume-normalisation --linear-volume --initial-volume=100" # volumen por defecto al conectar al cliente
raspotify_args: "--backend alsa --device default" # el backend podría configurarse para pipe aquí, pero es para casos de uso muy avanzados
raspotify_git_branch: "master" # rama/commit de git de la que deseas construirlo
raspotify_librespot_git_branch: "dev" # rama git de librespot de la que deseas construirlo, déjalo vacío si quieres usar la predeterminada
Variables para la instalación nativa tipo librespot
:
librespot_device_name: "{{ ansible_hostname }}" # nombre del dispositivo en Spotify Connect
librespot_bitrate: "320" # bitrate, uno de 96 (baja calidad), 160 (calidad por defecto) o 320 (alta calidad)
librespot_options: "--zeroconf-port 40995" # argumentos adicionales de línea de comandos para librespot
librespot_cache_args: "--disable-audio-cache" # usar /var/cache/librespot para la ubicación de la caché si es necesario. La caché está deshabilitada por defecto.
librespot_volume: "--enable-volume-normalisation --linear-volume --initial-volume=100" # volumen por defecto al conectar al cliente
librespot_args: "--backend alsa" # el backend podría configurarse para pipe aquí, pero es para casos de uso muy avanzados
librespot_git_branch: "dev" # rama/commit de git de la que deseas construirlo
Variables para la instalación nativa tipo librespot-java
:
---
librespot_installation_type: librespot-java # tipo de instalación de librespot: librespot(rust), librespot-java, raspotify
raspotify_enable_hifiberry: "false" # booleano, si tienes un dispositivo hifiberry
# raspotify
raspotify_device_name: "{{ ansible_hostname }}" # nombre del dispositivo en Spotify Connect
raspotify_bitrate: "320" # bitrate, uno de 96 (baja calidad), 160 (calidad por defecto) o 320 (alta calidad)
raspotify_options: "--zeroconf-port 40995" # argumentos adicionales de línea de comandos para librespot.
raspotify_cache_args: "" # usar /var/cache/librespot para la ubicación de la caché si es necesario. La caché está deshabilitada por defecto.
raspotify_volume: "--enable-volume-normalisation --linear-volume --initial-volume=100" # volumen por defecto al conectar al cliente
raspotify_args: "--backend alsa --device default" # el backend podría configurarse para pipe aquí, pero es para casos de uso muy avanzados
raspotify_git_branch: "master" # rama/commit de git de la que deseas construirlo
raspotify_librespot_git_branch: "dev" # rama git de librespot de la que deseas construirlo, déjalo vacío si quieres usar la predeterminada
# librespot
librespot_device_name: "{{ ansible_hostname }}" # nombre del dispositivo en Spotify Connect
librespot_bitrate: "320" # bitrate, uno de 96 (baja calidad), 160 (calidad por defecto) o 320 (alta calidad)
librespot_options: "--zeroconf-port 40995" # argumentos adicionales de línea de comandos para librespot
librespot_cache_args: "--disable-audio-cache" # usar /var/cache/librespot para la ubicación de la caché si es necesario. La caché está deshabilitada por defecto.
librespot_volume: "--enable-volume-normalisation --linear-volume --initial-volume=100" # volumen por defecto al conectar al cliente
librespot_args: "--backend alsa" # el backend podría configurarse para pipe aquí, pero es para casos de uso muy avanzados
librespot_git_branch: "dev" # rama/commit de git de la que deseas construirlo
# librespot-java
librespot_java_device_name: "{{ ansible_hostname }}" # nombre del dispositivo en Spotify Connect
librespot_java_device: "Computer" # tipo de dispositivo (COMPUTER, TABLET, SMARTPHONE, SPEAKER, TV, AVR, STB, AUDIO_DONGLE, GAME_CONSOLE, CAST_VIDEO, CAST_AUDIO, AUTOMOBILE, WEARABLE, UNKNOWN_SPOTIFY, CAR_THING, UNKNOWN)
librespot_java_preferred_locale: "Computer" # localización preferida
librespot_java_auth_strategy: "ZEROCONF" # estrategia (USER_PASS, ZEROCONF, BLOB, FACEBOOK)
librespot_java_auth_username: "" # nombre de usuario de Spotify (solo BLOB, USER_PASS)
librespot_java_auth_password: "" # contraseña de Spotify (solo USER_PASS)
librespot_java_auth_blob: "" # blob de autenticación de Spotify (solo BLOB)
librespot_java_zeroconf_port: 40995 # escuchar en este puerto (`-1` para aleatorio)
librespot_java_zeroconf_listen_all: "true" # escuchar en todas las interfaces (anula `zeroconf.interfaces`)
librespot_java_zeroconf_interfaces: "" # escuchar en estas interfaces (lista separada por comas de nombres)
librespot_java_cache_enabled: "true" # habilitar caché
librespot_java_cache_dir: "./cache" # directorio para la caché
librespot_java_cache_do_clean_up: "true" # limpieza periódica de la caché
librespot_java_preload_enabled: "true" # pre cargar canciones
librespot_java_time_synchronization_method: "NTP" # método de sincronización de tiempo (NTP, PING, MELODY, MANUAL)
librespot_java_time_manual_correction: 0 # corrección manual del tiempo en milisegundos
librespot_java_player_autoplay_enabled: "true" # reproducir automáticamente canciones similares cuando termina tu música
librespot_java_player_preferred_audio_quality: "VORBIS_320" # calidad de audio preferida (VORBIS_96, VORBIS_160, VORBIS_320)
librespot_java_player_normalisation_enable: "true" # si se aplica la normalización de volumen de Spotify
librespot_java_player_normalisation_pregain: 0.0 # ganancia previa de normalización
librespot_java_player_initial_volume: 65536 # volumen inicial (0-65536)
librespot_java_player_log_available_mixers: "false" # registrar mezcladores disponibles
librespot_java_player_mixer_search_keywords: "plughw" # palabras clave de búsqueda del mezclador/backend (separadas por punto y coma)
librespot_java_player_crossfade_duration: 0 # duración del cruce (en milisegundos)
librespot_java_timer_output: "MIXER" # dispositivo de salida de audio (MIXER, PIPE, STDOUT)
librespot_java_player_release_line_delay: 20 # liberar la línea del mezclador tras el retraso establecido (en segundos)
librespot_java_player_pipe: "" # salida en crudo (PCM firmado) a este archivo (`player.output` debe ser PIPE)
librespot_java_git_branch: "master" # rama/commit de git de la que deseas construirlo
Dependencias
Los roles construirán cada una de las aplicaciones desde las fuentes en tu máquina de origen antes de enviar el artefacto a tu sistema de destino. Por lo tanto, es necesario que tu máquina de origen cumpla con todas las dependencias necesarias para construir los proyectos.
Dependiendo del tipo de instalación, consulta los siguientes enlaces:
Ejemplo de Playbook
- hosts: all
roles:
- role: xmordax.librespot
Guía de Ansible
Como se solicitó, aquí hay una guía rápida para Ansible para hacer funcionar este proyecto.
- Instala Ansible en tu máquina local.
- Crea un directorio de trabajo vacío.
- Cambia al directorio recién creado y ejecuta el siguiente comando:
ansible-galaxy install xmordax.librespot -p ./roles
. Esto debería haber creado una carpeta llamada roles que incluye el código de este repositorio. - Crea dos nuevos archivos en la raíz de tu directorio de trabajo:
playbook.yml
einventory
. - En el archivo
inventory
debes escribir la configuración sobre cómo conectar a tu sistema de destino; en mi ejemplo usaré SSH. Si deseas usar otro tipo de autenticación, consulta la documentación de Ansible sobre cómo configurar tu archivo de inventario.[server] hostname ansible_host=<IP_OF_TARGET_MACHINE> ansible_user=<USER_ON_TARGET_MACHINE> ansible_ssh_private_key_file=<PATH_TO_SSH_KEY>
- El archivo
playbook.yml
se utiliza para configurar tu despliegue. En mi caso, haré solo una configuración básica para mantener simple esta guía.- hosts: server become: true roles: - librespot vars: # Configuración de Raspotify librespot_installation_type: "librespot" raspotify_device_name: "home-spotify-connect"
- Despliega con el siguiente comando:
ansible-playbook playbook.yml -i inventory
.
Importante
Asegúrate de leer primero la sección de dependencias de este proyecto. Si tienes problemas con el despliegue, consulta primero la Documentación oficial de Ansible e intenta resolver los problemas por tu cuenta antes de crear un ticket.
Licencia
MIT / BSD
Información del autor
Este rol fue creado en 2019 por Aljaz Gantar.
Librespot automated installation
ansible-galaxy install xmordax.librespot