[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev-en:227

From: SASADA Koichi <ko1 atdot.net>
Date: Fri, 27 Oct 2006 22:00:52 +0900
Subject: [yarv-dev-en:227] YARV Presentation on RubyConf 2006

Hi,

I uploaded my presentation on RubyConf 2006.
http://www.atdot.net/yarv/rc2006_sasada_yarv_on_rails.pdf

In my presentation, I demonstrated controlling iTunes via Win32OLE on YARV.

#####################################################################
# iTunes Controller
#

require 'win32ole'

$itunes = WIN32OLE.new("iTunes.Application")

STDOUT.sync = true

def get_tracks_from_itunes(name)
  plist = $itunes.LibrarySource.Playlists.ItemByName(name)
  raise "Unknown play list name: #{name}" unless plist
  tracks = plist.Tracks
  (1..tracks.Count).map{|i|
    tracks.Item(i).Name
  }
end

def play num, name
  track = $itunes.LibrarySource.Playlists.ItemByName(name).Tracks.Item(num)
  raise "unkown music number: #{num}" unless track
  track.play
end

def show_list pl
  get_tracks_from_itunes(pl).each_with_index{|name, i|
    puts "#{'%02d ' % (i+1)} - #{name}"
  }
end

def select_playlsit
  while true
    pls = $itunes.LibrarySource.Playlists
    (rng = 1..pls.count).each{|i|
      puts "#{'%02d' % i}: #{pls.item(i).name}"
    }
    print "Playlist number? > "
    i = gets.to_i
    if rng.include? i
      puts "Your select: #{name = pls.item(i).name}"
      break name
    end
  end
end

pl = select_playlsit
show_list pl

loop{
  print "> "
  case line = (gets||'').chomp
  when /\d+/
    play line.to_s, pl
  when 'playlist'
    show_playlist
  when 'list'
    show_list pl
  when 'stop'
    $itunes.stop
  when 'exit', ''
    $itunes.stop
    exit
  when 'irb'
    require 'irb'
    IRB.start
  else
    puts "unknown command: #{line}"
  end
}
#####################################################################


Rails demo worked at 6 o'clock, morning of talk day :)  Matz,
Takahashi-san and Ogino-san help me to debug till work.  Thanks!

-- 
// SASADA Koichi at atdot dot net


--
ML: yarv-dev-en quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]