/scrobbler

Scrobbler is a wrapper for the audioscrobbler (last.fm) web services.

Primary LanguageRubyMIT LicenseMIT

Scrobbler

Scrobbler is a wrapper for the audioscrobbler web services (www.audioscrobbler.net/data/webservices/).

Currently updating to use the 2.0 API. It is very much a work in progress.

Below is just a sampling of how easy this lib is to use, full documentation of all functions is available at rdoc.info/projects/xhochy/scrobbler

Initialization

Scrobbler::Base.api_key = 'foo123'

Users

user = Scrobbler::User.new('jnunemaker')

puts "#{user.username}'s Recent Tracks"
puts "=" * (user.username.length + 16)
user.recent_tracks.each { |t| puts t.name }

puts
puts

puts "#{user.username}'s Top Tracks"
puts "=" * (user.username.length + 13)
user.top_tracks.each { |t| puts "(#{t.playcount}) #{t.name}" }

Albums

album = Scrobbler::Album.new('Some Hearts', :artist => 'Carrie Underwood', :include_info => true)

puts "Album: #{album.name}"
puts "Artist: #{album.artist}"
puts "Playcount: #{album.playcount}"
puts "URL: #{album.url}"
puts "Release Date: #{album.release_date.strftime('%m/%d/%Y')}"

Artists

artist = Scrobbler::Artist.new('Carrie Underwood')  

puts 'Top Tracks'
puts "=" * 10
artist.top_tracks.each { |t| puts "(#{t.playcount}) #{t.name}" }

puts

puts 'Similar Artists'
puts "=" * 15
artist.similar.each { |a| puts "(#{a.match}%) #{a.name}" }

Geo

geo = Scrobbler::Geo.new()

puts 'Events'
puts "=" * 10
geo.events(:location => 'Manchester').each { |e| puts "(#{e.id}) #{e.title}" }

puts

puts 'Top Artists'
puts "=" * 10
geo.top_artists(:location => 'Manchester').each { |a| puts "(#{a.name}) #{a.playcount}" }

puts

puts 'Top Tracks'
puts "=" * 10
geo.top_tracks(:location => 'Manchester').each { |t| puts "(#{a.name}) #{a.playcount}" }

Tags

tag = Scrobbler::Tag.new('country')

puts 'Top Albums'
tag.top_albums.each { |a| puts "(#{a.count}) #{a.name} by #{a.artist}" }

puts

puts 'Top Tracks'
tag.top_tracks.each { |t| puts "(#{t.count}) #{t.name} by #{t.artist}" }

Tracks

track = Scrobbler::Track.new('Carrie Underwood', 'Before He Cheats')
puts 'Fans'
puts "=" * 4
track.top_fans.each { |u| puts "(#{u.weight}) #{u.username}" }

Simple Authentication (for Scrobbling)

work in progress...

Scrobbling

work in progress...

Now Playing Submission

work in progress...