#!perl # # This example demonstrates controlling the Last.FM stream # by using WebService::LastFM. # # Win32::OLE and iTunes is required to execute this sctipt. # use strict; use Win32::OLE; use WebService::LastFM; # set login data my $username = 'username'; my $password = 'password'; my $ctrl = WebService::LastFM->new( username => $username, password => $password, ); my $stream_info; eval { $stream_info = $ctrl->get_session; }; die "$@\n" if $@; # create an iTunes object, then add the stream url to its playlist my $itunes = my $itunes = Win32::OLE->new("iTunes.Application"); my $stream = $itunes->LibraryPlaylist->AddURL($stream_info->stream_url); $stream->play; print "Command: "; while (<>) { chomp; # fetch now playing song if ($_ eq 'get') { my $current_track = $ctrl->get_nowplaying; if ($current_track->streaming eq 'false') { print "No track info now\n"; } else { print $current_track->artist.': '.$current_track->track."\n"; } } # change station # mode: 'personal', 'profile' or 'random' elsif ($_ =~ /change\s+(.+)/) { my $response; eval { $response = $ctrl->change_station($1) }; if ($@) { print "$@\n"; } else { print "Response: $response\n"; } } # quit elsif ($_ eq 'quit') { $stream->delete; print "quit...\n"; last; } # send a command # command: 'skip', 'love', 'ban', 'rtp' or 'nortp' else { my $response; eval { $response = $ctrl->send_command($_) }; if ($@) { print "$@\n"; } else { print "Response: $response\n"; } } print "Command: "; } exit;