diff options
author | Raine Virta <rane@kapsi.fi> | 2009-02-25 04:25:52 +0200 |
---|---|---|
committer | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2009-02-26 00:39:48 +0100 |
commit | c79880731ad9335af4832d2b2f2505fa1fa03671 (patch) | |
tree | eee9e80310bbcfc10b651d7e80ecced32eaf1508 | |
parent | be6d4c5c331bec69d442368bfb91e31a9fa9cdb5 (diff) |
lastfm: add venue command
-rw-r--r-- | data/rbot/plugins/lastfm.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/data/rbot/plugins/lastfm.rb b/data/rbot/plugins/lastfm.rb index dca34703..c2883248 100644 --- a/data/rbot/plugins/lastfm.rb +++ b/data/rbot/plugins/lastfm.rb @@ -416,6 +416,44 @@ class LastFmPlugin < Plugin end end + def find_venue(m, params) + venue = params[:venue].to_s + venues = search_venue_by(:name => venue, :limit => 1) + venue = venues.last + + if venues.empty? + m.reply "sorry, can't find such venue" + return + end + + reply = _("%{b}%{name}%{b}, %{street}, %{u}%{city}%{u}, %{country}, see %{url} for more info") % { + :u => Underline, :b => Bold, :name => venue.name, :city => venue.city, :street => venue.street, + :country => venue.country, :url => venue.url + } + + if venue.street && venue.city + maps_uri = "http://maps.google.com/maps?q=#{venue.street},+#{venue.city}" + maps_uri << ",+#{venue.postal}" if venue.postal + elsif venue.lat && venue.long + maps_uri = "http://maps.google.com/maps?q=#{venue.lat},+#{venue.long}" + else + m.reply reply + return + end + + maps_uri << "+(#{venue.name.gsub(" ", "%A0")})" + + begin + require "shorturl" + maps_uri = ShortURL.shorten(CGI.escape(maps_uri)) + rescue LoadError => e + error e + end + + reply << _(" and %{maps} for maps") % { :maps => maps_uri, :b => Bold } + m.reply reply + end + def get_album(artist, album) xml = @bot.httputil.get("#{APIURL}method=album.getinfo&artist=#{CGI.escape artist}&album=#{CGI.escape album}") unless xml @@ -677,6 +715,7 @@ plugin.map 'lastfm [:num] event[s] [for] *who', :action => :find_events, :requir plugin.map 'lastfm artist *artist', :action => :find_artist, :thread => true plugin.map 'lastfm album *album [by *artist]', :action => :find_album plugin.map 'lastfm track *track', :action => :find_track, :thread => true +plugin.map 'lastfm venue *venue', :action => :find_venue, :thread => true plugin.map 'lastfm set user[name] :who', :action => :set_user, :thread => true plugin.map 'lastfm set verb *present, *past', :action => :set_verb, :thread => true plugin.map 'lastfm who [:who]', :action => :get_user, :thread => true |