Final import fix (i hope).
This commit is contained in:
		
							parent
							
								
									96c3d925df
								
							
						
					
					
						commit
						3c11bcd8d7
					
				@ -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
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										20
									
								
								lib/tasks/db_cleanup.rake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								lib/tasks/db_cleanup.rake
									
									
									
									
									
										Normal 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
 | 
			
		||||
@ -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)
 | 
			
		||||
 | 
			
		||||
@ -50,6 +50,7 @@ var Search = {
 | 
			
		||||
	showError: function() {
 | 
			
		||||
		$('.artist_loading.ok, .artist_pics').hide();
 | 
			
		||||
		$('.artist_loading.failed').show();
 | 
			
		||||
		Search.pics = []
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user