Spotify (Español)

From ArchWiki
Jump to navigation Jump to search
Estado de la traducción: este artículo es una traducción de Spotify, revisada por última vez el 2020-02-19. Si advierte que la versión inglesa ha cambiado puede ayudar a actualizar la traducción, bien por usted mismo o bien avisando al equipo de traducción.

Spotify es un servicio de streaming de música de tipo freemium. Este artículo trata principalmente sobre el cliente semioficial y privativo Spotify para Linux, que es desarrollado por los ingenieros de Spotify en su tiempo libre y no cuenta con el apoyo activo de Spotify.[1] Alternativamente, hay un reproductor web y un puñado de clientes de terceros de código libre.

Clientes de terceros

  • Clementine — Es capaz de reproducir desde Spotify con una cuenta premium después de activar (descargar) un complemento en la configuración.
https://www.clementine-player.org/ || clementine
  • Librespot — Una biblioteca-cliente de código abierto para Spotify. Permite a las aplicaciones usar el servicio de Spotify (streaming) sin usar el código privativo de libspotify.
https://github.com/librespot-org/librespot || librespot-gitAUR
  • Mopidy — Una alternativa basada en Music Player Daemon que es capaz de reproducir desde Spotify con una extensión.
https://www.mopidy.com/ || mopidy+ mopidy-spotifyAUR o despotify-svnAUR[enlace roto: package not found]
  • ncspot — Cliente ncurses multiplataforma escrito en Rust, inspirado por ncmpc y similares.
https://github.com/hrkfdn/ncspot || ncspotAUR ncspot-gitAUR
  • Spotifyd — Un cliente de Spotify de código abierto que se ejecuta como daemon UNIX. Spotifyd reproduce música como el cliente oficial, pero es más liviano y está disponible en más plataformas. Spotifyd también admite el protocolo Spotify Connect, que lo hace aparecer como un dispositivo que se puede controlar desde los clientes oficiales.
https://github.com/Spotifyd/spotifyd || spotifyd
  • spotify-tui — Un cliente de Spotify para la terminal escrito en Rust.
https://github.com/Rigellute/spotify-tui || spotify-tuiAUR
  • Tizonia — Reproductor de música en la nube de línea de comandos para Linux con soporte para Spotify, Google Play Music, YouTube, SoundCloud, servidores Plex y dispositivos Chromecast..
http://tizonia.org/docs/spotify/ || tizonia-allAUR
  • Tomahawk — Un reproductor de música escrito en C ++ / Qt. Ya no se desarrolla activamente
https://www.tomahawk-player.org/[enlace roto 2020-08-06] || tomahawkAUR[enlace roto: package not found] tomahawk-gitAUR tomahawk-qt5AUR[enlace roto: package not found]

Consejos y trucos

Limitar el almacenamiento

Spotify maneja automáticamente un tamaño determinado de caché. Sim embargo, tal vez quieras limitarlo para que tu sistema de archivos no se llene.

Agrega storage.size (en MB) a /home/user/.config/spotify/prefs. Por ejemplo, para un tamaño de 3072MB:

~/.config/spotify/prefs
storage.size=3072

Atajos de teclado

Tip: Muchos entornos de escritorio vienen con atajos de teclado que funcionan con el cliente de Spotify por defecto. (Por ejemplo, en Cinnamon). Con (Preferencias -> Teclado -> Atajos -> Sonido y Medios) se establecen varios enlaces por defecto para controlar el reproductor y estos pueden ser fácilmente manejados presionando las teclas preferidas.

Para los entornos en los que el control de Spotify a través del teclado no funciona de forma automática, el cliente oficial de Linux tiene soporte para teclas multimedia como XF86AudioPlay. Podemos usar en este caso xbindkeys para captar los atajos de teclado y luego reenviarlas a Spotify utilizando uno de los métodos siguientes. Si utilizas xbindkeys, asegúrate de que Spotify se reinicie después de la instalación y configuración de teclas, de lo contrario no se capturarán correctamente las pulsaciones.

MPRIS

El cliente de Spotify implementa la interfaz D-Bus MPRIS2 que permite un control externo.

Playerctl

La utilidad playerctl proporciona una herramienta de línea de comandos para enviar comandos a los clientes de MPRIS. Los únicos comandos que probablemente necesites vincular globalmente son play-pause, next y previous

$ playerctl play-pause
$ playerctl next
$ playerctl previous

Playerctl enviará el comando al primer reproductor que encuentre, por lo que este método también funcionará con otros reproductores como vlc. Para ignorar a otros reproductores, pon --player=spotify como argumento.

Bluetooth

Un Auricular Bluetooth#Controles y dispositivos similares pueden ser reenviados a mpris2 para que trabajen con spotify.

D-Bus

Una alternativa a lo anterior es utilizar manualmente el D-Bus, que debería estar disponible por defecto ya que es una dependencia de systemd.

Utiliza los siguientes comandos para controlar Spotify:

$ dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
$ dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next
$ dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous
$ dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop

Puedes vincularlos a las teclas multimedia. Visita Atajos de teclado para más detalles.

pactl (pulseaudio)

Como habrás notado, los comandos del protocolo MPRIS no incluyen control de volumen. Esto se rompe dentro del mismo Spotify, que ignora las peticiones de cambio de volumen. Sin embargo, existe la posibilidad de controlar el volumen a través del sink de entrada de pulseaudio:

$ pactl set-sink-input-volume "$current_sink_num" +1% #volume up by 1%
$ pactl set-sink-input-volume "$current_sink_num" -1% #volume down by 1%
$ pactl set-sink-input-mute "$current_sink_num" toggle #mute toggler

El número sink para "$current_sink_num" se puede encontrar en el resultado de este comando:

$ pactl list sink-inputs
Sink Input #3 << here
Driver: protocol-native.c
[...]
application.name = "Spotify"

Puedes crear un guión para cambiar el volumen y vincularlo, por ejemplo, a un atajo de teclado a través de la configuración entornos de escritorio o la xdotool descrita en la siguiente sección. Aquí hay algunos ejemplos:

Bash:

#!/bin/bash
LANGUAGE="en_US"
app_name="Spotify"
current_sink_num=
sink_num_check=
app_name_check=
pactl list sink-inputs |while read line; do \
    sink_num_check=$(echo "$line" |sed -rn 's/^Sink Input #(.*)/\1/p')
    if [ "$sink_num_check" != "" ]; then
        current_sink_num="$sink_num_check"
    else
        app_name_check=$(echo "$line" \
            |sed -rn 's/application.name = "([^"]*)"/\1/p')
            if [ "$app_name_check" = "$app_name" ]; then
                pactl set-sink-input-volume "$current_sink_num" +1%
            fi
    fi
done

Este script fue hecho por el usuario Mikołak en este post.

Desafortunadamente este script no es la solución más rápida y si lo ejecutas varias veces a través del atajo del teclado, puede ser un poco lento.

Más rápido (como 10 veces) es el código escrito en Python (requiere al menos Python 3.7 para ser instalado):

#!/usr/bin/env python3
#Author: Marcin Kocur, attribution license: https://creativecommons.org/licenses/by/4.0/
import subprocess
import os
x=0
y=0
env = os.environ
env['LANG'] = 'en_US'
app = '"Spotify"'
pactl = subprocess.check_output(['pactl', 'list', 'sink-inputs'], env=env).decode().strip().split()
if app in pactl:
    for e in pactl:
        x += 1
        if e == app:
            break
    for i in pactl[0 : x -1 ]:
        y += 1
        if i == 'Sink' and pactl[y] == 'Input' and '#' in pactl[y + 1]:
            sink_id = pactl[y+1]
        if i == 'Volume:' and '%' in pactl[y + 3]:
            volume = pactl[y + 3]
    sink_id = sink_id[1: ]
    volume = volume[ : -1 ]
    if int(volume) < 100:
        subprocess.run(['pactl', 'set-sink-input-volume', sink_id, '+1%'])

Puedes guardarlo en un archivo .py. La última línea hace el trabajo, así que puedes ajustar el comando para bajar el volumen o silenciar.

