Spotify (Español)
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.
- 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.
- Mopidy — Una alternativa basada en Music Player Daemon que es capaz de reproducir desde Spotify con una extensión.
- https://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.
- 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.
- spotify-tui — Un cliente de Spotify para la terminal escrito en Rust.
- 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..
- Tomahawk — Un reproductor de música escrito en C ++ / Qt. Ya no se desarrolla activamente
- https://github.com/tomahawk-player/tomahawk || 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
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
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
blockify
Con blockify puedes silenciar los anuncios. Está disponible en el AUR como blockifyAUR[enlace roto: package not found].
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.
- 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.
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í.
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
- Spotify for Linux — Página principal del cliente Linux de Spotify