Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

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

tag: v1.9.1

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 examples
Octocat-spinner-32 lib
Octocat-spinner-32 tasks
Octocat-spinner-32 test
Octocat-spinner-32 website
Octocat-spinner-32 .gitignore
Octocat-spinner-32 History.txt
Octocat-spinner-32 MIT-LICENSE
Octocat-spinner-32 Manifest
Octocat-spinner-32 README.rdoc
Octocat-spinner-32 Rakefile
Octocat-spinner-32 VERSION.yml
Octocat-spinner-32 setup.rb
README.rdoc

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('Carrie Underwood', 'Some Hearts', :include_info => true)

puts “Album: #{album.name}” puts “Artist: #{album.artist}” puts “Reach: #{album.reach}” puts “URL: #{album.url}” puts “Release Date: #{album.release_date.strftime('%m/%d/%Y')}”

puts puts

puts “Tracks” longest_track_name = album.tracks.collect(&:name).sort { |x, y| y.length <=> x.length }.first.length puts “=” * longest_track_name album.tracks.each { |t| puts t.name }

Artists

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

puts 'Top Tracks' puts “=” * 10 artist.top_tracks.each { |t| puts “(#{t.reach}) #{t.name}” }

puts

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

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.fans.each { |u| puts “(#{u.weight}) #{u.username}” }

Simple Authentication (for Scrobbling)

auth = Scrobbler::SimpleAuth.new(:user => 'chunky', :password => 'bacon')
auth.handshake!

puts "Auth Status: #{auth.status}"
puts "Session ID: #{auth.session_id}"
puts "Now Playing URL: #{auth.now_playing_url}"
puts "Submission URL: #{auth.submission_url}"

Scrobbling

scrobble = Scrobbler::Scrobble.new(:session_id => auth.session_id,
                                   :submission_url => auth.submission_url,
                                   :artist => 'Coldplay',
                                   :track => 'Viva La Vida',
                                   :album => "Viva La Vida",
                                   :time => Time.new,
                                   :length => 244,
                                   :track_number => 7)
scrobble.submit!
puts "Scrobbler Submission Status: #{scrobble.status}"

Now Playing Submission

playing = Scrobbler::Playing.new(:session_id => auth.session_id,
                                 :now_playing_url => auth.now_playing_url,
                                 :artist => 'Anberlin',
                                 :track => 'Readyfuels',
                                 :album => 'Blueprints For the Black Market',
                                 :length => 218,
                                 :track_number => 1)

playing.submit!         
puts "Playing Submission Status: #{playing.status}"
Something went wrong with that request. Please try again.