Loading data from MusicBrainz Web Service, stability fixes, database reorganized. Closes #39

This commit is contained in:
magnolia-fan
2011-06-18 01:49:32 +04:00
parent a66300c8e4
commit 17f5edf841
15 changed files with 179 additions and 170 deletions
+1 -1
View File
@@ -1,3 +1,3 @@
class Artist < ActiveRecord::Base
has_many :albums, :conditions => "status = 1", :order => 'year ASC, id ASC'
has_many :albums, :order => 'year ASC, id ASC'
end
-61
View File
@@ -1,61 +0,0 @@
class MusicBrainzAlbum < ActiveRecord::Base
establish_connection :musicbrainz
set_table_name 'musicbrainz.bh_release_group'
belongs_to :music_brainz_artist
has_many :music_brainz_releases, :conditions => "release_type = 1", :order => 'date ASC, id ASC'
require 'iconv'
def cover artist
covers = AlbumPic.where(album_id: id).first
unless covers.nil?
covers.extralarge
else
q_artist = CGI::escape(artist)
q_album = CGI::escape(name)
path = open(
'http://ws.audioscrobbler.com/2.0/' <<
'?method=album.getinfo' <<
'&api_key=04fda005dbf61a50af5abc3e90f111f2' <<
'&artist=' << q_artist <<
'&album=' << q_album
).read
m = path.scan(/<image\ssize=\"(.*)\">(.*)<\/image>/i)
AlbumPic.where(
album_id: id,
small: m[0][1],
medium: m[1][1],
large: m[2][1],
extralarge: m[3][1],
mega: m[4][1]
).create
m[3][1]
end
end
def tracksInDb
tracks = []
result = []
tracks_in_db = []
track_ids = []
self.releases.first.tracks.each do |track|
tracks << track
track_ids << track.id.to_s
end
in_db = TrackData.any_in(id: track_ids).only("id")
unless in_db.nil?
in_db.each do |track|
tracks_in_db << track["id"].to_i;
end
end
tracks.each do |track|
result << {
:object => track,
:in_db => tracks_in_db.include?(track.id) ? nil : true
}
end
result
end
end
-20
View File
@@ -1,20 +0,0 @@
class MusicBrainzArtist < ActiveRecord::Base
establish_connection :musicbrainz
set_table_name 'musicbrainz.bh_artist'
has_many :albums, :conditions => "release_type = 1", :order => 'year ASC, id ASC'
def self.getByName(name)
MusicBrainzArtist.first(:conditions => ['name = ? AND id=credit_id', name], :order => 'rating DESC')
end
def self.getLastFmAutocomplete(query)
return nil if query.nil? or query.strip.empty?
json = ActiveSupport::JSON.decode(open(
'http://www.last.fm/search/autocomplete' <<
'?q=' << URI.escape(query)
).read)
return json.empty? ? nil : json
end
end
-7
View File
@@ -1,7 +0,0 @@
class MusicBrainzRelease < ActiveRecord::Base
establish_connection :musicbrainz
set_table_name 'musicbrainz.bh_release'
belongs_to :music_brainz_album
has_many :music_brainz_tracks, :order => 'position ASC'
end
-6
View File
@@ -1,6 +0,0 @@
class MusicBrainzTrack < ActiveRecord::Base
establish_connection :musicbrainz
set_table_name 'musicbrainz.bh_track'
belongs_to :music_brainz_release
end