Disable barista, xml parse refactor

This commit is contained in:
Gregory Eremin
2011-09-22 16:04:59 +04:00
parent c076efe860
commit 7a3444d103
5 changed files with 106 additions and 93 deletions
+32 -25
View File
@@ -1,34 +1,41 @@
class Discogs
def self.artists
File.open('tmp/data/discogs_artists.xml') do |file|
self.get_nodes('tmp/data/discogs_artists.xml', 'artist') do
artist = Artist.new(
:name => (node.css('name').first.text),
:pic_url => (node.css('images > image[type="primary"]').first.attr('uri') unless node.css('images > image[type="primary"]').empty?),
:status => 1
)
artist.save
node.css('namevariations > name, aliases > name').each do |v|
ArtistAlias.new(
:artist_id => artist.id,
:name => v.text
).save
end
end
end
def self.releases
self.get_nodes('tmp/data/discogs_releases_test.xml', 'release') do |node|
r = {
:pic => (node.css('images > image[type="primary"]').first.attr('uri') unless node.css('images > image[type="primary"]').empty?)
}
ap r
end
end
private
def self.get_nodes filename, nodename, &block
File.open(filename) do |file|
Nokogiri::XML::Reader.from_io(file).each do |node|
if node.name == 'artist' and node.node_type == Nokogiri::XML::Reader::TYPE_ELEMENT
self.process_artist Nokogiri::XML(node.outer_xml).root
if node.name == nodename and node.node_type == Nokogiri::XML::Reader::TYPE_ELEMENT
yield(Nokogiri::XML(node.outer_xml).root)
end
end
end
end
def self.process_artist node
artist = Artist.new(
:name => (node.css('name').first.text),
:pic_url => (node.css('images > image[type="primary"]').first.attr('uri') unless node.css('images > image[type="primary"]').empty?),
:status => 1
)
artist.save
node.css('namevariations > name, aliases > name').each do |v|
ArtistAlias.new(
:artist_id => artist.id,
:name => v.text
).save
end
end
def self.releases
end
def self.process_release
end
end
+9
View File
@@ -0,0 +1,9 @@
require "discogs"
namespace :discogs do
namespace :import do
desc 'Import discogs releases xml'
task :releases => :environment do
Discogs.releases
end
end
end