Skip to content

Instantly share code, notes, and snippets.

@fddcddhdd
Created October 14, 2014 04:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fddcddhdd/0026fcc44eeed71cca9c to your computer and use it in GitHub Desktop.
Save fddcddhdd/0026fcc44eeed71cca9c to your computer and use it in GitHub Desktop.
フォルダとファイル名で管理しているmp3ファイルから、iTunes & iPhone用のプレイリストを自動生成するシェルスクリプト
#!/bin/sh
# 定数(全曲が入ったm3uファイル名・フォルダ毎のm3uを入れるフォルダのパス)
all_m3u_text_filepath=$(dirname $0)/all_m3u.txt
m3u_folder_fullpath=$(dirname $0)/m3u_list/
# このシェルスクリプトのサブディレクトリ以下にある音楽ファイル(mp3, wma)のリストファイルを生成。
find $(dirname $0) -name "*.mp3" -o -name "*.wma" | sort > "${all_m3u_text_filepath}"
# m3uファイルを入れるフォルダを生成(既にあったら削除)
rm -rf "${m3u_folder_fullpath}" 2>/dev/null
mkdir "${m3u_folder_fullpath}" 2>/dev/null
# 最初に生成した音楽ファイルリストを一行ずつ読み込む
cat "${all_m3u_text_filepath}" | while read line
do
# 音楽ファイルのフルパス
filepath=$(dirname "${line}")
# 音楽ファイル名
filename=$(basename "${line}")
# 音楽ファイル名の親フォルダ名
parent_name=$(basename $(dirname "${line}"))
# 書き込む音楽フルパスをコマンドラインに表示する(途中経過の表示)
echo $filepath"/"$filename
# 親フォルダ名のm3uファイル(プレイリスト)に書き込む。
# 親フォルダ名が変われば、自動的に書き込み先ファイル名が変わるのがミソ!
output_file=${m3u_folder_fullpath}${parent_name}.m3u
echo $filepath/$filename >> ${output_file}
done
# ツリー構造(フォルダの中にフォルダの中に・・・。)は再現されず、音楽ファイルの親フォルダ名でプレイリストが生成される。
# フォルダ名に半角スペースが入っていると、なぜかm3uファイル名が半角スペース→改行に変換されるけどitunes上では問題ないから、まあいいか・・・。
# itunes上で、手動でプレイリストフォルダを使えば、ツリー構造も再現できるはず。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment