Spotify

提供: ArchWiki
2015年12月7日 (月) 23:00時点におけるKusakata (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

Spotify は数百万もの曲にアクセスすることができるデジタル音楽サービスです。

このインターネット音楽サービスを使うことで無料でデータベースから曲を選択してストリーミング再生できます。以前はヨーロッパ限定でしたが、最近になってアメリカでもサービスが開始されました。Debian と Fedora ディストリビューション向けに公式に Linux クライアントがパッケージで配布されており、AUR からインストールすることが可能です: spotifyAUR。公式では、Linux ユーザーは Wine で Windows クライアントを動かすことを推奨しています。また、曲の間にときどき音声広告が流れます。

Spotify では無料ユーザーがプレイリストを作成することができ、シャッフルしたり、リピートするトラックを設定することができます。Spotify で提供されているコンテンツにはオリジナル版と検閲版の両方があります。

クライアントのインストール

使用したいクライアントをどちらか選択してください。Linux クライアントの方が好評ですが、wine の使用に慣れている場合、windows クライアントを選択するのも良いでしょう。両方のクライアントをインストールする必要はありません。mopidy + mopidy-spotifyAUR または despotify-svnAUR のようなオープンソースクライアントも存在しますが、基本的にプレミアムアカウントでないと動作しません。https://play.spotify.com/ で使えるオンラインプレイヤーも存在します (flash が必要です)。

Linux

AURspotifyAUR を使うと自動的にソフトウェアがダウンロードされます。ローカルファイルを再生したい場合は ffmpeg-compat もインストールする必要があります。

Windows (Wine)

Wine を見て下さい。

Spotify のウェブサイトでアカウント登録してから Spotify を取得してください。アプリケーションのアプリ内登録はできません。ただし次の URL を使うことで登録をする前にアプリケーションを取得することは可能です: [1]

登録してインストーラーのコピーをダウンロードしたら Wine でアプリケーションを実行してください。ファイルを右クリックすることで実行できます。実行できない場合、ダウンロードしたディレクトリで下のコマンドを実行することでターミナルから実行できます:

$ wine Spotify\ Installer.exe

アプリケーションが正しくインストールされたら、ターミナルから以下のコマンドを実行したり、ALT+F2 ランチャーから実行することで Spotify を起動できます:

x86_64 版の Arch Linux を使っている場合、以下のようにして実行する必要があります:

$ wine "/home/username/.wine/drive_c/Program Files (x86)/Spotify/spotify.exe"

x86 版の Arch Linux を使っている場合は、以下のコマンドで実行できます:

$ wine ~/.wine/drive_c/Program\ Files/Spotify/spotify.exe

何か問題が発生するときは、winecfg で Windows XP または Windows 7 をエミュレーションするように設定することを推奨します。

グローバルなメディアホットキー

Spotify は XF86AudioPlay などのメディアキーをサポートしています。ただし何も設定をしていなかった場合 Spotify の中でしか動作しません。xbindkeys などを使用してグローバルのメディアキーの押下を取得してから、以下のどれか方法を使うことで Spotify に転送することができます。

Linux

Playerctl

playerctlAUR ユーティリティは Spotify プロセスにコマンドを送信するコマンドラインツールを提供します。グローバルに設定する必要があるコマンドは play-pause, next, previous だけです:

$ playerctl play-pause
$ playerctl next
$ playerctl previous

Playerctl は始めに見つけたプレイヤーにコマンドを送るため、VLC などの他のプレイヤーでも使えます。他のプレイヤーを無視させるには、--player=spotify を引数に付けてください。

xdotool

xdotool を使うことでホットキーをアプリケーションに送信することが可能です。以下は Spotify を外側から操作するスクリプトの例です:

#!/bin/sh

case $1 in
   "play")
       key="XF86AudioPlay"
       ;;
   "next")
       key="XF86AudioNext"
       ;;
   "prev")
       key="XF86AudioPrev"
       ;;
   *)
       echo "Usage: $0 play|next|prev"
       exit 1
        ;;
esac
xdotool key --window $(xdotool search --name "Spotify (Premium |Unlimited |Free )?- Linux Preview"|head -n1) $key
exit 0

musickeys.sh のように名前をつけて、スクリプトに実行可能属性を付与してください:

$ chmod +x musickeys.sh

./musickeys.sh play を実行することで曲の再生を切り替えることができます。xbindkeys などキーの押下を取得するツールでこのスクリプトを使うようにバインドできます。

D-Bus

上記のツールの代わりとして、systemd の依存パッケージとしてデフォルトでインストールされる D-Bus があります。D-Bus を使うことで Spotify などの他のプロセスと確実に対話することができます。

Spotify の現在の曲を再生・停止するには:

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

In order to bind this and the other commands to the media keys you need to install Xbindkeys and edit your .xbindkeysrc and add the following lines:

# Play/Pause
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause"
XF86AudioPlay

# Next
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next"
XF86AudioNext

# Previous
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous"
XF86AudioPrev

# Stop
"dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop"
XF86AudioStop

If the above commands do not work, try setting the dbus address:

 USER=`whoami`
 PROCESS=spotify
 PID=`pgrep -o -u $USER $PROCESS`
 ENVIRON=/proc/$PID/environ
 if [ -e $ENVIRON ]
 then
     export `grep -z DBUS_SESSION_BUS_ADDRESS $ENVIRON`
 else
     echo "Unable to set DBUS_SESSION_BUS_ADDRESS."
     exit 1
 fi

Windows

wine 版の Spotify を使っている場合、spotifycmdAUR を使用して Spotify にアクションを送信することができます。こちら に spotifycmd を使用した xmonad バインディングの設定例があります。

Tips & Tricks

トラック通知を無効化

ノート: It is worth noting that if you have a SpotCommanderAUR Server running alongside Spotify, and you disable track notifications by following the instructions below, the SpotCommander Client running on your mobile device will display that “No Music is Playing” and will fail to display track info such as title, artist, album art, etc. Apart from that, the mobile client still works fine though, and is still able to skip, play, pause, control volume, etc.

バージョン 0.9.10 から、トラック変更の通知がデフォルトで有効になっています。この通知は非常に邪魔に思えるかもしれません。無効にするには、以下の行を ~/.config/spotify/Users/<spotifylogin>-user/prefs に追加してください:

 ui.track_notifications_enabled=false

--ui.track_notifications_enabled=false オプションを付けて spotify を実行することでも設定できます。

トラック通知を表示

playerctlAUR には python-gobjectdunst のような通知デーモンと一緒に使用するライブラリが付属しており、トラックが変更されたときにアーティストとタイトルを通知で表示することができます。

#!/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()

何度も再生されるラジオトラックをスキップ

playerctlAUR ライブラリの他の使い道としてラジオで何度も再生されるトラックをスキップすることができます。ラジオ局で聞きたくない曲を低く評価する必要はもうありません。

#!/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()

コマーシャルをミュート

blockify を使えばコマーシャルをミュートできます (Wine 版とネイティブの Linux クライアント両方で使えます)。AURblockifyAUR でインストールできます。

Spotify が起動するたびに blockify をバックグラウンドで実行されるようにするには:

#!/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

上のスクリプトを /usr/local/bin/spotify に配置すれば、Spotify を起動したときに /usr/bin/spotify が優先されます。他に変更する必要があるところはありません。アップデートしても消えることはありません。

リモートコントロール

SSH でコマンドを送信

If you set up ssh on the server, you can send controls from a client to a remote Spotify instance with

$ ssh user@host yourcommand

where yourcommand can be spotifycmd that you installed on the server, or a dbus script for the linux version, as described above.

SSH で Spotify ウィンドウをつかむ

Aside from grabbing the whole desktop with TeamViewer or VNC to remotely control your server, you can also only grab the Spotify Window from the server to your client.

To do that, you need to configure sshd on your server and install x11vnc on both server and client as well as tigervnc on the client. Then you can use these scripts to grab either the complete dektop or only the Spotify window, which essentially gets you GUI client-like behavior as with 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

You will need to copy the second script to ~/.bin/vncgetspotify.sh on the server and the first script to any place on your client.

Finally, to grab the spotify window, run on the client:

$ sh vncget.sh

or, for the whole desktop:

$ sh vncget.sh all

HiDPI モード

ノート: この機能は現在 spotify-betaAUR パッケージでのみ利用可能です。spotifyAUR でテストしたバージョン: 0.9.17.8-1。spotify-betaAUR でテストしたバージョン: 1.0.14.124-2。

