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.

  1. Instala Ansible en tu máquina local.
  2. Crea un directorio de trabajo vacío.
  3. 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.
  4. Crea dos nuevos archivos en la raíz de tu directorio de trabajo: playbook.yml e inventory.
  5. 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>
    
  6. 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"
    
  7. 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.

Instalar
ansible-galaxy install xmordax.librespot
Licencia
mit
Descargas
110
Propietario