brainz_releases 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/.gitignore +1 -0
- data/README.rdoc +2 -2
- data/lib/brainz_releases/search.rb +10 -10
- data/lib/brainz_releases/version.rb +1 -1
- data/spec/brainz_releases_spec.rb +2 -2
- data/spec/release_spec.rb +5 -6
- data/spec/search_spec.rb +3 -3
- metadata +61 -74
checksums.yaml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
!binary "U0hBMQ==":
|
|
3
|
+
metadata.gz: !binary |-
|
|
4
|
+
NDY3OGQ1NmJjNDcyOTNmYzgwZjBhYzMzZGY2NGY1MzUzY2ZiMWI0Mg==
|
|
5
|
+
data.tar.gz: !binary |-
|
|
6
|
+
YzEwNDIyMzNhYWQ3ZjczZmY5NTI5YzBhMTJiYzg0ZTliNjgzNmVhMA==
|
|
7
|
+
!binary "U0hBNTEy":
|
|
8
|
+
metadata.gz: !binary |-
|
|
9
|
+
YmM2NDY2Zjk4NTg5OGY0ZjgxOGM0OThiZDcxNWI4ZGQwZTkwMmI1NTFkNmEy
|
|
10
|
+
ZWZjZjc1MjJiYWRmYmU0Y2VlMWZiMGE2NDI1M2U0OWJkYzMxNDZiYTRiM2Uw
|
|
11
|
+
ZmU0MDA0OTdjMmRlODEyMzI5N2IxMjU1NDMxMDVjOTQ4YTRkZDI=
|
|
12
|
+
data.tar.gz: !binary |-
|
|
13
|
+
ZWQyZjI3N2ZlNzFmYWQ1NDBmNTE5MzE4ZGYzMzAyZWFiYjliMmNkNmY5YmM4
|
|
14
|
+
YWZkZWYxZTBjNWIxMDUyYmFiMDc4N2UyZjRiNTgxYTdhYjE3YjI1NDFjYTBm
|
|
15
|
+
NWQxYzM4MTY3MTY4MmY4ZjZhOTQ0YjI2Yzg4MDY3NDljMzJjNWE=
|
data/.gitignore
CHANGED
data/README.rdoc
CHANGED
|
@@ -18,9 +18,9 @@ Example:
|
|
|
18
18
|
search.start_date = Date.parse("1/1/2011") # Optional – defaults to 1 month ago
|
|
19
19
|
search.end_date = Date.parse("5/5/2011") # Optional – defaults to 1 month in the future
|
|
20
20
|
end
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
release = releases.first
|
|
23
|
-
|
|
23
|
+
|
|
24
24
|
# A BrainzReleases::Release object has a number of methods to easily access the attributes returned by the MusicBrainz api
|
|
25
25
|
# For example...
|
|
26
26
|
release.title # => "Fi"
|
|
@@ -10,23 +10,23 @@ module BrainzReleases
|
|
|
10
10
|
class Error < StandardError; end
|
|
11
11
|
class ResponseError < Error; end
|
|
12
12
|
class ConfigError < Error; end
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
attr_accessor :name, :mbid, :start_date, :end_date, :user_agent
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
def self.search(*args, &block)
|
|
17
17
|
Search.new(*args, &block).results
|
|
18
18
|
end
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
def initialize(*args, &block)
|
|
21
21
|
(block.arity < 1 ? self.instance_eval(&block) : block.call(self)) if block
|
|
22
22
|
raise ConfigError, "You must provide a :name or :mbid parameter" if [name, mbid].all?(&:nil?)
|
|
23
23
|
raise ConfigError, "You must provide a user_agent parameter to identify your requests" if user_agent.nil?
|
|
24
24
|
end
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
def start_date
|
|
27
27
|
@start_date ||= Date.today << 1
|
|
28
28
|
end
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
def end_date
|
|
31
31
|
@end_date ||= Date.today >> 1
|
|
32
32
|
end
|
|
@@ -46,21 +46,21 @@ module BrainzReleases
|
|
|
46
46
|
when "200"
|
|
47
47
|
@releases_xml = Nokogiri::XML(response.body)
|
|
48
48
|
else
|
|
49
|
-
raise ResponseError, "There is a problem accessing the Music Brainz api"
|
|
49
|
+
raise ResponseError, "There is a problem accessing the Music Brainz api. Response code: #{response.code} \n #{response.inspect}"
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
# Returns an array of BrainzReleases::Release objects
|
|
54
54
|
def results
|
|
55
|
-
(releases = []).tap do
|
|
55
|
+
(releases = []).tap do
|
|
56
56
|
releases_xml.xpath('//xmlns:release').each do |node|
|
|
57
57
|
releases << BrainzReleases::Release.build_from_node(node)
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
|
-
|
|
62
|
-
private
|
|
63
|
-
|
|
61
|
+
|
|
62
|
+
private
|
|
63
|
+
|
|
64
64
|
def query
|
|
65
65
|
CGI.escape("#{artist_param} AND date:[#{start_date.to_s} TO #{end_date.to_s}]")
|
|
66
66
|
end
|
|
@@ -2,10 +2,10 @@ require 'spec_helper.rb'
|
|
|
2
2
|
|
|
3
3
|
describe BrainzReleases do
|
|
4
4
|
|
|
5
|
-
describe "::search" do
|
|
5
|
+
describe "::search" do
|
|
6
6
|
it "should call search" do
|
|
7
7
|
BrainzReleases::Search.should_receive(:search)
|
|
8
|
-
BrainzReleases.search do |search|
|
|
8
|
+
BrainzReleases.search do |search|
|
|
9
9
|
search.mbid = "123"
|
|
10
10
|
end
|
|
11
11
|
end
|
data/spec/release_spec.rb
CHANGED
|
@@ -2,14 +2,13 @@ require 'spec_helper.rb'
|
|
|
2
2
|
|
|
3
3
|
describe BrainzReleases::Release do
|
|
4
4
|
|
|
5
|
-
|
|
6
5
|
describe "build_from_node" do
|
|
7
|
-
|
|
6
|
+
|
|
8
7
|
before do
|
|
9
8
|
node = Nokogiri::XML(File.read("spec/fixtures/ok.xml")).xpath('//xmlns:release').first
|
|
10
9
|
@release = BrainzReleases::Release.build_from_node(node)
|
|
11
10
|
end
|
|
12
|
-
|
|
11
|
+
|
|
13
12
|
it "should set the attributes" do
|
|
14
13
|
@release.mbid.should == "4a46ee61-75b5-4e2b-ac2e-81ef2ccec0f9"
|
|
15
14
|
@release.artist_name.should == "Bibio"
|
|
@@ -22,10 +21,10 @@ describe BrainzReleases::Release do
|
|
|
22
21
|
@release.label.should == "Mush Records"
|
|
23
22
|
@release.country.should == "US"
|
|
24
23
|
end
|
|
25
|
-
|
|
24
|
+
|
|
26
25
|
it "should be able to list the attributes as a hash" do
|
|
27
26
|
@release.attributes.should == {
|
|
28
|
-
:mbid => "4a46ee61-75b5-4e2b-ac2e-81ef2ccec0f9",
|
|
27
|
+
:mbid => "4a46ee61-75b5-4e2b-ac2e-81ef2ccec0f9",
|
|
29
28
|
:artist_name => "Bibio",
|
|
30
29
|
:artist_mbid => "9f9953f0-68bb-4ce3-aace-2f44c87f0aa3",
|
|
31
30
|
:title => "Fi",
|
|
@@ -37,7 +36,7 @@ describe BrainzReleases::Release do
|
|
|
37
36
|
:country => "US"
|
|
38
37
|
}
|
|
39
38
|
end
|
|
40
|
-
|
|
39
|
+
|
|
41
40
|
end
|
|
42
41
|
|
|
43
42
|
end
|
data/spec/search_spec.rb
CHANGED
|
@@ -17,7 +17,7 @@ describe BrainzReleases::Search do
|
|
|
17
17
|
search.mbid = "123"
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
it "should initialize the user agent" do
|
|
22
22
|
@brainz_search.user_agent.should == "Testing/0.1"
|
|
23
23
|
end
|
|
@@ -44,7 +44,7 @@ describe BrainzReleases::Search do
|
|
|
44
44
|
lambda {BrainzReleases::Search.new { |search| search.user_agent = "Foo"}}.should raise_exception(BrainzReleases::Search::ConfigError)
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
|
-
|
|
47
|
+
|
|
48
48
|
context "when the user agent is missing" do
|
|
49
49
|
it "should raise an exception" do
|
|
50
50
|
lambda {BrainzReleases::Search.new { |search| search.mbid = "123"}}.should raise_exception(BrainzReleases::Search::ConfigError)
|
|
@@ -85,7 +85,7 @@ describe BrainzReleases::Search do
|
|
|
85
85
|
end
|
|
86
86
|
end
|
|
87
87
|
|
|
88
|
-
it "should use the mbid" do
|
|
88
|
+
it "should use the mbid" do
|
|
89
89
|
@brainz_search.uri.should == URI.parse("http://musicbrainz.org/ws/2/release/?type=xml&query=arid%3A123+AND+date%3A%5B2011-01-01+TO+2011-05-05%5D")
|
|
90
90
|
end
|
|
91
91
|
|
metadata
CHANGED
|
@@ -1,72 +1,65 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: brainz_releases
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
5
|
-
segments:
|
|
6
|
-
- 0
|
|
7
|
-
- 0
|
|
8
|
-
- 6
|
|
9
|
-
version: 0.0.6
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.7
|
|
10
5
|
platform: ruby
|
|
11
|
-
authors:
|
|
6
|
+
authors:
|
|
12
7
|
- Paul Sturgess
|
|
13
8
|
autorequire:
|
|
14
9
|
bindir: bin
|
|
15
10
|
cert_chain: []
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
dependencies:
|
|
20
|
-
- !ruby/object:Gem::Dependency
|
|
21
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
|
22
|
-
requirements:
|
|
23
|
-
- - ~>
|
|
24
|
-
- !ruby/object:Gem::Version
|
|
25
|
-
segments:
|
|
26
|
-
- 1
|
|
27
|
-
- 4
|
|
28
|
-
version: "1.4"
|
|
11
|
+
date: 2013-04-11 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
29
14
|
name: nokogiri
|
|
30
|
-
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ~>
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.4'
|
|
31
20
|
type: :runtime
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
requirements:
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
36
24
|
- - ~>
|
|
37
|
-
- !ruby/object:Gem::Version
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- 6
|
|
41
|
-
version: "2.6"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.4'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
42
28
|
name: rspec
|
|
43
|
-
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ~>
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '2.6'
|
|
44
34
|
type: :development
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
requirements:
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
49
38
|
- - ~>
|
|
50
|
-
- !ruby/object:Gem::Version
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
- 3
|
|
54
|
-
- 0
|
|
55
|
-
version: 1.3.0
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '2.6'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
56
42
|
name: fakeweb
|
|
57
|
-
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ~>
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: 1.3.0
|
|
58
48
|
type: :development
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ~>
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: 1.3.0
|
|
55
|
+
description: Uses the MusicBrainz XML Web Service (version 2) to extract the releases
|
|
56
|
+
for an artist and turns them into nice ruby objects.
|
|
57
|
+
email:
|
|
62
58
|
- paulsturgess@gmail.com
|
|
63
59
|
executables: []
|
|
64
|
-
|
|
65
60
|
extensions: []
|
|
66
|
-
|
|
67
61
|
extra_rdoc_files: []
|
|
68
|
-
|
|
69
|
-
files:
|
|
62
|
+
files:
|
|
70
63
|
- .DS_Store
|
|
71
64
|
- .gitignore
|
|
72
65
|
- Gemfile
|
|
@@ -83,37 +76,31 @@ files:
|
|
|
83
76
|
- spec/release_spec.rb
|
|
84
77
|
- spec/search_spec.rb
|
|
85
78
|
- spec/spec_helper.rb
|
|
86
|
-
has_rdoc: true
|
|
87
79
|
homepage: https://github.com/paulsturgess/brainz_releases
|
|
88
80
|
licenses: []
|
|
89
|
-
|
|
81
|
+
metadata: {}
|
|
90
82
|
post_install_message:
|
|
91
83
|
rdoc_options: []
|
|
92
|
-
|
|
93
|
-
require_paths:
|
|
84
|
+
require_paths:
|
|
94
85
|
- lib
|
|
95
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
|
-
requirements:
|
|
97
|
-
- -
|
|
98
|
-
- !ruby/object:Gem::Version
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
- !ruby/object:Gem::Version
|
|
106
|
-
segments:
|
|
107
|
-
- 0
|
|
108
|
-
version: "0"
|
|
86
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
87
|
+
requirements:
|
|
88
|
+
- - ! '>='
|
|
89
|
+
- !ruby/object:Gem::Version
|
|
90
|
+
version: '0'
|
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - ! '>='
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '0'
|
|
109
96
|
requirements: []
|
|
110
|
-
|
|
111
97
|
rubyforge_project: brainz_releases
|
|
112
|
-
rubygems_version:
|
|
98
|
+
rubygems_version: 2.0.0
|
|
113
99
|
signing_key:
|
|
114
|
-
specification_version:
|
|
115
|
-
summary: Provides a ruby interface for extracting the releases for an artist from
|
|
116
|
-
|
|
100
|
+
specification_version: 4
|
|
101
|
+
summary: Provides a ruby interface for extracting the releases for an artist from
|
|
102
|
+
MusicBrainz
|
|
103
|
+
test_files:
|
|
117
104
|
- spec/brainz_releases_spec.rb
|
|
118
105
|
- spec/fixtures/ok.xml
|
|
119
106
|
- spec/release_spec.rb
|