MopidyでSpotifyなどを聞く

 MopidyとはPythonで実装されたMPD互換の音楽プレーヤーです。「なんだそりゃ、MPDでいいじゃないか」と言うかもしれませんが、こちらはSpotifyやプラグインを入れればAudio Addict運営のラジオ局やSoundCroud、Google Play Musicなどにも対応します。GUIソフトで言えばClementineみたいな感じでしょうか。「UbuntuならSpotifyの公式プレーヤーがあるじゃないか」と思うかもしれませんがそれはそれ。なんとなくやってみたくなったのです。
 前提条件はUbuntu16.10、Spotifyは私がプレミアム会員なのでプレミアム会員です。無料会員ではどうなるか分かりません。また、systemdで常駐させます。ユーザー権限でも立ち上げることはできますが、confファイルの場所が違ったり使うコマンドが違ったりしますので、ご注意を。
 インストールする前のお断りとしてはMPDクライアントから見たMopidyは日本語ファイル名が化けてたりでイマイチなのでローカルファイルを再生するだけなら素直にMPD入れたほうがいいと思いますし、逆にSpotifyしか使わないと言う事ならばSpotify公式のプレーヤーの方が使いやすいです。プラグインも思ったように動かなかったりで一言で言えば「これからのソフトウェア」です。
 では、まずはリポジトリの登録から。
>・$ wget -q -O - https://apt.mopidy.com/mopidy.gpg | sudo apt-key add -・$ sudo wget -q -O /etc/apt/sources.list.d/mopidy.list https://apt.mopidy.com/jessie.list そしてリポジトリをアップデートしてインストールします。
>・$ sudo apt update・$ sudo apt install mopidy mopidy-spotify MopidyとMopidyのSpotifyプラグインをインストールしてます。
 次にSpotifyの設定をします。「/etc/mopidy/mopidy.conf」を管理者権限で開いて( $ sudo vi /etc/mopidy/mopidy.conf など)、

>[spotify] enabled : true username : YOURUSERNAME(日本語も大丈夫でした) password : YOURPASSWORD bitrate : 320 timeout : 10
 を付け足します。
 次はWeb Clientをセットアップします。Pythonのパッケージインストーラーの「pip」を使うので、入れていない人は
>・$ sudo apt install pip でインストールしてください。それではWeb Clientをインストールします。今回はMopidy Mopedを試しに入れてみます。
>・$ sudo su・# pip install Mopidy-Moped 管理者(root)になってインストールしてください。そうしないとログインしているユーザーの環境にファイルをインストールしてしまいます。管理者になってインストールすると「/usr/local/lib/python2.7/dist-packages/mopidy_moped/」以下にインストールされます。これを「/etc/mopidy/mopidy.conf」の[http]のところに書きます。

>[http] enabled : true hostname : 192.168.1.250 port : 6680 static_dir : /usr/local/lib/python2.7/dist-packages/mopidy_moped/static/
 hostnameは環境に合わせて設定してください。そしてファイアウォールにも穴を開けます。
