iTunes Libraryの重複ファイルを消すスクリプトをRubyで書く
Posted in Ruby on 7月 5th, 2008 by Norihisa Nagano – Be the first to commentRuby入門しました.
何か練習に書いてみようということで,ひとつ.
iTunesでライブラリを再構築したら
うっかり,同じ曲も足されちゃって
hoge.mp3
hoge 2.mp3
というのが果てしなく増殖してしまうことがよくあります.
こういうのさくっとRubyで解決できたら便利だなと挑戦.
戦略は
ファイル名が
***(space)2.extensionなら,
***(space).extensionを探す
あれば,重複だーということで削除.
レアなケースで
***(space)0.extension
***(space)1.extension
***(space)2.extension
***(space)3.extension
という曲名だったらアウトですが,気にしない.だって分からんもん.
ディレクトリ以下の全てのファイルパスを取得するコードをたのしいRubyからパクって
僕はdeleteIfDuplicatedを実装しただけの楽ちんコード.
def deleteIfDuplicated(fileName)
p fileName
if / 2./ =~ fileName
find = fileName.sub(” 2.”,‘.’)
if FileTest.exist?(find)
p ‘delete:’,fileName
File.delete(fileName);
end
end
end
def traverse(path)
if FileTest.directory?(path)
dir = Dir.open(path)
while name = dir.read
next if name == “.”
next if name == “..”
traverse(path + “/” + name)
end
dir.close
else
deleteIfDuplicated(path)
end
end
こういう風に使います.
path = “/Volumes/400GB/iTunes”
traverse(path)
で,削除したら
iTunes のライブラリからファイルが存在しない曲を効率良く取り除く方法
で削除.
もし試す場合,何かが起こっても僕は一切責任取れませんので
バックアップなどやってから実行してください.
僕の環境では5000曲が削除できました.
あ〜,ちゃんと 2.extensionが最後が確認した方がいいな.
まぁいいや.