Hatena::Grouprubyist

bongoleのRubyを楽しむ日記 このページをアンテナに追加 RSSフィード

Rubyを楽しむ日記

2006-06-30

[]残ってた!!! 00:37 残ってた!!! - bongoleのRubyを楽しむ日記 を含むブックマーク

すげー俺!!!!

ちょっと前に使ってたiTunesフォルダまだ削除してなかったよ!!

奇跡!!

これで全部復旧できるYO!!!

まじで定期的にバックアップとるかRAID組もう。

[]iTunesライブラリ存在するのにファイルがない曲を探すスクリプト 00:29 iTunesのライブラリに存在するのにファイルがない曲を探すスクリプト - bongoleのRubyを楽しむ日記 を含むブックマーク

iTunesに登録してるフォルダがあるHDDが逝かれて大変だった。

なんとか復旧したものの200曲近く失うことになってしまった。。。。orz

で、どうやって失った曲を調べたかというと以下のスクリプトを"iTunes Music Library.xml"がある場所で実行して調べました。

実行結果としてCSV形式で失った曲のリスト標準入力に出力されます。

("iTunes Music Library.xml"は通常"マイドキュメント/iTunes"の下にあります)

require 'open-uri'
require 'kconv'
require 'csv'

$KCODE='u'

class Mp3
	attr_accessor :name, :album, :artist, :location
end

records = []

tmp_record = nil;
open('iTunes Music Library.xml', 'r').each_line do |line|
	line.strip!
	line =~ %r!<string>(.*)</string>!
	next unless $1
	str = $1
	case line
	when %r!^<key>Name</key>!
		tmp_record = Mp3.new
		tmp_record.name = str.tosjis
	when %r!^<key>Artist</key>!
		tmp_record.artist = str.tosjis
	when %r!^<key>Album</key>!
		tmp_record.album = str.tosjis
	when %r!^<key>Location</key>!
		tmp_record.location = URI.decode(str.sub('file://localhost/','')).tosjis
		records << tmp_record
	end
end

buf = ""
CSV::Writer.generate(buf) do |csv|
	records.each do |r|
		unless test(?e, r.location)
			csv << [r.artist, r.album, r.name, r.location]
		end
	end
end

print buf

CSVアーティスト名, アルバム名, 曲名, ファイルの場所 の順番で出力されます。

もうね、200行近く出力された瞬間泣きそうになったというか泣いてた。。。。。。。。。。。。OTZ