Merge
This commit is contained in:
parent
dbdff13cd0
commit
3ea944fbb0
|
@ -37,7 +37,15 @@ class ImportController < ApplicationController
|
||||||
artist.listeners = lastfm_artist['artist']['stats']['listeners']
|
artist.listeners = lastfm_artist['artist']['stats']['listeners']
|
||||||
artist.artist_type = brainz_artist.type
|
artist.artist_type = brainz_artist.type
|
||||||
artist.mbid = brainz_artist.id
|
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|
|
brainz_artist.release_groups.each do |brainz_release_group|
|
||||||
# Saving album
|
# Saving album
|
||||||
|
@ -56,12 +64,30 @@ class ImportController < ApplicationController
|
||||||
album.pic_url = album_image
|
album.pic_url = album_image
|
||||||
album.has_pic = (album_image != '' and not album_image.nil?)
|
album.has_pic = (album_image != '' and not album_image.nil?)
|
||||||
album.status = 0
|
album.status = 0
|
||||||
dry_run ? ap(album) : album.save
|
album.save
|
||||||
# Tracks from the first release
|
# Tracks from the first release
|
||||||
tracks_hashed = []
|
tracks_hashed = []
|
||||||
brainz_release_group.releases.each_with_index do |brainz_release, i|
|
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
|
# Processing tracks
|
||||||
brainz_release.tracks.each do |brainz_track|
|
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\[.*?\]/, '')
|
track_title = brainz_track.title.gsub(/\s\/\s\[.*?\]/, '')
|
||||||
if tracks_hashed.include? track_title.downcase.scan(/[a-z0-9]*/).join
|
if tracks_hashed.include? track_title.downcase.scan(/[a-z0-9]*/).join
|
||||||
next
|
next
|
||||||
|
@ -77,7 +103,7 @@ class ImportController < ApplicationController
|
||||||
track.live = track_title.downcase.include? 'live'
|
track.live = track_title.downcase.include? 'live'
|
||||||
track.acoustic = track_title.downcase.include? 'acoustic'
|
track.acoustic = track_title.downcase.include? 'acoustic'
|
||||||
track.mbid = brainz_track.recording_id
|
track.mbid = brainz_track.recording_id
|
||||||
dry_run ? ap(track) : track.save
|
track.save
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
album.status = 1
|
album.status = 1
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
class Album < ActiveRecord::Base
|
class Album < ActiveRecord::Base
|
||||||
belongs_to :artist
|
belongs_to :artist
|
||||||
has_many :tracks, :order => 'bonus ASC, position ASC', :dependent => :destroy
|
has_many :tracks, :order => 'bonus ASC, position ASC', :dependent => :destroy
|
||||||
|
has_many :local_brainz_releases, :class_name => 'LocalBrainz::Release', :dependent => :destroy
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
class Artist < ActiveRecord::Base
|
class Artist < ActiveRecord::Base
|
||||||
has_many :albums, :order => 'has_pic DESC, year ASC, id ASC', :dependent => :destroy
|
has_many :albums, :order => 'has_pic DESC, year ASC, id ASC', :dependent => :destroy
|
||||||
|
has_many :artist_links, :dependent => :destroy
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
class ArtistLink < ActiveRecord::Base
|
||||||
|
belongs_to :artist
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
module LocalBrainz
|
||||||
|
def self.table_name_prefix
|
||||||
|
'local_brainz_'
|
||||||
|
end
|
||||||
|
end
|
|
@ -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
|
|
@ -0,0 +1,3 @@
|
||||||
|
class LocalBrainz::Track < ActiveRecord::Base
|
||||||
|
belongs_to :local_brainz_release, :class_name => 'LocalBrainz::Release'
|
||||||
|
end
|
|
@ -0,0 +1,13 @@
|
||||||
|
class CreateLocalBrainzReleases < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :local_brainz_releases do |t|
|
||||||
|
t.string :mbid
|
||||||
|
t.string :title
|
||||||
|
t.string :status
|
||||||
|
t.date :date
|
||||||
|
t.string :country
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,12 @@
|
||||||
|
class CreateLocalBrainzTracks < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :local_brainz_tracks do |t|
|
||||||
|
t.integer :position
|
||||||
|
t.string :recording_id
|
||||||
|
t.string :title
|
||||||
|
t.integer :length
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,11 @@
|
||||||
|
class CreateArtistLinks < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
create_table :artist_links do |t|
|
||||||
|
t.integer :artist_id
|
||||||
|
t.string :service
|
||||||
|
t.string :url
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddArtistIdToLocalBrainzRelease < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :local_brainz_releases, :artist_id, :integer
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddFormatToLocalBrainzRelease < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :local_brainz_releases, :format, :string
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddReleaseIdToLocalBrainzTrack < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :local_brainz_tracks, :release_id, :integer
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
class RenameFieldInLocalBrainzReleases < ActiveRecord::Migration
|
||||||
|
def up
|
||||||
|
rename_column :local_brainz_releases, :artist_id, :album_id
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
rename_column :local_brainz_releases, :album_id, :artist_id
|
||||||
|
end
|
||||||
|
end
|
32
db/schema.rb
32
db/schema.rb
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20110919003651) do
|
ActiveRecord::Schema.define(:version => 20110920164044) do
|
||||||
|
|
||||||
create_table "albums", :force => true do |t|
|
create_table "albums", :force => true do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
|
@ -26,6 +26,14 @@ ActiveRecord::Schema.define(:version => 20110919003651) do
|
||||||
t.integer "status"
|
t.integer "status"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "artist_links", :force => true do |t|
|
||||||
|
t.integer "artist_id"
|
||||||
|
t.string "service"
|
||||||
|
t.string "url"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "artists", :force => true do |t|
|
create_table "artists", :force => true do |t|
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.text "desc"
|
t.text "desc"
|
||||||
|
@ -63,6 +71,28 @@ ActiveRecord::Schema.define(:version => 20110919003651) do
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "local_brainz_releases", :force => true do |t|
|
||||||
|
t.string "mbid"
|
||||||
|
t.string "title"
|
||||||
|
t.string "status"
|
||||||
|
t.date "date"
|
||||||
|
t.string "country"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.integer "album_id"
|
||||||
|
t.string "format"
|
||||||
|
end
|
||||||
|
|
||||||
|
create_table "local_brainz_tracks", :force => true do |t|
|
||||||
|
t.integer "position"
|
||||||
|
t.string "recording_id"
|
||||||
|
t.string "title"
|
||||||
|
t.integer "length"
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.integer "release_id"
|
||||||
|
end
|
||||||
|
|
||||||
create_table "playlist_items", :force => true do |t|
|
create_table "playlist_items", :force => true do |t|
|
||||||
t.integer "playlist_id"
|
t.integer "playlist_id"
|
||||||
t.integer "track_id"
|
t.integer "track_id"
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
namespace :artist do
|
||||||
|
desc 'Empty artist database'
|
||||||
|
task :wipe => :environment do
|
||||||
|
Album.destroy_all
|
||||||
|
ArtistLink.destroy_all
|
||||||
|
end
|
||||||
|
end
|
|
@ -5,7 +5,7 @@ namespace :lastfm do
|
||||||
ImportController.parseLastfmXML('tmp/data/top1000.xml').each do |artist|
|
ImportController.parseLastfmXML('tmp/data/top1000.xml').each do |artist|
|
||||||
puts artist[:name] + (artist[:mbid].empty? ? '' : ' (' + artist[:mbid] + ')')
|
puts artist[:name] + (artist[:mbid].empty? ? '' : ' (' + artist[:mbid] + ')')
|
||||||
record = Artist.find_or_create_by_name(artist[:name])
|
record = Artist.find_or_create_by_name(artist[:name])
|
||||||
record.mbid = artist[:mbid]
|
# record.mbid = artist[:mbid]
|
||||||
record.save
|
record.save
|
||||||
res = ImportController.importArtist(artist[:name])
|
res = ImportController.importArtist(artist[:name])
|
||||||
if res == 1
|
if res == 1
|
||||||
|
@ -22,7 +22,7 @@ namespace :lastfm do
|
||||||
ImportController.parseLastfmXML('tmp/data/hyped500.xml').each do |artist|
|
ImportController.parseLastfmXML('tmp/data/hyped500.xml').each do |artist|
|
||||||
puts artist[:name] + (artist[:mbid].empty? ? '' : ' (' + artist[:mbid] + ')')
|
puts artist[:name] + (artist[:mbid].empty? ? '' : ' (' + artist[:mbid] + ')')
|
||||||
record = Artist.find_or_create_by_name(artist[:name])
|
record = Artist.find_or_create_by_name(artist[:name])
|
||||||
record.mbid = artist[:mbid]
|
# record.mbid = artist[:mbid]
|
||||||
record.save
|
record.save
|
||||||
res = ImportController.importArtist(artist[:name])
|
res = ImportController.importArtist(artist[:name])
|
||||||
if res == 1
|
if res == 1
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Read about fixtures at http://api.rubyonrails.org/classes/Fixtures.html
|
||||||
|
|
||||||
|
one:
|
||||||
|
artist_id: 1
|
||||||
|
service: MyString
|
||||||
|
url: MyString
|
||||||
|
|
||||||
|
two:
|
||||||
|
artist_id: 1
|
||||||
|
service: MyString
|
||||||
|
url: MyString
|
|
@ -0,0 +1,15 @@
|
||||||
|
# Read about fixtures at http://api.rubyonrails.org/classes/Fixtures.html
|
||||||
|
|
||||||
|
one:
|
||||||
|
mbid: MyString
|
||||||
|
title: MyString
|
||||||
|
status: MyString
|
||||||
|
date: 2011-09-20
|
||||||
|
country: MyString
|
||||||
|
|
||||||
|
two:
|
||||||
|
mbid: MyString
|
||||||
|
title: MyString
|
||||||
|
status: MyString
|
||||||
|
date: 2011-09-20
|
||||||
|
country: MyString
|
|
@ -0,0 +1,13 @@
|
||||||
|
# Read about fixtures at http://api.rubyonrails.org/classes/Fixtures.html
|
||||||
|
|
||||||
|
one:
|
||||||
|
position: 1
|
||||||
|
recording_id: MyString
|
||||||
|
title: MyString
|
||||||
|
length: 1
|
||||||
|
|
||||||
|
two:
|
||||||
|
position: 1
|
||||||
|
recording_id: MyString
|
||||||
|
title: MyString
|
||||||
|
length: 1
|
|
@ -0,0 +1,7 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class ArtistLinkTest < ActiveSupport::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class LocalBrainz::ReleaseTest < ActiveSupport::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
class LocalBrainz::TrackTest < ActiveSupport::TestCase
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
Loading…
Reference in New Issue