1
0
Fork 0

Finally fixed lastfm post requests, couple of rake tasks

This commit is contained in:
magnolia-fan 2011-09-18 18:25:47 +04:00
parent d9b75279f5
commit e69a12ded5
7 changed files with 60 additions and 20 deletions

View File

@ -14,7 +14,7 @@ gem 'barista'
gem 'awesome_print', :require => 'ap'
gem 'delayed_job'
gem 'lastfm-client', '~> 0.0.2'#, :git => 'http://github.com/magnolia-fan/lastfm-client.git'
gem 'lastfm-client', :git => 'http://github.com/magnolia-fan/lastfm-client.git'
gem 'musicbrainz', '~> 0.4.3'
gem 'bitmask_attributes'

View File

@ -1,3 +1,10 @@
GIT
remote: http://github.com/magnolia-fan/lastfm-client.git
revision: fe5614565eebb5b0b019c103211bba3698848daa
specs:
lastfm-client (0.0.2)
json (>= 1.4.6)
GEM
remote: http://rubygems.org/
specs:
@ -53,8 +60,6 @@ GEM
hike (1.2.1)
i18n (0.6.0)
json (1.6.0)
lastfm-client (0.0.2)
json (>= 1.4.6)
libv8 (3.3.10.2)
mail (2.3.0)
i18n (>= 0.4.0)
@ -62,7 +67,7 @@ GEM
treetop (~> 1.4.8)
mime-types (1.16)
multi_json (1.0.3)
musicbrainz (0.4.3)
musicbrainz (0.4.5)
nokogiri
nokogiri (1.5.0)
pg (0.11.0)
@ -122,7 +127,7 @@ DEPENDENCIES
delayed_job
haml
json
lastfm-client (~> 0.0.2)
lastfm-client!
musicbrainz (~> 0.4.3)
nokogiri
pg

View File

@ -89,7 +89,7 @@ class ArtistController < ApplicationController
bonus_tracks = []
album.tracks.each do |track|
tmp_track = {id: track.id, name: track.name, live: track.live, acoustic: track.acoustic}
tmp_track[:length] = (track.length / 1000).round
tmp_track[:length] = (track.length / 1000).round unless track.length.nil?
tmp_track[:duration] = formatTrackDuration(track.length)
tmp_track[:position] = track.position
tmp_track[:mbid] = track.mbid

View File

@ -16,7 +16,7 @@ class ImportController < ApplicationController
rescue => e
lastfm_artist = { 'artist' => {
'bio' => { 'summary' => '' },
'image' => [ nil, nil, nil, { 'content' => '' } ],
'image' => [ nil, nil, nil, { '#text' => '' } ],
'stats' => { 'listeners' => 0 }
} }
ap e.message
@ -35,7 +35,7 @@ class ImportController < ApplicationController
brainz_artist.release_groups.each do |brainz_release_group|
# Saving album
begin
album_lastfm = LastFM::Album.get_info( :artist => lastfm_artist['name'], :album => brainz_release_group.title )
album_lastfm = LastFM::Album.get_info( :artist => lastfm_artist['artist']['name'], :album => brainz_release_group.title )
album_image = album_lastfm['album']['image'][3]['#text']
rescue
album_image = ''

View File

@ -56,15 +56,13 @@ class LastFmController < ApplicationController
end
r = LastFM::Track.update_now_playing(
:track => params[:name].gsub(/\s/, '+').gsub(/\&/, '&amp;'),
:artist => params[:artist].gsub(/\s/, '+').gsub(/\&/, '&amp;'),
:album => params[:album].gsub(/\s/, '+').gsub(/\&/, '&amp;'),
:track => params[:name],
:artist => params[:artist],
:album => params[:album],
:trackNumber => params[:position],
:mbid => params[:mbid],
:duration => params[:length],
:api_sig => true,
:sk => user.lastfm_key
:sk => user.lastfm_key # Auth session key
)
render :json => { :status => r['error'].nil? ? 'success' : 'failed' }
@ -86,16 +84,14 @@ class LastFmController < ApplicationController
end
r = LastFM::Track.scrobble(
:track => params[:name].gsub(/\s/, '+').gsub(/\&/, '&amp;'),
:track => params[:name],
:timestamp => Time.now.utc.to_i,
:artist => params[:artist].gsub(/\s/, '+').gsub(/\&/, '&amp;'),
:album => params[:album].gsub(/\s/, '+').gsub(/\&/, '&amp;'),
:artist => params[:artist],
:album => params[:album],
:trackNumber => params[:position],
:mbid => params[:mbid],
:duration => params[:length],
:api_sig => true,
:sk => user.lastfm_key
:sk => user.lastfm_key # Auth session key
)
render :json => { :status => r['error'].nil? ? 'success' : 'failed' }

22
lib/tasks/db_artist.rake Normal file
View File

@ -0,0 +1,22 @@
namespace :db do
namespace :artist do
desc 'Fix broken imports'
task :fix => :environment do
Artist.where(:status => [0, 2]).each do |artist|
artist.albums.each do |album|
album.destroy
end
puts artist.name+(artist.mbid.nil? or artist.mbid.empty? ? '' : ' ('+artist.mbid+')')
res = ImportController.importArtist(artist.name)
if res == 1
puts 'OK'
elsif res == 2
puts 'FAIL'
elsif res == 3
puts 'SKIP'
end
puts ''
end
end
end
end

View File

@ -18,5 +18,22 @@ namespace :lastfm do
puts ''
end
end
task :hyped => :environment do
ImportController.parseLastfmXML('tmp/data/hyped500.xml').each do |artist|
puts artist[:name] + (artist[:mbid].empty? ? '' : ' (' + artist[:mbid] + ')')
record = Artist.find_or_create_by_name(artist[:name])
record.mbid = artist[:mbid]
record.save
res = ImportController.importArtist(artist[:name])
if res == 1
puts 'OK'
elsif res == 2
puts 'FAIL'
elsif res == 3
puts 'SKIP'
end
puts ''
end
end
end
end