Deshabilitar las notificaciones de cambio de canción

Note: Vale la pena señalar que si tienes un SpotCommanderAUR[enlace roto: package not found] http://olejon.github.io/spotcommander/[enlace roto 2020-08-06] Server] que se ejecuta junto con Spotify, y desactivas las notificaciones de pistas siguiendo las instrucciones que se indican a continuación, el SpotCommander Client[enlace roto 2020-08-06] que se ejecuta en tu dispositivo móvil mostrará que "No hay música" y tampoco mostrará la información de la canción como el título, artista, carátula del álbum, etc. Sin embargo, el cliente móvil sigue funcionando bien, y todavía es capaz de saltar, reproducir, pausar, controlar el volumen, etc.

Después de la versión 0.9.10, las notificaciones de cambio de canción estaban habilitadas por defecto. Pueden ser bastante intrusivas. Para deshabilitarlas, añade la siguiente línea a ~/.config/spotify/Users/<spotifylogin>-user/prefs

 ui.track_notifications_enabled=false

También es posible lanzar Spotify con la opción --ui.track_notifications_enabled=false

Mostrar notificaciones de pista

No es específico de Spotify.

playerctl provee una biblioteca que puedes usar con python-gobject y un daemon de notificación como dunst para mostrar el artista y el título en una notificación cuando la canción cambie.

#!/usr/bin/env python3

from gi.repository import Playerctl, GLib
from subprocess import Popen

player = Playerctl.Player()

def on_track_change(player, e):
    track_info = '{artist} - {title}'.format(artist=player.get_artist(), title=player.get_title())
    Popen(['notify-send', track_info])

player.on('metadata', on_track_change)

GLib.MainLoop().run()

Saltar las pistas de radio que han sido reproducidas muchas veces

No es específico de Spotify.

Otro uso de la biblioteca de playerctl es saltarse las pistas que se reproducen demasiado en la radio cuando no necesariamente quieres bajar la calificación de estas porque puede que quieras volver a escucharlas más tarde en esa emisora.

#!/usr/bin/env python3

from gi.repository import Playerctl, GLib

player = Playerctl.Player()

played_out = ['Zu Fuss', 'Walk And Talk', 'Neuland']

def on_track_change(player, e):
    if player.get_title() in played_out:
        player.next()

player.on('metadata', on_track_change)

GLib.MainLoop().run()

Bloquear anuncios

Warning: Bloquear anuncios no está soportado por Spotify y puede resultar en un baneo temporal [2]

blockify

Con blockify puedes silenciar los anuncios. Está disponible en el AUR como blockifyAUR.

Para que esto empiece y se ejecute en segundo plano cada vez que se inicies Spotify tendrás que automatizarlo tú mismo:

#!/bin/sh

spotify=/usr/bin/spotify

if [[ -x $spotify && -x /usr/bin/blockify ]];
then
  blockify &
  block_pid=$!
  $spotify
  trap "kill -9 $block_pid" SIGINT SIGTERM EXIT
fi

Colocando este script en /usr/local/bin/spotify, se prefiere a /usr/bin/spotify cada vez que se inicia Spotify, así que no hay nada más que cambiar y las actualizaciones no lo harán fallar.

spotblock

spotblock (spotblock-gitAUR) es un bloqueador de anuncios eficiente en cuanto a recursos que se ejecuta como un daemon.

Spotify-AdKiller

Spotify-AdKiller (spotify-adkiller-gitAUR) es otra alternativa para bloquear los anuncios de Spotify.

Archivo de hosts

También puedes añadir las siguientes líneas a tu archivo de hosts para bloquear anuncios en Spotify :