最新の Spotify ビルドも DPI に対応していないため、ターミナルコマンドでインターフェイスをスケールする量を指定します:

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

X はインターフェイスをスケールする量に置き換えて下さい。例: 200。

/usr/share/applications ディレクトリにある spotify.desktop ファイルを変更することで、デスクトップから起動したときにスケールを適用することができます。

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

トラブルシューティング

DWM で Spotify Linux を使用した時に画像が点滅したり正しく表示されない

Start spotify as a floating window.

You can add this rule to the rules array in your config.h:

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

This will tell dwm to start spotify as a floating window associated with the tag "2" no matter what window mode you are in. Recompile and install dwm to apply your new settings.

検索やブラウザ、ラジオが動作しない

Spotify bug report concerning non-english locales

If various tabs like browsing only show a blank screen, the search field doesn't seem to do anything or the radio page is broken (stuck when starting and unsresponsive to input) you might be using a custom locale.

Spotify を起動する前に LC_NUMERIC 環境変数を en_US.utf8 に設定してみてください。

Spotify がローカルファイルを再生しない

This can manifest in a very unusual manner like some songs not playing when you try to stream them because the player attempts to play them from the hard drive.

Try installing ffmpeg-compat, as per this forum discussion.

SpotifyHelper.exe がクラッシュする (Windows クライアント)

Spotify を起動した時に SpotifyHelper.exe がクラッシュする場合、winecfg で d3d9 ライブラリを無効化してください。"Libraries" タブを開いて、"d3d9" を選んで Add をクリックしてください。無効化するには、edit をクリックして "Disable" オプションを選択してください。

ランチャーアイコンがおかしい (Windows クライアント)

ランチャーに Spotify アイコンが正しく表示されない場合、次の行を ~/.local/share/applications/wine/Programs/Spotify.desktop に追加してください:

StartupWMClass=spotify.exe

GUI スレッドのデッドロック

Awesome などのタイル型ウィンドウマネージャでは、新しい曲やプレイリストをダブルクリックしたときにデッドロックが発生することがあります。~/.config/spotify/Users/[1-9]*-user/prefs ファイルを編集して以下の行を追加してください:

ui.track_notifications_enabled=false

そして Spotify を再起動します。

ノート:
  • Note that several causes appear to exist for this problem, and this particular fix only applies to select versions of Spotify client and Awesome, and it may be that additional root causes exist for the Debian and Ubuntu users reporting this issue. Observed with Spotify 0.9.17.1.g9b85d436 and Awesome 3.4.15.
  • As of Spotify 1.0.17.75-2, ui.track_notifications_enabled=false seems to be ignored. On the other hand some, users report not experimenting the deadlock anymore as of Awesome 3.5.6. Deadlocks could be caused by scripts called by Awesome, which rely on buggy spotify dbus properties. See [2].
  • This issue has multiple causes, so keep track of what you change while researching this. Update this section with additional scenarios and fixes.

Pulseaudio

PulseAudio/トラブルシューティング[3] を見て下さい。

プロキシを使ったときにアルバム画像が表示されない、四角が表示される

spotify を終了して、spotify の設定 ~/.config/spotify/prefs を開いて下さい。

@https を @http に変更してください:

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

See original form post here.

Spotify でローカルネットワーク上の他のデバイスが検出されない

ファイアウォールを使っている場合、UDP と TCP のポート 57621 を開いて下さい。iptablesシンプルなステートフルファイアウォールを使用している場合、以下で設定できます:

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

It is also possible to restrict the source and destination to the local network.

ダークテーマを使っている場合に検索バーのテキストが読めない

検索バーのテキストは白色に決められているため、Qt のダークテーマを使っている場合見えなくなります。色を上書きすることで解決できます。

まず (ホームフォルダなど) 読み書きができる場所に css ファイルを作成してください。名前は何でもかまいません (例: spotify-override.css)。

作成した css ファイルを開いて以下を追加します:

QLineEdit { color: #000 }

ファイルを保存して終了してください。次に、Spotify のランチャーの末尾に以下を追加します (css ファイルのパスは実際のパスに置き換えて下さい):

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

起動パスは以下のようになります:

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

参照