Sorting, tests
This commit is contained in:
parent
b10abcf67c
commit
78418e9325
@ -1,6 +1,10 @@
|
|||||||
module MusicBrainz
|
module MusicBrainz
|
||||||
@@last_query_time = 0
|
@@last_query_time = 0
|
||||||
@@query_interval = 1.1
|
@@query_interval = 1.5 # Min: 1.0 Safe: 1.5
|
||||||
|
|
||||||
|
def self.query_interval sec
|
||||||
|
@@query_interval = sec.to_f
|
||||||
|
end
|
||||||
|
|
||||||
def self.load url
|
def self.load url
|
||||||
sleep @@query_interval - (Time.now.to_f - @@last_query_time) if Time.now.to_f - @@last_query_time < @@query_interval
|
sleep @@query_interval - (Time.now.to_f - @@last_query_time) if Time.now.to_f - @@last_query_time < @@query_interval
|
||||||
@ -10,7 +14,7 @@ module MusicBrainz
|
|||||||
response = open(url, "User-Agent" => "gem musicbrainz (https://github.com/magnolia-fan/musicbrainz) @ " + Socket.gethostname)
|
response = open(url, "User-Agent" => "gem musicbrainz (https://github.com/magnolia-fan/musicbrainz) @ " + Socket.gethostname)
|
||||||
@@last_query_time = Time.now.to_f
|
@@last_query_time = Time.now.to_f
|
||||||
rescue => e
|
rescue => e
|
||||||
p "MusicBrainz: 503"
|
# MusicBrainz: 503
|
||||||
end
|
end
|
||||||
break unless response.nil?
|
break unless response.nil?
|
||||||
end
|
end
|
||||||
|
@ -12,7 +12,7 @@ module MusicBrainz
|
|||||||
@release_groups << MusicBrainz::ReleaseGroup.parse_xml(rg)
|
@release_groups << MusicBrainz::ReleaseGroup.parse_xml(rg)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@release_groups
|
@release_groups.sort{ |a, b| a.first_release_date <=> b.first_release_date }
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.find mbid
|
def self.find mbid
|
||||||
|
@ -10,7 +10,7 @@ module MusicBrainz
|
|||||||
@tracks << MusicBrainz::Track.parse_xml(r)
|
@tracks << MusicBrainz::Track.parse_xml(r)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@tracks
|
@tracks.sort{ |a, b| a.position <=> b.position }
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.find mbid
|
def self.find mbid
|
||||||
@ -23,17 +23,16 @@ module MusicBrainz
|
|||||||
@release.id = xml.attr('id')
|
@release.id = xml.attr('id')
|
||||||
@release.title = xml.css('title').text unless xml.css('title').empty?
|
@release.title = xml.css('title').text unless xml.css('title').empty?
|
||||||
@release.status = xml.css('status').text unless xml.css('status').empty?
|
@release.status = xml.css('status').text unless xml.css('status').empty?
|
||||||
date = nil
|
date = xml.css('date').empty? ? '9999-12-31' : xml.css('date').text
|
||||||
date = xml.css('date').text unless xml.css('date').empty?
|
if date.length == 0
|
||||||
unless date.nil? or date.empty?
|
date = '9999-12-31'
|
||||||
if date.length == 4
|
elsif date.length == 4
|
||||||
date += '-01-01'
|
date += '-12-31'
|
||||||
elsif date.length == 7
|
elsif date.length == 7
|
||||||
date += '-01'
|
date += '-31'
|
||||||
end
|
|
||||||
date = Time.parse(date)
|
|
||||||
end
|
end
|
||||||
@release.date = date
|
date = date.split('-')
|
||||||
|
@release.date = Time.utc(date[0], date[1], date[2])
|
||||||
@release.country = xml.css('country').text unless xml.css('country').empty?
|
@release.country = xml.css('country').text unless xml.css('country').empty?
|
||||||
@release
|
@release
|
||||||
end
|
end
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
module MusicBrainz
|
module MusicBrainz
|
||||||
class ReleaseGroup
|
class ReleaseGroup
|
||||||
attr_accessor :id, :type, :title, :first_release_date
|
attr_accessor :id, :type, :title, :disambiguation, :first_release_date
|
||||||
@releases
|
@releases
|
||||||
|
|
||||||
def releases
|
def releases
|
||||||
@ -10,7 +10,7 @@ module MusicBrainz
|
|||||||
@releases << MusicBrainz::Release.parse_xml(r)
|
@releases << MusicBrainz::Release.parse_xml(r)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@releases
|
@releases.sort{ |a, b| a.date <=> b.date }
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.find mbid
|
def self.find mbid
|
||||||
@ -22,18 +22,18 @@ module MusicBrainz
|
|||||||
@release_group = MusicBrainz::ReleaseGroup.new
|
@release_group = MusicBrainz::ReleaseGroup.new
|
||||||
@release_group.id = xml.attr('id')
|
@release_group.id = xml.attr('id')
|
||||||
@release_group.type = xml.attr('type')
|
@release_group.type = xml.attr('type')
|
||||||
@release_group.title = xml.css('title').text unless xml.css('title').empty?
|
@release_group.title = xml.css('title').text
|
||||||
date = nil
|
@release_group.disambiguation = xml.css('disambiguation').empty? ? '' : xml.css('disambiguation').text
|
||||||
date = xml.css('first-release-date').text unless xml.css('first-release-date').empty?
|
date = xml.css('first-release-date').empty? ? '9999-12-31' : xml.css('first-release-date').text
|
||||||
unless date.nil? or date.empty?
|
if date.length == 0
|
||||||
if date.length == 4
|
date = '9999-12-31'
|
||||||
date += '-01-01'
|
elsif date.length == 4
|
||||||
elsif date.length == 7
|
date += '-12-31'
|
||||||
date += '-01'
|
elsif date.length == 7
|
||||||
end
|
date += '-31'
|
||||||
date = Time.parse(date)
|
|
||||||
end
|
end
|
||||||
@release_group.first_release_date = date
|
date = date.split('-')
|
||||||
|
@release_group.first_release_date = Time.utc(date[0], date[1], date[2])
|
||||||
@release_group
|
@release_group
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
Gem::Specification.new do |s|
|
Gem::Specification.new do |s|
|
||||||
s.name = %q{musicbrainz}
|
s.name = %q{musicbrainz}
|
||||||
s.version = "0.4.1"
|
s.version = "0.4.2"
|
||||||
|
|
||||||
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
||||||
s.authors = [%q{Gregory Eremin}]
|
s.authors = [%q{Gregory Eremin}]
|
||||||
|
@ -38,10 +38,10 @@ class TestMusicbrainz < Test::Unit::TestCase
|
|||||||
should "load release groups" do
|
should "load release groups" do
|
||||||
release_groups = @artist.release_groups
|
release_groups = @artist.release_groups
|
||||||
assert_operator(16, :<=, release_groups.length)
|
assert_operator(16, :<=, release_groups.length)
|
||||||
assert_equal('0244b82e-0796-36fc-a629-2507d5441124', release_groups[0].id)
|
assert_equal('533cbc5f-ec7e-32ab-95f3-8d1f804a5176', release_groups.first.id)
|
||||||
assert_equal('Single', release_groups[0].type)
|
assert_equal('Single', release_groups.first.type)
|
||||||
assert_equal('Shoot the Runner', release_groups[0].title)
|
assert_equal('Club Foot', release_groups.first.title)
|
||||||
assert_equal(Time.parse('2006-01-01'), release_groups[0].first_release_date)
|
assert_equal(Time.utc(2004, 5, 10), release_groups.first.first_release_date)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -64,17 +64,17 @@ class TestMusicbrainz < Test::Unit::TestCase
|
|||||||
assert_equal("6f33e0f0-cde2-38f9-9aee-2c60af8d1a61", @release_group.id)
|
assert_equal("6f33e0f0-cde2-38f9-9aee-2c60af8d1a61", @release_group.id)
|
||||||
assert_equal("Album", @release_group.type)
|
assert_equal("Album", @release_group.type)
|
||||||
assert_equal("Empire", @release_group.title)
|
assert_equal("Empire", @release_group.title)
|
||||||
assert_equal(Time.parse('2006-08-28'), @release_group.first_release_date)
|
assert_equal(Time.utc(2006, 8, 28), @release_group.first_release_date)
|
||||||
end
|
end
|
||||||
|
|
||||||
should "load releases" do
|
should "load releases" do
|
||||||
releases = @release_group.releases
|
releases = @release_group.releases
|
||||||
assert_operator(5, :<=, releases.length)
|
assert_operator(5, :<=, releases.length)
|
||||||
assert_equal('2225dd4c-ae9a-403b-8ea0-9e05014c778f', releases[0].id)
|
assert_equal('2225dd4c-ae9a-403b-8ea0-9e05014c778f', releases.first.id)
|
||||||
assert_equal('Official', releases[0].status)
|
assert_equal('Official', releases.first.status)
|
||||||
assert_equal('Empire', releases[0].title)
|
assert_equal('Empire', releases.first.title)
|
||||||
assert_equal(Time.parse('2006-08-28'), releases[0].date)
|
assert_equal(Time.utc(2006, 8, 28), releases.first.date)
|
||||||
assert_equal('GB', releases[0].country)
|
assert_equal('GB', releases.first.country)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -97,17 +97,17 @@ class TestMusicbrainz < Test::Unit::TestCase
|
|||||||
assert_equal("2225dd4c-ae9a-403b-8ea0-9e05014c778f", @release.id)
|
assert_equal("2225dd4c-ae9a-403b-8ea0-9e05014c778f", @release.id)
|
||||||
assert_equal("Empire", @release.title)
|
assert_equal("Empire", @release.title)
|
||||||
assert_equal("Official", @release.status)
|
assert_equal("Official", @release.status)
|
||||||
assert_equal(Time.parse('2006-08-28'), @release.date)
|
assert_equal(Time.utc(2006, 8, 28), @release.date)
|
||||||
assert_equal("GB", @release.country)
|
assert_equal("GB", @release.country)
|
||||||
end
|
end
|
||||||
|
|
||||||
should "load tracks" do
|
should "load tracks" do
|
||||||
tracks = @release.tracks
|
tracks = @release.tracks
|
||||||
assert_equal(11, tracks.length)
|
assert_equal(11, tracks.length)
|
||||||
assert_equal(1, tracks[0].position)
|
assert_equal(1, tracks.first.position)
|
||||||
assert_equal('b3015bab-1540-4d4e-9f30-14872a1525f7', tracks[0].recording_id)
|
assert_equal('b3015bab-1540-4d4e-9f30-14872a1525f7', tracks.first.recording_id)
|
||||||
assert_equal('Empire', tracks[0].title)
|
assert_equal('Empire', tracks.first.title)
|
||||||
assert_equal(233013, tracks[0].length)
|
assert_equal(233013, tracks.first.length)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user