>・$ sudo ufw allow 6680・$ sudo ufw enable systemdで起動するようにして、まずは起動してみます。
>・$ sudo systemctl enable mopidy.service・$ sudo systemctl restart mopidy そして「https://192.168.1.250:6680/」にインストールしたマシン、または他のマシンからアクセスしてみます。そうするとWebブラウザに画面が出てくると思います。mopedをクリックし、Searchのところにアーティスト名などを入力しEnterキーを押下するとその結果が右ペインに出てきます。このように。
<a target:”_blank” title:”11” href=”/images/84425b40.png”><img class:”pict” alt:”11” src=”/images/84425b40.png” width:”480” height:”564” hspace:”5” border:”0”/>

 曲をクリックするとそのプレイリストかアルバムごとMopidyのプレイリストに反映され再生されます。・・が、うちでは音が出なかったのです。ユーザー権限起動では聞けました。結論から行くと犯人はPulseaudioでした。Ubuntuはユーザーがログインしている時、Pulseaudio→ALSAと音声を橋渡ししています。デフォルト設定のMopidyはPulseaudioが起動している時はPulseaudio経由で再生しようとするのですが、systemdで起動したMopidyはユーザー権限で起動しているPulseaudioに権限の関係で音声を渡せないのです。ユーザー起動しているPulseaudioにMopidyから音を渡す方法はあるにはあるのですが(https://docs.mopidy.com/en/latest/service/#configure-pulseaudio)、めんどい割には音がよくない、と。ハイレゾ音源を聴く時にも不便。音楽を聴く以外にはファイルサーバーなどとして使っていて、YouTubeで動画を見たりしないのでPulseaudioを殺してALSAに直で渡してやれば音が出ると思い、調べました。
 「/etc/pulse/client.conf」を管理者権限で開いて、

>;autospawn : yes;daemon-binary : /usr/bin/pulseaudio↓autospawn : nodaemon-binary : /bin/true
 として、保存し(「;」を外すのを忘れないこと)
>・$ pulseauio –kill するとPulseaudioが起動しなくなります。次にPythonでALSAをいじるのに必要なパッケージをインストールします。
>・$ sudo apt install python-alsaaudio 次にMopidy-ALSAMixerをインストールします。
>・# pip install Mopidy-ALSAMixer・$ sudo systemctl restart mopidy そして、「/etc/asound.conf」を編集します。無ければ作ってください。

>pcm.!default { type hw card 0}ctl.!default { type hw card 0}
 cardの番号は( $ cat /proc/asound/cards )で見て出したい所の番号にします。これでALSAを直に叩いて音を出すようになります。
 これでSpotifyでアルバム単位で楽曲聴取できるようになりました。アルバムごとに聴く人はこれでいいのですが、私はプレイリスト単位で聴くことが多いのでプレイリストを参照、再生できるプラグインが欲しい。ということで探してみると、「Mopidy-Spotify-Tunigo」、「Mopidy-Spotify-Web」が対応しているようでしたのでこれをインストールしました。ついでにAudio Addict運営のネットラジオ局が聴けるプラグイン「Mopidy-AudioAddict」もインストールしました。先に言っておくと上手くいくときと上手くいかない時があったのでこれはオプションでお願いします。
>・# pip install Mopidy-Spotify-Tunigo Mopidy-AudioAddict Mopidy-Spotify-Web そして「/etc/mopidy/mopidy.conf」に[spotify_tunigo]、[spotify_web]、[audioaddict]を追加します。

>[spotify_tunigo] region : jp[audioaddict] enabled : true username : YOURMAILADDRESS #OPTIONAL password : YOURPASSWORD #OPTIONAL quality : 320k[spotify_web] client_id : … client_id value you got from mopidy.com … client_secret : … client_secret value you got from mopidy.com …
 そして
>・$ sudo systemctl restart mopidy Audio Addictもプレミアム会員なので320kとしてますが、無料会員またはアカウントを持ってない人は40k、もしくは64kに制限されます。プレミアム会員だとそれに加えて128kと320kが選べるようになります。Mopidy-Spotify-Webのclient_idとclient_secretは「https://www.mopidy.com/authenticate/#spotify」でSpotifyにログインすると下のボックスに出てきます。これをコピペすればいいです。またこの値は他の人に見られてはいけません。注意して扱うようにしてください。
 で、結果を書いておきましたが、うまく行きませんでした。見れるプレイリストと見れないプレイリストがあり、またAudio Addictの方はリストが表示されるもののクリックしても再生できず・・・。
 最低でもSpotifyのプレイリストが再生できるところまではやってみようと、Web Clientを別のものに変えてみました。
>・# pip install Mopidy-Iris・$ sudo systemctl restart mopidy 「/etc/mopidy/mopidy.conf」を編集。

>[iris] enabled : true pusherport : 6681 country : JP locale : ja_JP
 これにして、SETTINGでポチポチ設定した所無事Spotifyのプレイリストも再生できるようになりました。Audio Addictの方は宿題としておきます。
<a target:”_blank” title:”54” href=”/images/0c3261a6.png”><img class:”pict” alt:”54” src=”/images/0c3261a6.png” width:”480” height:”564” hspace:”5” border:”0”/>

 ここまでストリーミング系の設定をしてきましたが、ここからはローカルファイルを登録し、ローカルファイルを再生できるようにします。MPDをすでにインストールして使ってる方はやってもやらなくてもいいです。
>・# pip install Mopidy-Local-Images 「/etc/mopidy/mopidy.conf」を編集

>[mpd] enabled : true hostname : 192.168.1.250 port : 6601 #すでにMPDがあったのでport変更[local] media_dir : /var/lib/mpd/music scan_follow_symlinks : true library : images
 それぞれ環境に合わせて変更しましょう。そして、
>・$ sudo systemctl restart mopidy・$ sudo mopidyctl local scan 終わったら、
>・$ sudo systemctl restart mopidy 楽曲の多さによりますが数分~数十分かかります。数万曲ある場合はご飯でも食べましょう。
 Web Clientから見ると日本語もちゃんとしてるんですが、MPD Clientから見ると文字がバケバケ(環境または設定によるのかも)なのであまり期待しない方がいいでしょう。
 またMopedから見るとローカルファイルはしっかり見えてSpotify関係が微妙ですが、Irisだと逆でSpotify関係はバッチリですがローカルファイルは微妙です・・・。使い分けるといいかもしれません。
 最後に、Last.fmへのScrobbleを行いましょう。Scrobbleしてない人はもちろんする必要はありません。
>・# pip install Mopidy-Scrobbler 「/etc/mopidy/mopidy.conf」を編集。

>[scrobbler] username : YOURUSERNAME password : YOURPASSWORD
>・$ sudo systemctl restart mopidy これで一通り、と言ったところでしょうか。
 お疲れ様でした。これでSpotifyとローカルメディアファイルの一元管理ができるようになりました。Web Clientをとっかえひっかえしなければいけないのが面倒ですが・・・。Mopidyがこれからどんどん良くなることを願いつつ終わりにしたいと思います。