購入した CD を flac 形式でリッピングして,それを適当に管理する方法について以下のように方針を定めた:
Apple Lossless ではなく flac を利用することについては,特に理由があるわけではなく,なんとなく.
X Lossless Decoder や cmus については検索したり,README
や man
を読んでください.
ファイル名については,当初は "<Album Artist>/<Album Title> <Disc Number>/<Track Number> <Track Title>.flac"
の形にしようかと思っていましたが,結局やめました.
理由はファイル名(ディレクトリ名)に非 ascii なアクセント付文字を持たせたくなかったからです.
(どうにも rsync -av --delte
で楽曲データを移そうとすると,アクセント付き文字を名前に持つファイルが一旦削除されてから再転送されてしまい困りました.)
ファイルのメタデータが正しければそうそう問題は無いはずなので,ファイル名は "Disc <Disc Number> - Track <Track Number>.flac"
の形にすることにしました.
加えて次の理由から rename-flac
というシェルスクリプトを書いて楽曲ファイルをリネームすることにしました.
次のスクリプトは,与えられたファイルを
"<Album Artist>/<Album Title>/Disc <Disc Number> - Track <Track Number>.flac"
にリネーム/
や :
などのヤバそうな文字を適当に置換します. あまり考えずに書きなぐったのであまりよろしくないと思いますが,ひとまずはこれで期待した結果になりました.
#! /bin/bash | |
################################################################################ | |
# | |
# TL; DR | |
# This script rename filename.flac to | |
# <Album Artist>/<Album Title>/Disc <Disc Number> - Track <Track Number>.flac | |
# | |
# Usage: | |
# rename-flac [filename] | |
# | |
# Dependencies: | |
# - metaflac | |
# - unaccent | |
# | |
################################################################################ | |
if [[ -z $MUSIC_LIBRARY ]]; then | |
MUSIC_LIBRARY=$(echo "${HOME}/pCloud Drive/Music") | |
fi | |
# get metadatas | |
ALBUM_ARTIST="$(metaflac --show-tag=ALBUMARTIST "$1" | cut -d= -f2 | unaccent utf8)" | |
ALBUM_TITLE="$(metaflac --show-tag=ALBUM "$1" | cut -d= -f2 | unaccent utf8)" | |
DISC_NUMBER="$(metaflac --show-tag=DISCNUMBER "$1" | cut -d= -f2)" | |
TRACK_NUMBER="$(metaflac --show-tag=TRACKNUMBER "$1" | cut -d= -f2)" | |
# rename some special characters: /, : | |
ALBUM_ARTIST="${ALBUM_ARTIST//\//;}" | |
ALBUM_ARTIST="${ALBUM_ARTIST//:/ -}" | |
ALBUM_TITLE="${ALBUM_TITLE//\//;}" | |
ALBUM_TITLE="${ALBUM_TITLE//:/ -}" | |
new_dir="${MUSIC_LIBRARY}/${ALBUM_ARTIST}/${ALBUM_TITLE}" | |
new_name="Disc ${DISC_NUMBER:-1} - Track ${TRACK_NUMBER}.flac" | |
# echo "${new_dir}/${new_name}" | |
mkdir -p "${new_dir}" | |
mv "$1" "${new_dir}/${new_name}" |
unaccent
は,macOS の場合 brew install unac
でインストールできます.
ディレクトリ内のすべての flac ファイルをリネームするのは以下のワンライナーで実現できます1.
find <path to MUSIC_LIBRARY> -type d -print0 | xargs -0 -t -I{} bash -c 'cd "{}" && for file in *.flac; do renam-flac "$file"; done
リネーム後,空のディレクトリは find <path to MUSIC_LIBRARY> -type d -empty -delete
で削除できます.