diff --git a/app/controllers/import_controller.rb b/app/controllers/import_controller.rb index 9de72c7..00e9a33 100644 --- a/app/controllers/import_controller.rb +++ b/app/controllers/import_controller.rb @@ -25,9 +25,10 @@ class ImportController < ApplicationController artist_mb_data = ArtistController.musicBrainzExactSearch(name).first begin artist_lastfm = lastfm.artist.get_info(name) - artist_mb = brainz.artist(artist_lastfm['mbid']) - rescue - return + artist_mb = brainz.artist(artist_mb_data[:mbid]) + rescue => e + ap e.message + ap e.backtrace end # Save artist @@ -37,7 +38,7 @@ class ImportController < ApplicationController artist.mbid = artist_lastfm['mbid'] # Get albums from MB - release_groups_mb = brainz.release_group(nil, :artist => artist_lastfm['mbid'])['release_group_list']['release_group'] + release_groups_mb = brainz.release_group(nil, :artist => artist_mb_data[:mbid])['release_group_list']['release_group'] release_groups_mb.each do |mb_album| # Get album releases from MB @@ -64,11 +65,17 @@ class ImportController < ApplicationController tracks_mb = [] tracks_mb_r = brainz.release(main_release['id'], {'inc' => 'recordings'})['release']['medium_list']['medium'] if tracks_mb_r.is_a? Hash + if tracks_mb_r['track_list']['track'].is_a? Hash + tracks_mb_r['track_list']['track'] = [tracks_mb_r['track_list']['track']] + end tracks_mb = tracks_mb_r['track_list']['track'] elsif tracks_mb_r.is_a? Array tracks_mb = tracks_mb_r.shift['track_list']['track'] tracks_mb_r.each do |cd| - cd['track_list']['track'].map! { |mb_track| mb_track['bonus'] = 1 } + if cd['track_list']['track'].is_a? Hash + cd['track_list']['track'] = [cd['track_list']['track']] + end + cd['track_list']['track'].each { |mb_track| mb_track['bonus'] = 1 } tracks_mb |= cd['track_list']['track'] end end @@ -108,9 +115,15 @@ class ImportController < ApplicationController other_tracks_mb = [] other_tracks_mb_r = brainz.release(mb_release['id'], {'inc' => 'recordings'})['release']['medium_list']['medium'] if other_tracks_mb_r.is_a? Hash + if other_tracks_mb_r['track_list']['track'].is_a? Hash + other_tracks_mb_r['track_list']['track'] = [other_tracks_mb_r['track_list']['track']] + end other_tracks_mb = other_tracks_mb_r['track_list']['track'] elsif other_tracks_mb_r.is_a? Array other_tracks_mb_r.each do |cd| + if cd['track_list']['track'].is_a? Hash + cd['track_list']['track'] = [cd['track_list']['track']] + end other_tracks_mb |= cd['track_list']['track'] end end @@ -150,7 +163,9 @@ class ImportController < ApplicationController artist.status = 1 - rescue + rescue => e + ap e.message + ap e.backtrace artist.status = 2 end diff --git a/lib/tasks/db_cleanup.rake b/lib/tasks/db_cleanup.rake new file mode 100644 index 0000000..b65ff84 --- /dev/null +++ b/lib/tasks/db_cleanup.rake @@ -0,0 +1,20 @@ +namespace :db do + desc 'Cleans artist-album-track relations clean' + task :cleanup => :environment do + + albums = Album.all + albums.each do |album| + if album.artist.nil? + album.delete + end + end + + tracks = Track.all + tracks.each do |track| + if track.album.nil? + track.delete + end + end + + end +end \ No newline at end of file diff --git a/lib/tasks/db_import.rake b/lib/tasks/db_import.rake index dfc7cf2..c7bb27d 100644 --- a/lib/tasks/db_import.rake +++ b/lib/tasks/db_import.rake @@ -4,7 +4,7 @@ namespace :db do desc 'Imports test data from MusicBrainz database' task :import => :environment do - ati = ['Marilyn Manson'] + ati = ['The Lonely Island'] ati.each do |name| ImportController.importArtist(name) #ap res = ArtistController.musicBrainzExactSearch(name) diff --git a/public/js/beathaven/search.js b/public/js/beathaven/search.js index 566db7c..8218e66 100644 --- a/public/js/beathaven/search.js +++ b/public/js/beathaven/search.js @@ -50,6 +50,7 @@ var Search = { showError: function() { $('.artist_loading.ok, .artist_pics').hide(); $('.artist_loading.failed').show(); + Search.pics = [] } }