use strict; use vars qw($VERSION %IRSSI); use Irssi; $VERSION = "1.1.0"; %IRSSI = ( name => "itunes", licence => "Public Domain", description => "Prints currently playing itunes song in active channel", changed => "Mon Feb 28 00:30:00 EET 2006", changes => " 1.1.0 - added error checking and support for mp3s without id3 tags 1.2.0 - moved all text processing within applescript, added time stamps " ); sub cmd_mp3 { my $witem = Irssi::active_win()->{active}; if ($witem && ($witem->{type} eq "CHANNEL" || $witem->{type} eq "QUERY")) { my $applescript = "tell application \\\"System Events\\\" if (get name of every process) contains \\\"iTunes\\\" then tell application \\\"iTunes\\\" try set strout to \\\"\\\" if artist of current track is not \\\"\\\" then set strout to artist of current track & \\\" - \\\" end if set strout to strout & name of current track & \\\" \\\" if album of current track is not \\\"\\\" then set strout to strout & \\\"[Album: \\\" & album of current track & \\\"] (\\\" else set strout to strout & \\\"(\\\" end if if player state is not stopped then set strout to strout & (round (player position / 60) rounding down) & \\\":\\\" & player position mod 60 & \\\" / \\\" end if set strout to strout & (round ((duration of current track) / 60) rounding down) & \\\":\\\" & (duration of current track) mod 60 & \\\")\\\" get strout on error get \\\"Error communicating with iTunes\\\" end try end tell else get \\\"No song is currently playing.\\\" end if end tell"; my $string = `osascript -e "$applescript"`; chomp($string); $witem->command("ACTION ".$witem->{name}." bops to " . $string); } else { Irssi::print('mp3: You must do this in a channel or query window.'); } } Irssi::command_bind('mp3', 'cmd_mp3');