musicbrainz 0.7.4 → 0.7.5

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -3,3 +3,4 @@ coverage
3
3
  tmp
4
4
  Gemfile.lock
5
5
  .gem
6
+ *.swp
data/CHANGELOG.md ADDED
@@ -0,0 +1,10 @@
1
+ ## musicbrainz (unreleased) ##
2
+
3
+ # 0.7.5 (May 6, 2013) ##
4
+
5
+ * Created new track_search binding to allow searching for tracks. [#18]
6
+ * Adds release group urls. [#17]
7
+
8
+ # 0.1.0 (July 18, 2011) ##
9
+
10
+ * Initial version.
data/Contributors CHANGED
@@ -4,3 +4,4 @@ Applicat (https://github.com/Applicat)
4
4
  Jens Fahnenbruck (https://github.com/jigfox)
5
5
  Sander Nieuwenhuizen (https://github.com/munkius)
6
6
  Savater Sebastien (https://github.com/blakink)
7
+ Thomas Wolfe (https://github.com/tomwolfe)
data/Gemfile CHANGED
@@ -1,2 +1,2 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
  gemspec
data/README.md CHANGED
@@ -80,9 +80,9 @@ MusicBrainz::ReleaseGroup
80
80
  ```ruby
81
81
  # Class Methods
82
82
  MusicBrainz::ReleaseGroup.find(id)
83
- MusicBrainz::ReleaseGroup.find_by_artist_and_title(artist_name, title, type: 'Album')
83
+ MusicBrainz::ReleaseGroup.find_by_artist_and_title(artist_name, title, 'Album') # 3rd arg optional
84
84
  MusicBrainz::ReleaseGroup.search(artist_name, title)
85
- MusicBrainz::ReleaseGroup.search(artist_name, title, type: 'Album')
85
+ MusicBrainz::ReleaseGroup.search(artist_name, title, 'Album') # 3rd arg optional
86
86
 
87
87
  # Instance Methods
88
88
  @release_group.releases
@@ -93,7 +93,8 @@ MusicBrainz::ReleaseGroup.search(artist_name, title, type: 'Album')
93
93
  :type => String,
94
94
  :title => String,
95
95
  :desc => String,
96
- :first_release_date => Date
96
+ :first_release_date => Date,
97
+ :urls => Hash
97
98
  }
98
99
  ```
99
100
 
@@ -124,6 +125,7 @@ MusicBrainz::Track
124
125
  ```ruby
125
126
  # Class Methods
126
127
  MusicBrainz::Track.find(id)
128
+ MusicBrainz::ReleaseGroup.search(artist_name, track_name)
127
129
 
128
130
  # Fields
129
131
  {
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+
8
+ Bundler::GemHelper.install_tasks
data/lib/musicbrainz.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "digest/sha1"
2
2
  require "fileutils"
3
+ require "date"
3
4
 
4
5
  require "faraday"
5
6
  require "nokogiri"
@@ -29,6 +30,7 @@ require "musicbrainz/bindings/release_group_releases"
29
30
  require "musicbrainz/bindings/release"
30
31
  require "musicbrainz/bindings/release_tracks"
31
32
  require "musicbrainz/bindings/track"
33
+ require "musicbrainz/bindings/track_search"
32
34
 
33
35
  module MusicBrainz
34
36
  GH_PAGE_URL = "http://git.io/brainz"
@@ -8,7 +8,10 @@ module MusicBrainz
8
8
  type: (xml.attribute('type').value rescue nil),
9
9
  title: (xml.xpath('./title').text rescue nil),
10
10
  desc: (xml.xpath('./disambiguation').text rescue nil),
11
- first_release_date: (xml.xpath('./first-release-date').text rescue nil)
11
+ first_release_date: (xml.xpath('./first-release-date').text rescue nil),
12
+ urls: (Hash[xml.xpath('./relation-list[@target-type="url"]/relation').map{ |xml|
13
+ [xml.attribute('type').value.downcase.split(" ").join("_").to_sym, xml.xpath('./target').text]
14
+ }] rescue {})
12
15
  }
13
16
  end
14
17
 
@@ -0,0 +1,21 @@
1
+ # encoding: UTF-8
2
+ module MusicBrainz
3
+ module Bindings
4
+ module TrackSearch
5
+ def parse(xml)
6
+ xml.xpath('./recording-list/recording').map do |xml|
7
+ {
8
+ id: (xml.attribute('id').value rescue nil),
9
+ mbid: (xml.attribute('id').value rescue nil), # Old shit
10
+ title: (xml.xpath('./title').text.gsub(/[`’]/, "'") rescue nil),
11
+ artist: (xml.xpath('./artist-credit/name-credit/artist/name').text rescue nil),
12
+ releases: (xml.xpath('./release-list/release/title').map{ |xml| xml.text } rescue []),
13
+ score: (xml.attribute('score').value.to_i rescue nil)
14
+ } rescue nil
15
+ end.delete_if{ |item| item.nil? }
16
+ end
17
+
18
+ extend self
19
+ end
20
+ end
21
+ end
@@ -9,7 +9,7 @@ module MusicBrainz
9
9
  field :urls, Hash
10
10
 
11
11
  def release_groups
12
- @release_groups ||= client.load(:release_group, { artist: id }, {
12
+ @release_groups ||= client.load(:release_group, { artist: id, inc: [:url_rels] }, {
13
13
  binding: :artist_release_groups,
14
14
  create_models: :release_group,
15
15
  sort: :first_release_date
@@ -25,11 +25,7 @@ module MusicBrainz
25
25
  end
26
26
 
27
27
  def search(name)
28
- name = CGI.escape(name).gsub(/\!/, '\!')
29
-
30
- client.load(:artist, { query: "artist:#{name}", limit: 10 }, {
31
- binding: :artist_search
32
- })
28
+ super({artist: name})
33
29
  end
34
30
 
35
31
  def discography(mbid)
@@ -23,6 +23,38 @@ module MusicBrainz
23
23
  def client
24
24
  MusicBrainz.client
25
25
  end
26
+
27
+ def search(hash)
28
+ hash = escape_strings(hash)
29
+ query_val = build_query(hash)
30
+ underscore_name = self.name[13..-1].underscore
31
+ client.load(underscore_name.to_sym, { query: query_val, limit: 10 }, { binding: underscore_name.insert(-1,"_search").to_sym })
32
+ end
33
+
34
+ class ::String
35
+ def underscore
36
+ self.gsub(/::/, '/').
37
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
38
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
39
+ tr("-", "_").
40
+ downcase
41
+ end
42
+ end
43
+
44
+ def build_query(hash)
45
+ return ["#{hash.first[0].to_s}:\"#{hash.first[1]}\""] if hash.size ==1
46
+ arr ||= []
47
+ hash.each { |k, v| arr << "#{k.to_s}:\"#{hash[k]}\"" }
48
+ arr.join(' AND ')
49
+ end
50
+
51
+ def escape_strings(hash)
52
+ hash.each { |k, v| hash[k] = CGI.escape(v).gsub(/\!/, '\!') }
53
+ hash
54
+ end
55
+
56
+ # these probably should be private... but I'm not sure how to get it to work in a module...
57
+ # private_class_method :build_query, :escape_strings
26
58
  end
27
59
 
28
60
  module InstanceMethods
@@ -5,6 +5,7 @@ module MusicBrainz
5
5
  field :title, String
6
6
  field :desc, String
7
7
  field :first_release_date, Date
8
+ field :urls, Hash
8
9
 
9
10
  alias_method :disambiguation, :desc
10
11
 
@@ -18,26 +19,22 @@ module MusicBrainz
18
19
 
19
20
  class << self
20
21
  def find(id)
21
- client.load(:release_group, { id: id }, {
22
+ client.load(:release_group, { id: id, inc: [:url_rels] }, {
22
23
  binding: :release_group,
23
24
  create_model: :release_group
24
25
  })
25
26
  end
26
27
 
27
- def search(artist_name, title, options = {})
28
- artist_name = CGI.escape(artist_name).gsub(/\!/, '\!')
29
- title = CGI.escape(title).gsub(/\!/, '\!')
30
- query = ["artist:\"#{artist_name}\"", "releasegroup:\"#{title}\""]
31
- query << "type: #{options[:type]}" if options[:type]
32
-
33
- client.load(
34
- :release_group, { query: query.join(' AND '), limit: 10 },
35
- { binding: :release_group_search }
36
- )
28
+ def search(artist_name, title, type = nil)
29
+ if type
30
+ super({artist: artist_name, releasegroup: title, type: type})
31
+ else
32
+ super({artist: artist_name, releasegroup: title})
33
+ end
37
34
  end
38
35
 
39
- def find_by_artist_and_title(artist_name, title, options = {})
40
- matches = search(artist_name, title, options)
36
+ def find_by_artist_and_title(artist_name, title, type = nil )
37
+ matches = search(artist_name, title, type)
41
38
  matches.empty? ? nil : find(matches.first[:id])
42
39
  end
43
40
  end
@@ -12,6 +12,10 @@ module MusicBrainz
12
12
  create_model: :track
13
13
  })
14
14
  end
15
+
16
+ def search(artist_name, track_name)
17
+ super({artist: artist_name, recording: track_name})
18
+ end
15
19
  end
16
20
  end
17
21
  end
@@ -1,3 +1,3 @@
1
1
  module MusicBrainz
2
- VERSION = "0.7.4"
2
+ VERSION = "0.7.5"
3
3
  end
@@ -5,8 +5,8 @@ require "spec_helper"
5
5
  describe MusicBrainz::Bindings::ReleaseGroupSearch do
6
6
  describe '.parse' do
7
7
  it "gets correct release group data" do
8
- response = '<release-group-list><release-group id="246bc928-2dc8-35ba-80ee-7a0079de1632" type="Single" ext:score="100"><title>Empire</title></release-group>'
9
- described_class.parse(Nokogiri::XML.parse(response)).should == [
8
+ response = '<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#" xmlns:ext="http://musicbrainz.org/ns/ext#-2.0"><release-group-list><release-group id="246bc928-2dc8-35ba-80ee-7a0079de1632" type="Single" ext:score="100"><title>Empire</title></release-group></release-group-list></metadata>'
9
+ described_class.parse(Nokogiri::XML.parse(response).remove_namespaces!.xpath('/metadata')).should == [
10
10
  {
11
11
  id: '246bc928-2dc8-35ba-80ee-7a0079de1632', mbid: '246bc928-2dc8-35ba-80ee-7a0079de1632',
12
12
  title: 'Empire', type: 'Single', score: 100
@@ -14,4 +14,4 @@ describe MusicBrainz::Bindings::ReleaseGroupSearch do
14
14
  ]
15
15
  end
16
16
  end
17
- end
17
+ end
@@ -0,0 +1,17 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require "spec_helper"
4
+
5
+ describe MusicBrainz::Bindings::TrackSearch do
6
+ describe '.parse' do
7
+ it "gets correct Track (really recording) data" do
8
+ response = '<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#" xmlns:ext="http://musicbrainz.org/ns/ext#-2.0"><recording-list offset="0" count="1"><recording id="0b382a13-32f0-4743-9248-ba5536a6115e" ext:score="100"><title>King Fred</title><artist-credit><name-credit><artist id="f52f7a92-d495-4d32-89e7-8b1e5b8541c8"><name>Too Much Joy</name></artist></name-credit></artist-credit><release-list><release id="8442e42b-c40a-4817-89a0-dbe663c94d2d"><title>Green Eggs and Crack</title></release></release-list></recording></recording-list></metadata>'
9
+ described_class.parse(Nokogiri::XML.parse(response).remove_namespaces!.xpath('/metadata')).should == [
10
+ {
11
+ id: '0b382a13-32f0-4743-9248-ba5536a6115e', mbid: '0b382a13-32f0-4743-9248-ba5536a6115e',
12
+ title: 'King Fred', artist: 'Too Much Joy', releases: ['Green Eggs and Crack'], score: 100
13
+ }
14
+ ]
15
+ end
16
+ end
17
+ end
@@ -12,7 +12,7 @@ describe MusicBrainz::ClientModules::CachingProxy do
12
12
  let(:test_response){ File.open(test_response_file).read }
13
13
 
14
14
  before(:all) do
15
- MusicBrainz.config.cache_path = tmp_cache_path
15
+ MusicBrainz.config.cache_path = File.join(File.dirname(__FILE__), '..', '..', 'tmp', 'cache_module_spec_cache')
16
16
  end
17
17
 
18
18
  after(:all) do
@@ -0,0 +1,22 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#">
3
+ <release-group type="Album" id="6f33e0f0-cde2-38f9-9aee-2c60af8d1a61">
4
+ <title>Empire</title>
5
+ <first-release-date>2006-08-28</first-release-date>
6
+ <primary-type>Album</primary-type>
7
+ <relation-list target-type="url">
8
+ <relation type-id="6578f0e9-1ace-4095-9de8-6e517ddb1ceb" type="wikipedia">
9
+ <target id="e831302f-4fa8-4630-afa5-4e32a795322a">http://en.wikipedia.org/wiki/Empire_(Kasabian_album)</target>
10
+ </relation>
11
+ <relation type-id="156344d3-da8b-40c6-8b10-7b1c22727124" type="lyrics">
12
+ <target id="87d521d9-c78e-42fd-ac5e-98c82e6394a0">http://lyrics.wikia.com/Kasabian:Empire_(2006)</target>
13
+ </relation>
14
+ <relation type-id="c3ac9c3b-f546-4d15-873f-b294d2c1b708" type="review">
15
+ <target id="732310f9-ac35-468f-b293-891c6f7d0812">http://www.bbc.co.uk/music/reviews/389x</target>
16
+ </relation>
17
+ <relation type-id="99e550f3-5ab4-3110-b5b9-fe01d970b126" type="discogs">
18
+ <target id="1afddd13-53dd-4d0c-87e2-faf016725e95">http://www.discogs.com/master/89980</target>
19
+ </relation>
20
+ </relation-list>
21
+ </release-group>
22
+ </metadata>
@@ -0,0 +1,79 @@
1
+ <?xml version="1.0" standalone="yes"?>
2
+ <metadata created="2013-05-06T14:05:42.527Z" xmlns="http://musicbrainz.org/ns/mmd-2.0#" xmlns:ext="http://musicbrainz.org/ns/ext#-2.0">
3
+ <release-group-list count="2" offset="0">
4
+ <release-group id="6f33e0f0-cde2-38f9-9aee-2c60af8d1a61" type="Album" ext:score="100">
5
+ <title>Empire</title>
6
+ <primary-type>Album</primary-type>
7
+ <artist-credit>
8
+ <name-credit>
9
+ <artist id="69b39eab-6577-46a4-a9f5-817839092033">
10
+ <name>Kasabian</name>
11
+ <sort-name>Kasabian</sort-name>
12
+ </artist>
13
+ </name-credit>
14
+ </artist-credit>
15
+ <release-list count="7">
16
+ <release id="9f068ed6-9f69-4a60-bf5a-0931176a9aba">
17
+ <title>Empire</title>
18
+ <status>Official</status>
19
+ </release>
20
+ <release id="30d5e730-ce0a-464d-93e1-7d76e4bb3e31">
21
+ <title>Empire</title>
22
+ <status>Official</status>
23
+ </release>
24
+ <release id="36ee86ab-0450-4d8f-a970-183c11f210c1">
25
+ <title>Empire</title>
26
+ <status>Official</status>
27
+ </release>
28
+ <release id="2225dd4c-ae9a-403b-8ea0-9e05014c778f">
29
+ <title>Empire</title>
30
+ <status>Official</status>
31
+ </release>
32
+ <release id="2c8dcfc6-4afe-4b33-abc7-dff1bb4c5386">
33
+ <title>Empire</title>
34
+ <status>Official</status>
35
+ </release>
36
+ <release id="2bc94ddc-b872-3b7f-b0a7-98a4fffbe5ba">
37
+ <title>Empire</title>
38
+ <status>Official</status>
39
+ </release>
40
+ <release id="dd34af03-37ab-460a-b20a-54629336d81a">
41
+ <title>Empire</title>
42
+ <status>Official</status>
43
+ </release>
44
+ </release-list>
45
+ <tag-list>
46
+ <tag count="3">
47
+ <name>rock</name>
48
+ </tag>
49
+ <tag count="4">
50
+ <name>alternative rock</name>
51
+ </tag>
52
+ <tag count="1">
53
+ <name>indie</name>
54
+ </tag>
55
+ <tag count="1">
56
+ <name>rock and indie</name>
57
+ </tag>
58
+ </tag-list>
59
+ </release-group>
60
+ <release-group id="246bc928-2dc8-35ba-80ee-7a0079de1632" type="Single" ext:score="100">
61
+ <title>Empire</title>
62
+ <primary-type>Single</primary-type>
63
+ <artist-credit>
64
+ <name-credit>
65
+ <artist id="69b39eab-6577-46a4-a9f5-817839092033">
66
+ <name>Kasabian</name>
67
+ <sort-name>Kasabian</sort-name>
68
+ </artist>
69
+ </name-credit>
70
+ </artist-credit>
71
+ <release-list count="1">
72
+ <release id="1da0d848-b937-4beb-8024-f4fdf6193708">
73
+ <title>Empire</title>
74
+ <status>Official</status>
75
+ </release>
76
+ </release-list>
77
+ </release-group>
78
+ </release-group-list>
79
+ </metadata>
@@ -56,5 +56,6 @@ describe MusicBrainz::Artist do
56
56
  release_groups.first.type.should == "Single"
57
57
  release_groups.first.title.should == "Club Foot"
58
58
  release_groups.first.first_release_date.should == Date.new(2004, 5, 10)
59
+ release_groups.first.urls[:discogs].should == 'http://www.discogs.com/master/125150'
59
60
  end
60
61
  end
@@ -21,22 +21,27 @@ describe MusicBrainz::ReleaseGroup do
21
21
  release_group.type.should == "Album"
22
22
  release_group.title.should == "Empire"
23
23
  release_group.first_release_date.should == Date.new(2006, 8, 28)
24
+ release_group.urls[:wikipedia].should == 'http://en.wikipedia.org/wiki/Empire_(Kasabian_album)'
24
25
  end
25
26
  end
26
27
 
27
28
  describe '.search' do
28
29
  context 'without type filter' do
29
30
  it "searches release group by artist name and title" do
31
+ response = File.open(File.join(File.dirname(__FILE__), "../fixtures/release_group/search.xml")).read
32
+ MusicBrainz::Client.any_instance.stub(:get_contents).with('http://musicbrainz.org/ws/2/release-group?query=artist:"Kasabian" AND releasegroup:"Empire"&limit=10').
33
+ and_return({ status: 200, body: response})
34
+
30
35
  matches = MusicBrainz::ReleaseGroup.search('Kasabian', 'Empire')
31
36
  matches.length.should be > 0
32
37
  matches.first[:title].should == 'Empire'
33
- matches.first[:type].should == 'Single'
38
+ matches.first[:type].should == 'Album'
34
39
  end
35
40
  end
36
41
 
37
42
  context 'with type filter' do
38
43
  it "searches release group by artist name and title" do
39
- matches = MusicBrainz::ReleaseGroup.search('Kasabian', 'Empire', type: 'Album')
44
+ matches = MusicBrainz::ReleaseGroup.search('Kasabian', 'Empire', 'Album')
40
45
  matches.length.should be > 0
41
46
  matches.first[:title].should == 'Empire'
42
47
  matches.first[:type].should == 'Album'
@@ -46,8 +51,16 @@ describe MusicBrainz::ReleaseGroup do
46
51
 
47
52
  describe '.find_by_artist_and_title' do
48
53
  it "gets first release group by artist name and title" do
54
+ response = File.open(File.join(File.dirname(__FILE__), "../fixtures/release_group/search.xml")).read
55
+ MusicBrainz::Client.any_instance.stub(:get_contents).with('http://musicbrainz.org/ws/2/release-group?query=artist:"Kasabian" AND releasegroup:"Empire"&limit=10').
56
+ and_return({ status: 200, body: response})
57
+
58
+ response = File.open(File.join(File.dirname(__FILE__), "../fixtures/release_group/entity.xml")).read
59
+ MusicBrainz::Client.any_instance.stub(:get_contents).with('http://musicbrainz.org/ws/2/release-group/6f33e0f0-cde2-38f9-9aee-2c60af8d1a61?inc=url-rels').
60
+ and_return({ status: 200, body: response})
61
+
49
62
  release_group = MusicBrainz::ReleaseGroup.find_by_artist_and_title('Kasabian', 'Empire')
50
- release_group.id.should == '246bc928-2dc8-35ba-80ee-7a0079de1632'
63
+ release_group.id.should == '6f33e0f0-cde2-38f9-9aee-2c60af8d1a61'
51
64
  end
52
65
  end
53
66
 
metadata CHANGED
@@ -1,80 +1,80 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: musicbrainz
3
3
  version: !ruby/object:Gem::Version
4
+ version: 0.7.5
4
5
  prerelease:
5
- version: 0.7.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Gregory Eremin
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-30 00:00:00.000000000 Z
12
+ date: 2013-05-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- version_requirements: !ruby/object:Gem::Requirement
15
+ name: faraday
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ! '>='
18
20
  - !ruby/object:Gem::Version
19
21
  version: '0'
20
- none: false
21
- name: faraday
22
22
  type: :runtime
23
23
  prerelease: false
24
- requirement: !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
25
26
  requirements:
26
27
  - - ! '>='
27
28
  - !ruby/object:Gem::Version
28
29
  version: '0'
29
- none: false
30
30
  - !ruby/object:Gem::Dependency
31
- version_requirements: !ruby/object:Gem::Requirement
31
+ name: nokogiri
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
32
34
  requirements:
33
35
  - - ! '>='
34
36
  - !ruby/object:Gem::Version
35
37
  version: '0'
36
- none: false
37
- name: nokogiri
38
38
  type: :runtime
39
39
  prerelease: false
40
- requirement: !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
41
42
  requirements:
42
43
  - - ! '>='
43
44
  - !ruby/object:Gem::Version
44
45
  version: '0'
45
- none: false
46
46
  - !ruby/object:Gem::Dependency
47
- version_requirements: !ruby/object:Gem::Requirement
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
48
50
  requirements:
49
51
  - - ! '>='
50
52
  - !ruby/object:Gem::Version
51
53
  version: '0'
52
- none: false
53
- name: rspec
54
54
  type: :development
55
55
  prerelease: false
56
- requirement: !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
57
58
  requirements:
58
59
  - - ! '>='
59
60
  - !ruby/object:Gem::Version
60
61
  version: '0'
61
- none: false
62
62
  - !ruby/object:Gem::Dependency
63
- version_requirements: !ruby/object:Gem::Requirement
63
+ name: awesome_print
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
64
66
  requirements:
65
67
  - - ! '>='
66
68
  - !ruby/object:Gem::Version
67
69
  version: '0'
68
- none: false
69
- name: awesome_print
70
70
  type: :development
71
71
  prerelease: false
72
- requirement: !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
73
74
  requirements:
74
75
  - - ! '>='
75
76
  - !ruby/object:Gem::Version
76
77
  version: '0'
77
- none: false
78
78
  description:
79
79
  email:
80
80
  - magnolia_fan@me.com
@@ -85,10 +85,12 @@ files:
85
85
  - .gitignore
86
86
  - .rspec
87
87
  - .travis.yml
88
+ - CHANGELOG.md
88
89
  - Contributors
89
90
  - Gemfile
90
91
  - LICENSE
91
92
  - README.md
93
+ - Rakefile
92
94
  - lib/mb.rb
93
95
  - lib/musicbrainz.rb
94
96
  - lib/musicbrainz/bindings/artist.rb
@@ -100,6 +102,7 @@ files:
100
102
  - lib/musicbrainz/bindings/release_group_search.rb
101
103
  - lib/musicbrainz/bindings/release_tracks.rb
102
104
  - lib/musicbrainz/bindings/track.rb
105
+ - lib/musicbrainz/bindings/track_search.rb
103
106
  - lib/musicbrainz/client.rb
104
107
  - lib/musicbrainz/client_modules/caching_proxy.rb
105
108
  - lib/musicbrainz/client_modules/failsafe_proxy.rb
@@ -116,10 +119,13 @@ files:
116
119
  - musicbrainz.gemspec
117
120
  - spec/bindings/release_group_search_spec.rb
118
121
  - spec/bindings/release_spec.rb
122
+ - spec/bindings/track_search_spec.rb
119
123
  - spec/client_modules/cache_spec.rb
120
124
  - spec/deprecated/cache_config_spec.rb
121
125
  - spec/deprecated/proxy_config_spec.rb
122
126
  - spec/fixtures/kasabian.xml
127
+ - spec/fixtures/release_group/entity.xml
128
+ - spec/fixtures/release_group/search.xml
123
129
  - spec/models/artist_spec.rb
124
130
  - spec/models/base_model_spec.rb
125
131
  - spec/models/release_group_spec.rb
@@ -134,30 +140,39 @@ rdoc_options: []
134
140
  require_paths:
135
141
  - lib
136
142
  required_ruby_version: !ruby/object:Gem::Requirement
143
+ none: false
137
144
  requirements:
138
145
  - - ! '>='
139
146
  - !ruby/object:Gem::Version
140
147
  version: '0'
141
- none: false
148
+ segments:
149
+ - 0
150
+ hash: 3461617473548305683
142
151
  required_rubygems_version: !ruby/object:Gem::Requirement
152
+ none: false
143
153
  requirements:
144
154
  - - ! '>='
145
155
  - !ruby/object:Gem::Version
146
156
  version: '0'
147
- none: false
157
+ segments:
158
+ - 0
159
+ hash: 3461617473548305683
148
160
  requirements: []
149
161
  rubyforge_project:
150
- rubygems_version: 1.8.23
162
+ rubygems_version: 1.8.24
151
163
  signing_key:
152
164
  specification_version: 3
153
165
  summary: MusicBrainz Web Service wrapper with ActiveRecord-style models
154
166
  test_files:
155
167
  - spec/bindings/release_group_search_spec.rb
156
168
  - spec/bindings/release_spec.rb
169
+ - spec/bindings/track_search_spec.rb
157
170
  - spec/client_modules/cache_spec.rb
158
171
  - spec/deprecated/cache_config_spec.rb
159
172
  - spec/deprecated/proxy_config_spec.rb
160
173
  - spec/fixtures/kasabian.xml
174
+ - spec/fixtures/release_group/entity.xml
175
+ - spec/fixtures/release_group/search.xml
161
176
  - spec/models/artist_spec.rb
162
177
  - spec/models/base_model_spec.rb
163
178
  - spec/models/release_group_spec.rb