2007/12/22

iTunes-playlist-output.xml

iTunesplaylistを選択-iTunesメニュー-ファイル-書き出し-Unicodeテキスト
を選択した結果のテキストどれも全く気に入らないので、XML書き出したのを整形。

# 自分で作成した playlist の曲をよみやすいテキストに書き出す.一歩手前
# playlist.rb

require 'rexml/document'

class BaseXML

  attr_accessor :doc

  def initialize(path=nil)
    @doc = readxml(path) unless path.nil?
  end

  def readxml(path)
    return nil unless FileTest.exist?(path)
    return REXML::Document.new(IO.read(path)) unless path.nil?
  end

  def key?(xpath)
    return true unless @doc.root.elements[xpath].nil?
    return false
  end

  def lookup(xpath)
    return nil unless key?(xpath)
    if @doc.root.get_elements(xpath).size == 1
      @doc.root.elements[xpath]
    else
      @doc.root.get_elements(xpath)
    end
  end

end

def one(song)
  h = Hash.new
  begin
    song.each{|x| h[x.text] ||= x.next_element.text}
  rescue
  end
  trackID = h['Track ID']
  @playlist[trackID] = [h['Name'], " / ", h['Album'], " -", h['Artist']]
end

@playlist = Hash.new
xml = BaseXML.new('output.xml')
list = xml.lookup('dict/dict/dict').each{|k| }
list.each{|x|
  song = x.to_a.select{|i| i.class.to_s =~ /REXML::Element/}
  one(song)
}

iid = xml.lookup('dict/array/dict/array/dict/integer')
iid.select{|x| x.class.to_s =~ /REXML::Element/}
iid.each{|x|
  print @playlist[x.text]
  print "\n"
}
exit

% /usr/local/bin/ruby playlist.rb > output.txt


+++ memo +++

iTunes-ファイル-書き出し が書き出す XML の特徴。

document root からたどって <dict><dict> の配下にある <dict> 要素におさめられているのが一曲分。
一曲分の要素は <key>or<integer>or<string> のいずれかで構成されている。

 <dict>
 <key>Track ID</key><integer>2314</integer>
 <key>Name</key><string>イエロー・マジック・カーニバル</string>
 <key>Artist</key><string>Van Dyke Parks</string>
 <key>Composer</key><string>細野晴臣</string>
 <key>Album</key><string>細野晴臣トリビュート・アルバム Tribute to Haruomi Hosono [Disc 1]</string>
 <key>Genre</key><string>ポップ</string>
 <key>Kind</key><string>AAC オーディオファイル</string>
 ...
 </dict>


例えば、doc.root.elements['dict/dict/dict/Artist'] としても ”Van Dyke Parks” は得られないから
h['Artist'] で呼び出しができるように一旦ハッシュにした。

xpath='dict/array/dict/array/dict/integer'には曲固有のID番号がふってある。path='dict/array/dict/array/dict/integer'の'integer' 要素の順番が曲順であって
xpath='dict/dict/dict'の順番とは無関係。

--imported_from
http://www.midore.net/daybook/2007/12/1198249205.html

2007/12/18

Leopard-Ruby

Security Update 2007-009 に Ruby update が含まれていた

Security Update 2007-009

% ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [universal-darwin9.0]


--imported_from
http://www.midore.net/daybook/2007/12/1197975605.html

2007/12/16

Leopard-QuickTime

このさい QuickTime 関連のインターネットプラグインおふって QuickTime.app も使用しないように。

% cd /Library/Internet Plug-Ins
% sudo chmod 600700 QuickTime*
% sudo chmod 600700 /Applications/QuickTime Player.app

Safari -環境設定-ジャバスクリプト にチェックをいれて、
ヘルプーインストール済みプラグイン を表示. QuickTime 関連のプラグインがなくなっているのを確認

OS X ソフトウエア・アップデートが出たときのことを考えていなかったのを反省し修正。datetime='2007-12-18T21:32:59+09:00'
--imported_from
http://www.midore.net/daybook/2007/12/1197730805.html

2007/12/10

Leopard-Spotlight

スポットライトをオフる

http://www.macosxhints.com/article.php?story=20071102215912892

/System/Library/LaunchAgents/com.apple.Spotlight.plist
/System/Library/LaunchDaemons/com.apple.metadata.mds.plist

とありました。

% sudo launchctl unload -w  /System/Library/LaunchAgents/com.apple.Spotlight.plist
% sudo launchctl unload -w  /System/Library/LaunchDaemons/com.apple.metadata.mds.plist

とした。

さらに
http://www.macosxhints.com/article.php?story=2007103015513360

sudo chmod 0 /System/Library/CoreServices/Spotlight.app
To re-enable it later, do this:
sudo chmod 755 /System/Library/CoreServices/Spotlight.app


実行するとファインダーのメニューバーから虫眼鏡アイコンなくなりすっきりした。

+++

追記:スポットライトをオフると書いたとおり上記を実行するとスポットライト機能が停止します。言うまでもないことですがこの意味が分からない人は実行すべきではないでしょう。また同時に、find や grep コマンドを利用したことのない人や find って何?という人も上記のコマンドを実行すべきではないでしょう。
個人的には find (詳細は % man find ) を利用していてなんら不足はなく Spotlight を使用していなかった為 www.macosxhints.com にあった内容はとても有益でした。

ターミナルを起動したことがない人や普段コマンドを利用してない人が、スポットライト機能を抑制したい時に最初に行うべき操作は、システム環境設定->Spotlight->プライバシーを開いて抑制したいディレクトリやハードディスクを指定したり、Spotlight->検索結果を開いて検索結果に表示されるカテゴリを制御すること、かもしれません。もちろん公式な情報が知りたければ当然ながらアップルに電話してサポートをお願いするべきです。

ちなみに、なにかの間違いで上記のコマンドを実行してしまいスポットライト機能を停止させてしまった場合、再びもとの状態に戻すには
Applications->Utilities->Terminal.app を起動し下記のコマンドを実行しコンピュータを再起動。管理者権限を有するユーザで実行する必要があります。launchctl コマンドの詳細は % man launchctl とすると表示されます。

% sudo launchctl load -w  /System/Library/LaunchAgents/com.apple.Spotlight.plist
% sudo launchctl load -w  /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
% sudo chmod 755 /System/Library/CoreServices/Spotlight.app


% は単なる記号です。打ち込む必要はありません。

--imported_from
http://www.midore.net/daybook/2007/12/1197212405.html

+++ 追記 +++
2010-02-06

関連する記事
10.6.2 Spotlight OFF
"Leopard"ラベルがついた全ての記事

2007/12/02

音楽の力

DVDタイトル名そのままの充実した内容だった。

ISBN: B000NA7WTE

--imported_from
http://www.midore.net/daybook/2007/12/1196521205.html