/etc/hosts
# Block spotify ads
127.0.0.1 media-match.com
127.0.0.1 adclick.g.doublecklick.net
127.0.0.1 www.googleadservices.com
127.0.0.1 open.spotify.com
127.0.0.1 pagead2.googlesyndication.com
127.0.0.1 desktop.spotify.com
127.0.0.1 googleads.g.doubleclick.net
127.0.0.1 pubads.g.doubleclick.net
127.0.0.1 audio2.spotify.com
127.0.0.1 www.omaze.com
127.0.0.1 omaze.com
127.0.0.1 bounceexchange.com
#127.0.0.1 spclient.wg.spotify.com
127.0.0.1 securepubads.g.doubleclick.net
127.0.0.1 8.126.154.104.bc.googleusercontent.com
127.0.0.1 104.154.126.8

spclient.wg.spotify.com ahora parece bloquear la radio y los daily mixes, así como las canciones recién reproducidas.

Control remoto

Enviar comandos a través de SSH

Si configuras ssh en el servidor, puedes enviar los controles de un cliente a una instancia remota de Spotify con

$ ssh user@host yourcommand

donde yourcommand puede ser spotifycmd que instalaste en el servidor, o un script dbus para la versión de linux, como se describe arriba.

Intercepta la ventana de Spotify a través de SSH

Además de interceptar todo el escritorio con TeamViewer o VNC para controlar remotamente tu servidor, también puedes hacer lo mismo con la ventana de Spotify del servidor a tu cliente.

Para ello necesitas configurar sshd en tu servidor e instalar x11vnc tanto en el servidor como en el cliente, así como tigervnc en el cliente. Luego puedes usar estos scripts para tomar el dektop completo o solo la ventana de Spotify, lo que esencialmente te da un comportamiento similar al de un cliente de la interfaz gráfica de usuario como con el MPD.

#!/bin/bash
# vncget.sh

if [[ $1 == all ]];then
  ssh -f -t -L 5900:localhost:5900 user@host "x11vnc -q -display :0 -auth .Xauthority"
else
  ssh -f -t -L 5900:localhost:5900 user@host ".bin/vncgetspotify.sh"
fi
 
for i in {1..4}; do
  sleep 2
  if vncviewer localhost:0; then break; fi
done
#!/bin/bash
# vncgetspotify.sh

export DISPLAY=:0

id=$(wmctrl -lx | awk '/spotify.exe.Wine/ {print $1}')
[[ -z $id ]] && id=$(wmctrl -lx | awk '/spotify.Spotify/ {print $1}')

x11vnc -sid $id -display :0 -auth .Xauthority

Necesitarás copiar el segundo script a ~/.bin/vncgetspotify.sh en el servidor y el primer script a cualquier lugar de tu cliente.

Finalmente, para interceptar Spotify, corre:

$ sh vncget.sh

o para el escritorio entero:

$ sh vncget.sh all

Modo HiDPI

Como el actual build de Spotify no detecta DPI, la cantidad por la que se puede escalar la interfaz se puede especificar usando el siguiente comando:

$ spotify --force-device-scale-factor='X

donde X es la cantidad para escalar la interfaz por. Por ejemplo, 2.

Este cambio puede ser añadido al archivo spotify.desktop para aplicar la escala cuando se lanza desde el escritorio.

Para asegurarse de que el archivo no se sobrescribe cuando se actualiza el paquete, cópielo en su carpeta de aplicaciones locales:

$ cp /usr/share/applications/spotify.desktop ~/.local/share/applications/

Ahora edita ~/.local/share/applications/spotify.desktop y añade la opción --force-device-scale-factor:

spotify.desktop
[Desktop Entry]
Name=Spotify
GenericName=Music Player
Comment=Spotify streaming music client
Icon=spotify-client
Exec=spotify --force-device-scale-factor=2 %U
TryExec=spotify
Terminal=false
Type=Application
Categories=Audio;Music;Player;AudioVideo
MimeType=x-scheme-handler/spotify

Es posible que tengas que relanzar tu Desktop Manager antes de que estos cambios se hagan efectivos.

Solución de problemas

El entorno de escritio silencia Spotify

Comente "module-role-cork" en el archivo de configuración de pulseaudio.

Abre /etc/pulse/default.pa con tu editor de texto y coméntalo:

load-module module-role-cork 

O simplemente desactivalo con:

pactl unload-module module-role-cork

El buscador hace que toda la interfaz parpadee y luego se cuelgue

