Raspberry Pi 4にmoOde audio playerをインストールをしてみた結果、音質面では何ら不満はないのですが、これまでと使い勝手が違いすぎるのは困りものです。
特に致命的なのがファイルのソートが出来ない点で、これまでWindows PCにAIMPをインストールしてNAS上の音楽を聴いていたのですが、エクスプローラーでファイルを日付の新しい順に並べてAIMPにファイルをドラッグ&ドロップ、という使い方をしていた自分としてはこの仕様は許容できないので、どうにか出来ないものかと試行錯誤した結果、bashのスクリプトでNASのフォルダにアクセスしてファイルを日付順で並べたプレイリストを作成する、というパワープレイで乗り切ることに。
前提条件としてmoOde audio playerのLibrary設定でNASをマウントしておく必要がありますが、とりあえずmp3という名前でマウントポイントを用意した上で、
sudo vi /usr/local/bin/update_playlist.sh
で以下のようなファイルを作成。
#!/bin/bash find /mnt/NAS/mp3 \( -iname "*.mp3" -o -iname "*.flac" -o -iname "*.m4a" \) -type f -printf "%T@|%p\n" \ | sort -nr \ | cut -d'|' -f2 \ | sed 's|/mnt/||' \ > /var/lib/mpd/playlists/playlist.m3u chown mpd:audio /var/lib/mpd/playlists/playlist.m3u
実行権限も忘れずに。
sudo chmod a+x /usr/local/bin/update_playlist.sh
ちなみに我が家ではオーディオファイルはmp3とflacとm4aの三択なので3つ併記してますが、ここは利用環境に応じて書き換える必要ありかと。
さらにサーバ起動時に自動でリストを更新してほしいので
sudo vi /etc/systemd/system/update-playlist.service
でsystemdの設定ファイルを作成。中身は以下。
[Unit] Description=Update MPD playlist after NAS mount After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/bin/bash -c 'until mountpoint -q /mnt/NAS/mp3; do sleep 2; done; /usr/local/bin/update_playlist.sh' [Install] WantedBy=multi-user.target
NASフォルダをマウントするより前にプレイリストを作り始めちゃうとまずいので、マウントされるまでwaitをかけているのがチャームポイントです。
最後にsystemctlでdaemon登録したら完了です。
sudo systemctl daemon-reexec
sudo systemctl enable update-playlist.service
あとは作成したプレイリストを読み込めばいつでも更新日付の新しいファイルから再生できるようになった訳ですが、そもそもMPDにソート機能が備わっていればこんなことしなくてもいいのになぁと思う一方で、こうして自分でカスタマイズできるのはLinuxベースの良いところですね。
