Artist wipe, local brainz

This commit is contained in:
magnolia-fan
2011-09-21 00:30:42 +04:00
parent 3cd6c111bd
commit 2536645cb8
24 changed files with 208 additions and 8 deletions
+29 -3
View File
@@ -37,7 +37,15 @@ class ImportController < ApplicationController
artist.listeners = lastfm_artist['artist']['stats']['listeners']
artist.artist_type = brainz_artist.type
artist.mbid = brainz_artist.id
dry_run ? ap(artist) : artist.save
artist.save
brainz_artist.urls.each do |service, url|
ArtistLink.new(
:artist_id => artist.id,
:service => service.to_s,
:url => url
).save
end
brainz_artist.release_groups.each do |brainz_release_group|
# Saving album
@@ -56,12 +64,30 @@ class ImportController < ApplicationController
album.pic_url = album_image
album.has_pic = (album_image != '' and not album_image.nil?)
album.status = 0
dry_run ? ap(album) : album.save
album.save
# Tracks from the first release
tracks_hashed = []
brainz_release_group.releases.each_with_index do |brainz_release, i|
local_brainz_release = LocalBrainz::Release.new(
:mbid => brainz_release.id,
:title => brainz_release.title,
:status => brainz_release.status,
:date => brainz_release.date,
:country => brainz_release.country,
:format => brainz_release.format,
:album_id => album.id
)
local_brainz_release.save
# Processing tracks
brainz_release.tracks.each do |brainz_track|
local_brainz_track = LocalBrainz::Track.new(
:position => brainz_track.position,
:recording_id => brainz_track.recording_id,
:title => brainz_track.title,
:length => brainz_track.length,
:release_id => local_brainz_release.id
)
local_brainz_track.save
track_title = brainz_track.title.gsub(/\s\/\s\[.*?\]/, '')
if tracks_hashed.include? track_title.downcase.scan(/[a-z0-9]*/).join
next
@@ -77,7 +103,7 @@ class ImportController < ApplicationController
track.live = track_title.downcase.include? 'live'
track.acoustic = track_title.downcase.include? 'acoustic'
track.mbid = brainz_track.recording_id
dry_run ? ap(track) : track.save
track.save
end
end
album.status = 1
+1
View File
@@ -1,4 +1,5 @@
class Album < ActiveRecord::Base
belongs_to :artist
has_many :tracks, :order => 'bonus ASC, position ASC', :dependent => :destroy
has_many :local_brainz_releases, :class_name => 'LocalBrainz::Release', :dependent => :destroy
end
+1
View File
@@ -1,3 +1,4 @@
class Artist < ActiveRecord::Base
has_many :albums, :order => 'has_pic DESC, year ASC, id ASC', :dependent => :destroy
has_many :artist_links, :dependent => :destroy
end
+3
View File
@@ -0,0 +1,3 @@
class ArtistLink < ActiveRecord::Base
belongs_to :artist
end
+5
View File
@@ -0,0 +1,5 @@
module LocalBrainz
def self.table_name_prefix
'local_brainz_'
end
end
+4
View File
@@ -0,0 +1,4 @@
class LocalBrainz::Release < ActiveRecord::Base
belongs_to :album, :class_name => 'Album'
has_many :local_brainz_tracks, :class_name => 'LocalBrainz::Track', :dependent => :destroy
end
+3
View File
@@ -0,0 +1,3 @@
class LocalBrainz::Track < ActiveRecord::Base
belongs_to :local_brainz_release, :class_name => 'LocalBrainz::Release'
end