iTunesのデータベースをRubyで書き換えてみる

公開日: : 最終更新日:2014/01/27 Mac

記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

iTunes で一括置換したい曲名があって、

手作業で書き換えるのも面倒なので

Rubyの勉強も兼ねて、自動で書き換えるスクリプトを書いてたんですが、

XMLのXPathがよく分からなくて大苦戦。

アキヨドでXPathについて書いてある書籍を買ってきたり。

そしてついに ‘iTunes Music Library.xml’ を望み通りに書き換えられたんですが、

iTunes を起動しても何故か反映されない。

んで、色々とググっていたら、

 まず、iTunesのライブラリは、iTunes Library.itlというバイナリファイルが主です。これを元にサードパーティツールが連携しやすいようにiTunes Music Library.xmlが生成されています。なので、xmlファイルを書き換えてもiTunesを再起動すると元に戻ってしまいます。

[dgg

あー、そういうことか!

くそー、無駄な時間を過ごしてしまった。

xmllintとか使いながら書き換えたい場所を調査してから書いたので

超ハードコーディングなんですが、一応スクリプトを貼っておきます。


#!/opt/local/bin/ruby

require 'rexml/document'

source = '/Users/user/Music/iTunes/iTunes Music Library.xml'
dest = '/Users/user/Music/iTunes/iTunes Music Library.xml.conv'

xml = REXML::Document::new(File.open(source))

1772.upto(1823) do |n|
path = "/plist/dict/dict/dict[#{n}]"
REXML::XPath.each(xml, path) do |e|
e.each_element("./string[1]") do |s|
if s.text =~ /^\d{2}$/
s.text = s.text.sub(/^(\d{2})$/, '1-\1')
end
end
end
end

xml.write(open(dest, "w"))

関連記事

サンフランシスコのピア39にあるチャウダーズでクラムチャウダーを食す!

lolipop アップルの開発者向けイベント「WWDC2014」

ミスドのカルピスドーナツとカルピスポンデリングを食べてみた!

ミスドで期間限定のカルピスコラボ商品「カルピスドーナツ」と「カルピ

十三カレー計画で牛すじカレーネギのせを食す!(大阪・十三)

「iPhoneアプリ開発キャンプ@大阪」のランチで、十三カレー計画

大阪・難波の加寿屋 法善寺でかすうどんを食す。ランチタイムはおにぎり2個まで無料!

大阪・難波の加寿屋 法善寺 (かすうどん KASUYA)で、かす

ライブドアブログで運営していた「あきお商店」を「卵は世界である」に改名しました

少し前からライブドアブログで「あきお商店」というブログをやって

→もっと見る

PAGE TOP ↑