moOde audio playerでファイルの更新日付順で再生する方法

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ベースの良いところですね。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク