| 著作一覧 |
やっぱ、プログラミング漢(guyと振る)はこうでなきゃな。「必要なことは全部 Rubyist Magazine の記事に書いてあるから」とさらりと言うところがいいな。
車輪は2個必要だ(セグェイしかり、芝刈り機しかり、自転車しかり)。
でも、なんか違うような気もするが。両方が間違えてる可能性ってテストプログラムが間違える可能性より高いように思うんだけど。
何にも選択していないとcurrentTrackがnilになるな。
# playing.rb
require 'win32ole'
itunes = WIN32OLE.new("iTunes.Application")
track = itunes.CurrentTrack
if track.nil?
puts "not playing"
else
puts "#{track.Artist} - #{track.Name} (#{track.Album})"
end
かな。
トラック名がマッチしたものをプレイリストに登録して再生するとか
require 'win32ole'
if ARGV.length != 2
puts 'usage: ruby plist.rb list-name track-name'
exit(1)
end
itunes = WIN32OLE.new("iTunes.Application")
list = itunes.createPlayList(ARGV[0])
r = Regexp.compile(ARGV[1], Regexp::IGNORECASE)
itunes.libraryPlaylist.tracks.each do |trk|
if r.match(trk.name)
list.addFile(trk.location)
end
end
list.playFirstTrack
track#locationはファイル名(多分URLとかもあり)だった。
list#addFileのほかにlist#addUrlもある。っていうかlist#addTrackというのもあるから素直にやるなら直接トラックを追加するほうが良いかも
if r.match(trk.name)
list.addTrack(trk)
end
オムニバスとかも突っ込んだりしてるので重複しているエントリーがある。それを削除する危険なスクリプト。名前とアーティストと時間だけでチェックしている(というかアルバム名をチェックしたらだめだから)。ただし、このスクリプトはトラックを削除するだけ。
require 'win32ole'
h = Hash.new
a = []
itunes = WIN32OLE.new("iTunes.Application")
itunes.libraryPlaylist.tracks.each do |trk|
s = sprintf("%s %s %s", trk.name, trk.artist, trk.time)
if h.key?(s)
puts s
a << trk
else
h[s] = true
end
end
a.each do |trk|
# File::unlink(trk.location) #コメントは外さないほうが良いと思うが。
trk.delete
end
っていうのとは別に、動かしてわかったがファイルは削除したのにエントリーが残っているのもある(iTunes上は左端に!で示されている)。そういうのをプレイリストから削除するスクリプト。
require 'win32ole'
a = []
itunes = WIN32OLE.new("iTunes.Application")
itunes.libraryPlaylist.tracks.each do |trk|
begin
if trk.location.empty?
a << trk
end
rescue
p trk.name
end
end
a.each do |trk|
trk.delete
end
途中でrescueしているのは、URLをインポートしたトラック。この場合、Track#locationはメソッド自体が存在せず、かわりにTrack#urlがあった。
ジェズイットを見習え |