+ def now_playing(m, params)
+ opts = { :cache => false }
+ user = nil
+ if params[:who] then
+ user = params[:who].to_s
+ elsif @registry.has_key? ( m.sourcenick ) then
+ user = @registry[ m.sourcenick ]
+ else
+ # m.reply "I don't know who you are on last.fm. Use 'lastfm set username' to identify yourself."
+ # return
+ user = m.sourcenick
+ end
+ page = nil
+ begin
+ page = @bot.httputil.get("#{LASTFM}/user/#{user}", opts)
+ if page
+ if page.match(/class="nowListening">\s*<td class="subject">\s*<a href="\/music.*?">(.*)<\/a>\s*<\/td/)
+ track = $1
+ if page.match(/class="nowListening currentStation">\s*(.*?)<\/a>/m)
+ m.reply "#{user} is #{$1.ircify_html}"
+ end
+ m.reply "#{user} is jammin to #{track.ircify_html}"
+ elsif page.match(/class="justlistened first">\s*<td class="subject">.*<\/span><\/a>?(.*)<\/a>\s*<\/td>\s*<td class="date">\s*just/m)
+ m.reply "#{user} just jammed to #{$1.ircify_html}"
+ else
+ params[:action] = "recenttracks"
+ params[:user] = user
+ lastfm(m, params)
+ end
+ else
+ return if params[:recurs]
+ if @registry.has_key? ( user ) then
+ params[:who] = @registry[ user ]
+ params[:recurs] = true
+ now_playing(m, params)
+ else
+ m.reply "#{user} doesn't exist at last.fm. Perhaps you need to: lastfm set <username>"
+ end
+ end
+ rescue
+ m.reply "I had problems getting #{user}'s current info"
+ end
+ end
+