Final import fix (i hope).

This commit is contained in:
magnolia-fan 2011-06-24 15:15:35 +04:00
parent 96c3d925df
commit 3c11bcd8d7
4 changed files with 43 additions and 7 deletions

View File

@ -25,9 +25,10 @@ class ImportController < ApplicationController
artist_mb_data = ArtistController.musicBrainzExactSearch(name).first artist_mb_data = ArtistController.musicBrainzExactSearch(name).first
begin begin
artist_lastfm = lastfm.artist.get_info(name) artist_lastfm = lastfm.artist.get_info(name)
artist_mb = brainz.artist(artist_lastfm['mbid']) artist_mb = brainz.artist(artist_mb_data[:mbid])
rescue rescue => e
return ap e.message
ap e.backtrace
end end
# Save artist # Save artist
@ -37,7 +38,7 @@ class ImportController < ApplicationController
artist.mbid = artist_lastfm['mbid'] artist.mbid = artist_lastfm['mbid']
# Get albums from MB # 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| release_groups_mb.each do |mb_album|
# Get album releases from MB # Get album releases from MB
@ -64,11 +65,17 @@ class ImportController < ApplicationController
tracks_mb = [] tracks_mb = []
tracks_mb_r = brainz.release(main_release['id'], {'inc' => 'recordings'})['release']['medium_list']['medium'] 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.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'] tracks_mb = tracks_mb_r['track_list']['track']
elsif tracks_mb_r.is_a? Array elsif tracks_mb_r.is_a? Array
tracks_mb = tracks_mb_r.shift['track_list']['track'] tracks_mb = tracks_mb_r.shift['track_list']['track']
tracks_mb_r.each do |cd| 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'] tracks_mb |= cd['track_list']['track']
end end
end end
@ -108,9 +115,15 @@ class ImportController < ApplicationController
other_tracks_mb = [] other_tracks_mb = []
other_tracks_mb_r = brainz.release(mb_release['id'], {'inc' => 'recordings'})['release']['medium_list']['medium'] 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.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'] other_tracks_mb = other_tracks_mb_r['track_list']['track']
elsif other_tracks_mb_r.is_a? Array elsif other_tracks_mb_r.is_a? Array
other_tracks_mb_r.each do |cd| 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'] other_tracks_mb |= cd['track_list']['track']
end end
end end
@ -150,7 +163,9 @@ class ImportController < ApplicationController
artist.status = 1 artist.status = 1
rescue rescue => e
ap e.message
ap e.backtrace
artist.status = 2 artist.status = 2
end end

20
lib/tasks/db_cleanup.rake Normal file
View File

@ -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

View File

@ -4,7 +4,7 @@ namespace :db do
desc 'Imports test data from MusicBrainz database' desc 'Imports test data from MusicBrainz database'
task :import => :environment do task :import => :environment do
ati = ['Marilyn Manson'] ati = ['The Lonely Island']
ati.each do |name| ati.each do |name|
ImportController.importArtist(name) ImportController.importArtist(name)
#ap res = ArtistController.musicBrainzExactSearch(name) #ap res = ArtistController.musicBrainzExactSearch(name)

View File

@ -50,6 +50,7 @@ var Search = {
showError: function() { showError: function() {
$('.artist_loading.ok, .artist_pics').hide(); $('.artist_loading.ok, .artist_pics').hide();
$('.artist_loading.failed').show(); $('.artist_loading.failed').show();
Search.pics = []
} }
} }