Spotify utiliza una versión antigua de Chromium Embedded Framework y genera un error que hace que se cuelgue repetidamente al intentar utilizar la búsqueda. Esto se puede solucionar usando la siguiente opción de línea de comandos:

 --force-device-scale-factor=1.0000001

Imágenes parpadeantes y renderización defectuosa mientras se usa Spotify Linux con DWM

Ejecuta spotify como una ventana flotante.

Puedes añadir esta regla en tu config.h:

 "Spotify", NULL, NULL, 2, True, -1 },

Esto le dirá a dwm que ejecute spotify como una ventana flotante asociada a la etiqueta "2" sin importar el modo de ventana en el que se encuentre. Recompila e instala el dwm para aplicar tu nueva configuración.

Búsqueda, navegación o radio sin funcionar

Spotify informe de errores en relación con los locales no ingleses.

Si varias pestañas como la de navegación sólo muestran una pantalla en blanco, el campo de búsqueda no parece hacer nada o la página de radio no funciona (atascada al iniciar y sin respuesta al teclado o mouse), puede que estés usando un locale personalizado.

Intenta configurar la variable de entorno LC_NUMERIC a en_US.utf8 antes de iniciar Spotify.

Punto muerto en la interfaz

Puede ocurrir en los gestores de ventanas tiling, como Awesome, cuando se hace doble clic en una nueva canción o lista de reproducción. Edita el archivo ~/.config/spotify/Users/[1-9]*-user/prefs para añadir o cambiar lo siguiente:

ui.track_notifications_enabled=false

Reinicia Spotify. Ten en cuenta que parecen existir varias causas para este problema, y esta solución en particular sólo se aplica a algunas versiones del cliente de Spotify, i3 y Awesome, y puede ser que existan causas adicionales de raíz para los usuarios de Debian y Ubuntu que informen de este problema. Observado con Spotify 0.9.17.1.g9b85d436 y Awesome 3.4.15 y i3-gaps 4.13-2 y Spotify 1.0.64.407.g9bd02c2d.

Nota: En Spotify 1.0.17.75-2, ui.track_notifications_enabled=false parece ser ignorado. Por otro lado, algunos usuarios reportan que ya no experimentan el bloqueo desde la versión 3.5.6 de Awesome. Los bloqueos podrían ser causados por los scripts llamados por Awesome, que se basan en las propiedades de Spotify dbus. Ver [3].

Note: Este número tiene causas múltiples, así que mantén un registro de lo que cambias mientras investigas esto. Actualiza esta sección con escenarios adicionales y correcciones.

Las portadas de los álbumes y las imágenes han desaparecido; aparecen como cuadros vacíos

Salte de Spotify, luego abre las preferencias de Spotify ~/.config/spotify/prefs

Cambia @https a @http:

 network.proxy.addr="your-proxy.com:80@http"
 network.proxy.mode=2

Ver el post del formulario original aquí.

Nota: A partir del 1.0.17 parece que reemplazar https con http como se sugiere arriba puede resultar en pérdida de conectividad. Si esto sucede, una solución alternativa es establecer 'no proxy' en la GUI y usar proxychains-ng para forzar toda la conexión TCP proveniente de la aplicación a través de un proxy. Incluso con proxies HTTP que rechazan conexiones en el puerto 80 (y sólo funcionan para el puerto 443) esto funciona de forma fiable.

Spotify no detecta otros dispositivos en la red local

Si hay un cortafuegos, abre los puertos 57621 para UDP y TCP. Si utilizan una variante de las iptables Un simple cortafuegos con estado, haz lo siguiente:

iptables -A TCP -p tcp --dport 57621 -j ACCEPT -m comment --comment spotify
iptables -A UDP -p udp --dport 57621 -j ACCEPT -m comment --comment spotify

También es posible restringir la fuente y el destino a la red local.

Si utilizas Spotify Connect para reproducir música en un altavoz inalámbrico o en un AVR, tu cortafuegos debe estar configurado para la búsqueda de mDNS de Spotify. Lamentablemente, utiliza un puerto aleatorio sin privilegios [4] lo que hace que estas reglas del cortafuegos sean bastante engorrosas. Afortunadamente, puedes restringir las reglas al puerto de origen 1900 o 5353.

