68 lines
1.8 KiB
Ruby
68 lines
1.8 KiB
Ruby
require 'uri'
|
|
|
|
class ArtistsController < ApplicationController
|
|
|
|
@@limit = { tracks: 10, albums: 4, similar: 6 }
|
|
|
|
def show
|
|
artist = CGI.unescape params[:id]
|
|
|
|
@artist = LastFM::Artist.getInfo artist
|
|
@tracks = LastFM::Artist.getTopTracks artist, @@limit[:tracks]
|
|
@albums = LastFM::Artist.getTopAlbums artist, @@limit[:albums]
|
|
@related= LastFM::Artist.getSimilar artist, @@limit[:similar]
|
|
|
|
LastFM::Request.run_queue!
|
|
|
|
render :partial=>"show", :locals=>{
|
|
:artist=>@artist,
|
|
:tracks=>@tracks,
|
|
:albums=>@albums,
|
|
:related=>@related
|
|
}
|
|
end
|
|
|
|
|
|
def more_tracks
|
|
prepare params
|
|
@tracks = LastFM::Artist.getTopTracks params[:q], @@limit[:tracks], (params[:size] / @@limit[:tracks] + 1)
|
|
LastFM::Request.run_queue!
|
|
|
|
render :partial=>"more_tracks", :locals=>{:tracks=>@tracks}
|
|
end
|
|
|
|
def more_albums
|
|
prepare params
|
|
@albums = LastFM::Artist.getTopAlbums params[:q], @@limit[:albums], (params[:size] / @@limit[:albums] + 1)
|
|
LastFM::Request.run_queue!
|
|
|
|
render :partial=>"more_albums", :locals=>{:albums=>@albums}
|
|
end
|
|
|
|
def album_info
|
|
@album = LastFM::Album.getInfo CGI.unescape(params[:album]), CGI.unescape(params[:id])
|
|
LastFM::Request.run_queue!
|
|
|
|
render :partial=>"album_info", :locals=>{:album=>@album}
|
|
end
|
|
|
|
def favourize
|
|
puts params.inspect
|
|
artist = CGI.unescape params[:id]
|
|
@artist = LastFM::Artist.getInfo artist
|
|
LastFM::Request.run_queue!
|
|
@artist = Artist.new(:name => @artist.name, :img_url => validate_img_url(@artist.image, "artist", :extralarge))
|
|
unless current_user.artists.include? @artist
|
|
current_user.artists << @artist if @artist.save
|
|
end
|
|
render :nothing => true
|
|
end
|
|
|
|
private
|
|
|
|
def prepare params
|
|
params[:q] = CGI.unescape params[:q]
|
|
params[:size] = params[:size].to_i
|
|
end
|
|
end
|