Platinum Partner

Automating And Managing ITunes With Ruby

From the Ruby on Windows blog.

#   connect to the iTunes application object
require 'win32ole'
itunes = WIN32OLE.new('iTunes.Application')

#   place iTunes into MiniPlayer mode
itunes.BrowserWindow.MiniPlayer = true

#   toggle the play/pause setting
itunes.PlayPause

#    increase or decrease volume
itunes.SoundVolume = itunes.SoundVolume + 50
itunes.SoundVolume = itunes.SoundVolume - 25

#   go to previous or next track
itunes.PreviousTrack
itunes.NextTrack

#   grab the entire library playlist
library = itunes.LibraryPlaylist
tracks = library.Tracks

#   select and play a song by name
song = tracks.ItemByName('At Long Last Love')
song.Play

#   search for tracks
artist_tracks = library.Search('Sinatra', 2)
album_tracks = library.Search('Come Fly With Me', 3)
title_tracks = library.Search('Fly Me To The Moon', 5)

#   add all track objects to a ruby array
songs = []
for track in tracks
    songs << track
end

#   sort the songs array
songs = songs.sort_by{|song| [song.Artist, song.Year, song.Album, song.TrackNumber]}

#   iterate over the songs collection
songs.each do |song|
    puts [song.Artist, song.Year, song.Album, song.TrackNumber, song.Name, song.Time].join("\t")
end

#   create a new playlist and add songs
playlist = itunes.CreatePlaylist("My New Playlist")
song = tracks.ItemByName('At Long Last Love')
playlist.AddTrack(song)

#   add all playlist objects to a ruby array
playlists = []
itunes.Sources.each do |source|
    source.PlayLists.each do |playlist|
        playlists << playlist
    end
end

#   iterate over the collection of playlist objects
for playlist in playlists do
    puts playlist.Name
end

#   select a playlist by name, and play the first track
playlist = itunes.Sources.ItemByName('Library').Playlists.ItemByName('All Sinatra')
playlist.PlayFirstTrack

#   exit the iTunes application
itunes.Quit

Further details can be found here.

{{ tag }}, {{tag}},

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}
{{ parent.authors[0].realName || parent.author}}

{{ parent.authors[0].tagline || parent.tagline }}

{{ parent.views }} ViewsClicks
Tweet

{{parent.nComments}}