iptables -A UDP -p udp --sport 1900 --dport 1025:65535 -j ACCEPT -m comment --comment spotify
iptables -A UDP -p udp --sport 5353 --dport 1025:65535 -j ACCEPT -m comment --comment spotify

El texto de la barra de búsqueda es invisible cuando se usa un tema oscuro

El texto de la barra de búsqueda parece estar codificado en blanco, lo que lo hace invisible cuando se utiliza un tema Qt oscuro. Para arreglar esto, necesitarás anularlo.

Primero, crea un archivo css en algún lugar donde tu cuenta tenga permiso para leer/escribir (como tu carpeta de inicio). Llámalo como quieras (por ejemplo, spotify-override.css).

Abre el archivo css recién creado y añade lo siguiente:

QLineEdit { color: #000 }

Guarda el archivo y ciérralo. A continuación, tienes que añadir lo siguiente al final de tu lanzador de Spotify (sustituye la ruta por la ruta real de tu archivo css):

-stylesheet=/home/user/spotify-overide.css

Tu ruta de ejecución completa debería verse algo así:

/usr/share/spotify/spotify-client/spotify -stylesheet=/home/user/spotify-override.css

No puedo reproducir archivos locales

Si recibes un error de segmentación o un mensaje de error al intentar reproducir archivos locales, por ejemplo:

   Esta canción no está disponible. Si tienes el archivo en tu ordenador puedes importarlo.

- es causado por una dependencia ausente de libavcodec. Para los usuarios de PulseAudio, la instalación de ffmpeg-compat-57AUR debería arreglarlo. Si obtienes errores de verificación de PGP cuando lo instalas, puede que tengas que importar la clave PGP correcta.

   $ gpg --keyserver pgp.mit.edu --recv-keys FCF986EA15E6E293A5644F10B4322F04D67658D8

Spotify no hace caso a las reglas de ventana

Los gestores de ventanas que intentan aplicar reglas específicas, como iniciarlo en un espacio de trabajo determinado o maximizarlo al inicio, no tienen ningún efecto, ya que Spotify no establece la propiedad WM_CLASS antes de crear la ventana, violando las especificaciones del ICCCM. Una solución es usar spotifywm-gitAUR.

La interfaz gráfica se cuelga mientras suena la música

También los botones de la pista anterior y la siguiente actúan con un retraso de 10 a 40 segundos. Spotify por defecto intenta enviar una notificación sobre la siguiente pista. Si no tienes un demonio de notificación instalado, la interfaz gráfica de Spotify se cuelga.

La solución es desactivar las notificaciones en la configuración o instalar un daemon de notificación desde notificaciones de escritorio.

Los bordes de la interfaz no aparecen y la aplicación ocupa toda la pantalla sobre el panel de Cinnamon

Si tiene problemas con la desaparición de los bordes de la ventana y la aplicación se pone en pantalla completa pero no puedes arrastrar la ventana o cambiar su tamaño, eso puede ser causado por las preferencias localizadas por defecto en el archivo de texto /home/yourusername/.config/Spotify/Users/yourusername-user/prefs configs:

app.window.position.width=1366
app.window.position.height=768

Lo que probablemente ocurre es que cuando ambas resoluciones coinciden con los valores de resolución de tu monitor "principal" o superiores. Esto puede ocurrir al pasar de dos monitores a uno solo. Como solución, cierra Spotify, edita el archivo prefs para eliminar las dos configuraciones anteriores, guárdalo y vuelve a ejecutar Spotify.

No se puede abrir la configuración en Wayland

Cuando se usa Wayland, al hacer clic en el botón 'Settings' no pasa nada. Usar el teclado en su lugar funcionará (flechas e intro). Ver [5]

Véase también

  • playerctl — Un programa de línea de comandos para controlar varios reproductores
  • SpotCommander — Un control remoto web de Spotify
  • Spotify for Linux — Página principal del cliente Linux de Spotify