rbrainz 0.1.1 → 0.2.0
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.
- data/CHANGES +31 -0
- data/LICENSE +1 -1
- data/README +3 -2
- data/Rakefile +40 -22
- data/TODO +6 -23
- data/doc/README.rdoc +50 -21
- data/examples/getartist.rb +6 -4
- data/examples/getuser.rb +30 -0
- data/examples/searchartists.rb +35 -0
- data/lib/rbrainz.rb +12 -7
- data/lib/rbrainz/core_ext.rb +8 -0
- data/lib/rbrainz/core_ext/mbid.rb +30 -0
- data/lib/rbrainz/core_ext/net_http_digest.rb +52 -0
- data/lib/rbrainz/core_ext/range.rb +28 -0
- data/lib/rbrainz/core_ext/range/equality.rb +232 -0
- data/lib/rbrainz/data/countrynames.rb +7 -5
- data/lib/rbrainz/data/languagenames.rb +8 -5
- data/lib/rbrainz/data/releasetypenames.rb +34 -0
- data/lib/rbrainz/data/scriptnames.rb +8 -5
- data/lib/rbrainz/model.rb +27 -35
- data/lib/rbrainz/model/alias.rb +31 -7
- data/lib/rbrainz/model/artist.rb +30 -41
- data/lib/rbrainz/model/collection.rb +102 -0
- data/lib/rbrainz/model/default_factory.rb +78 -0
- data/lib/rbrainz/model/disc.rb +45 -8
- data/lib/rbrainz/model/entity.rb +122 -53
- data/lib/rbrainz/model/incomplete_date.rb +31 -47
- data/lib/rbrainz/model/individual.rb +103 -0
- data/lib/rbrainz/model/label.rb +42 -33
- data/lib/rbrainz/model/mbid.rb +111 -40
- data/lib/rbrainz/model/relation.rb +78 -14
- data/lib/rbrainz/model/release.rb +119 -31
- data/lib/rbrainz/model/release_event.rb +38 -9
- data/lib/rbrainz/model/scored_collection.rb +99 -0
- data/lib/rbrainz/model/tag.rb +39 -0
- data/lib/rbrainz/model/track.rb +37 -13
- data/lib/rbrainz/model/user.rb +48 -0
- data/lib/rbrainz/utils.rb +9 -0
- data/lib/rbrainz/utils/data.rb +78 -0
- data/lib/rbrainz/utils/helper.rb +22 -0
- data/lib/rbrainz/version.rb +15 -0
- data/lib/rbrainz/webservice.rb +32 -6
- data/lib/rbrainz/webservice/filter.rb +124 -47
- data/lib/rbrainz/webservice/includes.rb +49 -10
- data/lib/rbrainz/webservice/mbxml.rb +228 -173
- data/lib/rbrainz/webservice/query.rb +312 -25
- data/lib/rbrainz/webservice/webservice.rb +164 -27
- data/test/lib/mock_webservice.rb +53 -0
- data/test/lib/test_entity.rb +27 -8
- data/test/lib/test_factory.rb +47 -0
- data/test/lib/testing_helper.rb +7 -5
- data/test/test-data/invalid/artist/tags_1.xml +6 -0
- data/test/test-data/valid/artist/Tchaikovsky-2.xml +12 -0
- data/test/test-data/valid/label/Atlantic_Records_2.xml +3 -0
- data/test/test-data/valid/label/Atlantic_Records_3.xml +11 -0
- data/test/test-data/valid/release/Highway_61_Revisited_2.xml +12 -0
- data/test/test-data/valid/track/Silent_All_These_Years_6.xml +8 -0
- data/test/test_alias.rb +13 -7
- data/test/test_artist.rb +26 -4
- data/test/test_artist_filter.rb +11 -6
- data/test/test_artist_includes.rb +11 -6
- data/test/test_collection.rb +66 -0
- data/test/test_default_factory.rb +75 -0
- data/test/test_disc.rb +9 -4
- data/test/test_incomplete_date.rb +21 -14
- data/test/test_label.rb +56 -18
- data/test/test_label_filter.rb +10 -5
- data/test/test_label_includes.rb +11 -6
- data/test/test_mbid.rb +34 -19
- data/test/test_mbxml.rb +242 -72
- data/test/test_query.rb +92 -7
- data/test/test_range_equality.rb +144 -0
- data/test/test_relation.rb +18 -7
- data/test/test_release.rb +15 -4
- data/test/test_release_event.rb +16 -4
- data/test/test_release_filter.rb +11 -5
- data/test/test_release_includes.rb +11 -6
- data/test/test_scored_collection.rb +86 -0
- data/test/test_tag.rb +39 -0
- data/test/test_track.rb +15 -4
- data/test/test_track_filter.rb +11 -5
- data/test/test_track_includes.rb +11 -6
- data/test/test_utils.rb +41 -0
- data/test/test_webservice.rb +16 -17
- metadata +93 -57
data/CHANGES
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
= Changelog
|
2
|
+
|
3
|
+
== 0.2.0 (2007-07-19)
|
4
|
+
* Querying of collections implemented
|
5
|
+
* Collection class to store search results (with support for search score and offset)
|
6
|
+
* User authentication
|
7
|
+
* Querying of user information
|
8
|
+
* Support POST in Webservice class to submit information.
|
9
|
+
* PUID submission.
|
10
|
+
* Made IncompleteDate behave like a range with corresponding equality operations
|
11
|
+
* Restructured MBID to use a ducktyping approach
|
12
|
+
* Introduced Individual as superclass for Artist and Label
|
13
|
+
* Added unique_name method for Artist and Label
|
14
|
+
* Label: Renamed founding_date and dissolving_date to begin_date
|
15
|
+
and end_date (to be more consistent with Artist)
|
16
|
+
* Support for label aliases
|
17
|
+
* Added label type "Unknown"
|
18
|
+
* Full text search (lucene search queries).
|
19
|
+
* Support entity tags as defined in the MB metadata scheme 1.2. Currently only
|
20
|
+
available on test.musicbrainz.org.
|
21
|
+
* New Model::DefaultFactory
|
22
|
+
|
23
|
+
== 0.1.1 (2007-05-29)
|
24
|
+
* Full support for relations
|
25
|
+
* Proper exception handling in Webservice class
|
26
|
+
* Minor corrections
|
27
|
+
|
28
|
+
== 0.1.0 (2007-05-23)
|
29
|
+
* Initial release
|
30
|
+
|
31
|
+
$Id: CHANGES 145 2007-07-19 13:11:44Z phw $
|
data/LICENSE
CHANGED
data/README
CHANGED
@@ -7,5 +7,6 @@ To generate the complete RBrainz documentation run
|
|
7
7
|
|
8
8
|
The documentation will be stored in doc/api.
|
9
9
|
|
10
|
-
Copyright (c) 2007
|
11
|
-
|
10
|
+
RBrainz is Copyright (c) 2007 Philipp Wolfer and Nigel Graham.
|
11
|
+
It is free softare distributed under a BSD style license. See
|
12
|
+
LICENSE for details.
|
data/Rakefile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# $Id: Rakefile
|
1
|
+
# $Id: Rakefile 145 2007-07-19 13:11:44Z phw $
|
2
2
|
# Copyright (c) 2007, Philipp Wolfer
|
3
3
|
# All rights reserved.
|
4
4
|
# See LICENSE for permissions.
|
@@ -9,48 +9,51 @@ require 'rubygems'
|
|
9
9
|
require 'rake/gempackagetask'
|
10
10
|
require 'rake/testtask'
|
11
11
|
require 'rake/rdoctask'
|
12
|
+
require './lib/rbrainz/version'
|
13
|
+
|
14
|
+
task :default do
|
15
|
+
puts "Please see 'rake --tasks' for an overview of the available tasks."
|
16
|
+
end
|
12
17
|
|
13
18
|
# Packaging tasks: -------------------------------------------------------
|
14
19
|
|
15
20
|
PKG_NAME = 'rbrainz'
|
16
|
-
PKG_VERSION =
|
21
|
+
PKG_VERSION = MusicBrainz::RBRAINZ_VERSION
|
17
22
|
PKG_FILES = FileList[
|
18
|
-
"Rakefile", "LICENSE", "README", "TODO",
|
23
|
+
"Rakefile", "LICENSE", "README", "TODO", "CHANGES",
|
19
24
|
"doc/README.rdoc",
|
20
|
-
"examples
|
25
|
+
"examples/**/*.rb",
|
21
26
|
"lib/**/*.rb",
|
22
27
|
"test/**/*.rb",
|
23
28
|
"test/test-data/**/*"
|
24
29
|
]
|
30
|
+
PKG_EXTRA_RDOC_FILES = ['doc/README.rdoc', 'LICENSE', 'TODO', 'CHANGES']
|
25
31
|
|
26
32
|
spec = Gem::Specification.new do |spec|
|
27
33
|
spec.platform = Gem::Platform::RUBY
|
28
|
-
spec.summary = 'Ruby library for the MusicBrainz XML
|
34
|
+
spec.summary = 'Ruby library for the MusicBrainz XML web service.'
|
29
35
|
spec.name = PKG_NAME
|
30
36
|
spec.version = PKG_VERSION
|
31
|
-
spec.requirements << '
|
32
|
-
spec.
|
33
|
-
spec.autorequire = 'rbrainz'
|
37
|
+
spec.requirements << 'Optional: mb-discid >= 0.1.2 (for calculating disc IDs)'
|
38
|
+
spec.autorequire = spec.name
|
34
39
|
spec.files = PKG_FILES
|
35
40
|
spec.description = <<EOF
|
36
41
|
RBrainz is a Ruby client library to access the MusicBrainz XML
|
37
|
-
|
42
|
+
web service. RBrainz supports the MusicBrainz XML Metadata Version 1.2,
|
43
|
+
including support for labels and extended release events.
|
38
44
|
|
39
45
|
RBrainz follows the design of python-musicbrainz2, the reference
|
40
46
|
implementation for a MusicBrainz client library. Developers used to
|
41
47
|
python-musicbrainz2 should already know most of RBrainz' interface.
|
42
48
|
However, RBrainz differs from python-musicbrainz2 wherever it makes
|
43
49
|
the library more Ruby like or easier to use.
|
44
|
-
|
45
|
-
RBrainz supports the MusicBrainz XML Metadata Version 1.1, including
|
46
|
-
support for labels and extended release events.
|
47
50
|
EOF
|
48
|
-
spec.author = 'Philipp Wolfer'
|
51
|
+
spec.author = ['Philipp Wolfer', 'Nigel Graham']
|
49
52
|
spec.email = 'phw@rubyforge.org'
|
50
53
|
spec.homepage = 'http://rbrainz.rubyforge.org'
|
51
54
|
spec.rubyforge_project = 'rbrainz'
|
52
55
|
spec.has_rdoc = true
|
53
|
-
spec.extra_rdoc_files =
|
56
|
+
spec.extra_rdoc_files = PKG_EXTRA_RDOC_FILES
|
54
57
|
end
|
55
58
|
|
56
59
|
Rake::GemPackageTask.new(spec) do |pkg|
|
@@ -58,6 +61,16 @@ Rake::GemPackageTask.new(spec) do |pkg|
|
|
58
61
|
pkg.need_tar_gz= true
|
59
62
|
end
|
60
63
|
|
64
|
+
# Build the RBrainz gem and install it"
|
65
|
+
task :install => [:test, :gem] do
|
66
|
+
sh %{gem install pkg/#{PKG_NAME}-#{PKG_VERSION}.gem}
|
67
|
+
end
|
68
|
+
|
69
|
+
# Uninstall RBrainz"
|
70
|
+
task :uninstall => [:gem] do
|
71
|
+
sh %{gem uninstall #{PKG_NAME}}
|
72
|
+
end
|
73
|
+
|
61
74
|
# Test tasks: ------------------------------------------------------------
|
62
75
|
|
63
76
|
desc "Run the unit and functional tests"
|
@@ -83,9 +96,9 @@ Rake::RDocTask.new do |rdoc|
|
|
83
96
|
rdoc.title = "RBrainz %s" % PKG_VERSION
|
84
97
|
rdoc.main = 'doc/README.rdoc'
|
85
98
|
rdoc.rdoc_dir = 'doc/api'
|
86
|
-
rdoc.rdoc_files.include('
|
87
|
-
|
88
|
-
|
99
|
+
rdoc.rdoc_files.include('lib/**/*.rb', PKG_EXTRA_RDOC_FILES)
|
100
|
+
rdoc.options << '--inline-source' << '--line-numbers' \
|
101
|
+
<< '--charset=UTF-8' #<< '--diagram'
|
89
102
|
end
|
90
103
|
|
91
104
|
# Other tasks: -----------------------------------------------------------
|
@@ -95,10 +108,10 @@ def egrep(pattern)
|
|
95
108
|
count = 0
|
96
109
|
open(fn) do |f|
|
97
110
|
while line = f.gets
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
111
|
+
count += 1
|
112
|
+
if line =~ pattern
|
113
|
+
puts "#{fn}:#{count}:#{line}"
|
114
|
+
end
|
102
115
|
end
|
103
116
|
end
|
104
117
|
end
|
@@ -106,5 +119,10 @@ end
|
|
106
119
|
|
107
120
|
desc "Look for TODO and FIXME tags in the code"
|
108
121
|
task :todo do
|
109
|
-
egrep
|
122
|
+
egrep(/#.*(FIXME|TODO)/)
|
123
|
+
end
|
124
|
+
|
125
|
+
desc "Print version information"
|
126
|
+
task :version do
|
127
|
+
puts "%s %s" % [PKG_NAME, PKG_VERSION]
|
110
128
|
end
|
data/TODO
CHANGED
@@ -1,29 +1,12 @@
|
|
1
|
-
=TODO
|
1
|
+
= TODO
|
2
2
|
|
3
|
-
==Short term tasks
|
4
|
-
* Query collections (0.2.0)
|
5
|
-
* Support for the score parameter in search result. Could be implemented
|
6
|
-
a little bit like in PythonMusicBrainz2, but more flexible. Maybe a result
|
7
|
-
object over which one can iterate to retrieve all results with the
|
8
|
-
corresponding score. (0.2.0)
|
9
|
-
result.each {|entity, score|
|
10
|
-
...
|
11
|
-
}
|
12
|
-
* Support for the offset parameter for queries on collections
|
13
|
-
to retrieve results below the 100 results limit. Could be easily integrated
|
14
|
-
into the result object (see previous point). (0.2.0)
|
15
|
-
* Make it easier to create MBID objects or allow usage of ID strings
|
16
|
-
where it makes life easier (>= 0.2.1).
|
17
|
-
* Add usefull constructor parameters to the models (>= 0.2.1).
|
3
|
+
== Short term tasks
|
18
4
|
* Improve API documentation.
|
19
5
|
|
20
|
-
==Longer term tasks
|
21
|
-
* Calculation of disc IDs (0.3.0)
|
22
|
-
* User authentication (0.4.0)
|
23
|
-
* Querying of user information (0.4.0)
|
24
|
-
* PUID submission
|
25
|
-
* Full text search (lucene search queries).
|
6
|
+
== Longer term tasks
|
26
7
|
* Implement a command line tool (+mbquery+) for querying the MusicBrainz
|
27
8
|
database which will serve as a usefull example for RBrainz.
|
28
9
|
* Support for common extensions (this could be implemented by adding
|
29
|
-
additional extension libraries which extend the existing classes).
|
10
|
+
additional extension libraries which extend the existing classes).
|
11
|
+
|
12
|
+
$Id: TODO 129 2007-07-12 17:52:17Z phw $
|
data/doc/README.rdoc
CHANGED
@@ -1,40 +1,45 @@
|
|
1
|
-
=RBrainz - Ruby MusicBrainz library
|
2
|
-
RBrainz is a Ruby client library to access the MusicBrainz XML
|
1
|
+
= RBrainz - Ruby MusicBrainz library
|
2
|
+
RBrainz is a Ruby client library to access the MusicBrainz XML web service,
|
3
3
|
which can be used to query the MusicBrainz database.
|
4
4
|
|
5
|
-
RBrainz is written in
|
5
|
+
RBrainz is written in Ruby and follows the design of
|
6
6
|
PythonMusicBrainz2[http://musicbrainz.org/doc/PythonMusicBrainz2],
|
7
7
|
the reference implementation for a MusicBrainz client library. Developers
|
8
8
|
used to PythonMusicBrainz2 should already know most of RBrainz' interface.
|
9
9
|
However, RBrainz differs from PythonMusicBrainz2 wherever it makes the
|
10
10
|
library more Ruby like or easier to use.
|
11
11
|
|
12
|
-
RBrainz supports the MusicBrainz XML Metadata Version 1.
|
12
|
+
RBrainz supports the MusicBrainz XML Metadata Version 1.2, including support
|
13
13
|
for labels and extended release events.
|
14
14
|
|
15
|
-
==Installation
|
16
|
-
===Installing with RubyGems
|
15
|
+
== Installation
|
16
|
+
=== Installing with RubyGems
|
17
17
|
The easiest way to install the latest release of RBrainz is using
|
18
18
|
RubyGems[http://rubygems.org] by executing the following command:
|
19
19
|
gem install rbrainz
|
20
20
|
|
21
|
-
===Manual installation
|
22
|
-
|
21
|
+
=== Manual installation
|
22
|
+
If you downloaded the RBRainz source package or checked out the latest version
|
23
|
+
from SVN you can install it with
|
24
|
+
rake install
|
25
|
+
|
26
|
+
You still need RubyGems for the installation to succeed.
|
23
27
|
|
24
|
-
==Basic usage
|
28
|
+
== Basic usage
|
25
29
|
The most important classes in this library are the model classes
|
26
30
|
MusicBrainz::Model::Artist, MusicBrainz::Model::Release,
|
27
31
|
MusicBrainz::Model::Track and MusicBrainz::Model::Label
|
28
32
|
together with MusicBrainz::Webservice::Query. The Query class
|
29
33
|
provides an easy to use interface to query the MusicBrainz webservice.
|
30
|
-
It will always return one of the model classes above or
|
31
|
-
|
34
|
+
It will always return one of the model classes above or a
|
35
|
+
MusicBrainz::Model::ScoredCollection of those classes. The example below
|
36
|
+
should make the usage clear:
|
32
37
|
|
33
38
|
require 'rbrainz'
|
34
39
|
include MusicBrainz
|
35
40
|
|
36
41
|
# Create an MBID object which represents a MusicBrainz artist ID.
|
37
|
-
mbid = Model::MBID.
|
42
|
+
mbid = Model::MBID.new('c0b2500e-0cef-4130-869d-732b23ed9df5', :artist)
|
38
43
|
|
39
44
|
# With the ArtistInclude object we can control what kind of information
|
40
45
|
# the MusicBrainz server will include in its answer.
|
@@ -48,21 +53,45 @@ array of those classes. The example below should make the usage clear:
|
|
48
53
|
:url_rels => true
|
49
54
|
)
|
50
55
|
|
51
|
-
# Query the webservice for the artist with the above ID
|
52
|
-
#
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
+
# Query the webservice for the artist with the above ID. The result
|
57
|
+
# will contain all the information specified in artist_includes.
|
58
|
+
query = Webservice::Query.new
|
59
|
+
artist = query.get_artist_by_id(mbid, artist_includes)
|
60
|
+
|
61
|
+
# Display the fetched artist data together with all unique release titles.
|
62
|
+
print <<EOF
|
63
|
+
ID : #{artist.id.uuid}
|
64
|
+
Name : #{artist.name}
|
65
|
+
Sort name : #{artist.sort_name}
|
66
|
+
Disambiguation: #{artist.disambiguation}
|
67
|
+
Type : #{artist.type}
|
68
|
+
Begin date : #{artist.begin_date}
|
69
|
+
End date : #{artist.end_date}
|
70
|
+
Aliases : #{artist.aliases.to_a.join('; ')}
|
71
|
+
Releases : #{artist.releases.map{|r| r.title}.uniq.join("\r\n ")}
|
72
|
+
EOF
|
56
73
|
|
57
|
-
==The MusicBrainz webservice
|
74
|
+
== The MusicBrainz webservice
|
58
75
|
For more information about the MusicBrainz webservice visit the
|
59
76
|
following resources:
|
60
77
|
- MusicBrainzXMLWebService[http://musicbrainz.org/doc/XMLWebService]
|
61
78
|
- MusicBrainzXMLMetaData[http://musicbrainz.org/doc/MusicBrainzXMLMetaData]
|
62
79
|
|
63
|
-
==
|
64
|
-
|
80
|
+
== Contact
|
81
|
+
For more information about RBrainz visit http://rbrainz.rubyforge.org.
|
82
|
+
|
83
|
+
If you have any questions or suggestions regarding RBrainz please write to
|
84
|
+
the rbrainz-user mailinglist[http://rubyforge.org/mail/?group_id=3677].
|
85
|
+
If you find bugs or if you have any feature requests please use the
|
86
|
+
RBrainz bug tracker[http://rubyforge.org/tracker/?group_id=3677].
|
87
|
+
|
88
|
+
== Authors
|
89
|
+
* Nigel Graham
|
90
|
+
* Philipp Wolfer
|
91
|
+
|
92
|
+
== License
|
93
|
+
RBrainz is Copyright (c) 2007 Philipp Wolfer and Nigel Graham.
|
65
94
|
It is free softare distributed under a BSD style license. See
|
66
95
|
LICENSE[link:files/LICENSE.html] for details.
|
67
96
|
|
68
|
-
$Id: README.rdoc
|
97
|
+
$Id: README.rdoc 145 2007-07-19 13:11:44Z phw $
|
data/examples/getartist.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
# Example script which queries the database for an
|
4
4
|
# artist and displays the artist's data.
|
5
5
|
#
|
6
|
-
# $Id: getartist.rb
|
6
|
+
# $Id: getartist.rb 145 2007-07-19 13:11:44Z phw $
|
7
7
|
|
8
8
|
# Just make sure we can run this example from the command
|
9
9
|
# line even if RBrainz is not yet installed properly.
|
@@ -19,7 +19,7 @@ include MusicBrainz
|
|
19
19
|
id = $*[0] ? $*[0] : '10bf95b6-30e3-44f1-817f-45762cdc0de0'
|
20
20
|
|
21
21
|
# Generate a new artist MBID object from the ID:
|
22
|
-
mbid = Model::MBID.
|
22
|
+
mbid = Model::MBID.parse(id, :artist)
|
23
23
|
|
24
24
|
# Define what information about the artist
|
25
25
|
# should be included in the result.
|
@@ -32,11 +32,13 @@ artist_includes = Webservice::ArtistIncludes.new(
|
|
32
32
|
)
|
33
33
|
|
34
34
|
# Create a new Query object which will provide
|
35
|
-
# us an interface to the MusicBrainz
|
35
|
+
# us an interface to the MusicBrainz web service.
|
36
36
|
query = Webservice::Query.new
|
37
37
|
|
38
38
|
# Now query the MusicBrainz database for the artist
|
39
39
|
# with the MBID defined above.
|
40
|
+
# We could as well use the ID string directly instead
|
41
|
+
# of the MBID object.
|
40
42
|
artist = query.get_artist_by_id(mbid, artist_includes)
|
41
43
|
|
42
44
|
# Display the fetched artist data together with all
|
@@ -49,6 +51,6 @@ Disambiguation: #{artist.disambiguation}
|
|
49
51
|
Type : #{artist.type}
|
50
52
|
Begin date : #{artist.begin_date}
|
51
53
|
End date : #{artist.end_date}
|
52
|
-
Aliases : #{artist.aliases.join('; ')}
|
54
|
+
Aliases : #{artist.aliases.to_a.join('; ')}
|
53
55
|
Releases : #{artist.releases.map{|r| r.title}.uniq.join("\r\n ")}
|
54
56
|
EOF
|
data/examples/getuser.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Example script which queries the database for a
|
4
|
+
# User
|
5
|
+
#
|
6
|
+
# $Id: getuser.rb 145 2007-07-19 13:11:44Z phw $
|
7
|
+
|
8
|
+
# Just make sure we can run this example from the command
|
9
|
+
# line even if RBrainz is not yet installed properly.
|
10
|
+
$: << 'lib/' << '../lib/'
|
11
|
+
|
12
|
+
# Load RBrainz and include the MusicBrainz namespace.
|
13
|
+
require 'rbrainz'
|
14
|
+
include MusicBrainz
|
15
|
+
|
16
|
+
print 'Username: ' unless ARGV[0]
|
17
|
+
username = ARGV[0] ? ARGV[0] : STDIN.gets.strip
|
18
|
+
print 'Password: ' unless ARGV[1]
|
19
|
+
password = ARGV[1] ? ARGV[1] : STDIN.gets.strip
|
20
|
+
|
21
|
+
ws = Webservice::Webservice.new(:username=>username, :password=>password)
|
22
|
+
|
23
|
+
# Create a new Query object which will provide
|
24
|
+
# us an interface to the MusicBrainz web service.
|
25
|
+
query = Webservice::Query.new(ws)
|
26
|
+
|
27
|
+
user = query.get_user_by_name(username)
|
28
|
+
puts "Name : " + user.name
|
29
|
+
puts "ShowNag: " + user.show_nag?.to_s
|
30
|
+
puts "Types : " + user.types.join(' ')
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Example script which searches the database for
|
4
|
+
# artists and displays the artist's data.
|
5
|
+
#
|
6
|
+
# $Id: searchartists.rb 145 2007-07-19 13:11:44Z phw $
|
7
|
+
|
8
|
+
# Just make sure we can run this example from the command
|
9
|
+
# line even if RBrainz is not yet installed properly.
|
10
|
+
$: << 'lib/' << '../lib/'
|
11
|
+
|
12
|
+
# Load RBrainz and include the MusicBrainz namespace.
|
13
|
+
require 'rbrainz'
|
14
|
+
include MusicBrainz
|
15
|
+
|
16
|
+
# Define the search parameters: Search for artists with the
|
17
|
+
# name "Paradise Lost" and return a maximum of 10 artists.
|
18
|
+
artist_filter = Webservice::ArtistFilter.new(
|
19
|
+
:name => 'Paradise Lost',
|
20
|
+
:limit => 10
|
21
|
+
)
|
22
|
+
|
23
|
+
# Create a new Query object which will provide
|
24
|
+
# us an interface to the MusicBrainz web service.
|
25
|
+
query = Webservice::Query.new
|
26
|
+
|
27
|
+
# Now query the MusicBrainz database for artists
|
28
|
+
# with the search parameters defined above.
|
29
|
+
artists = query.get_artists(artist_filter)
|
30
|
+
|
31
|
+
# Display the fetched artist's names and the score, which
|
32
|
+
# indicates how good the artist matches the search parameters.
|
33
|
+
artists.each do |entry|
|
34
|
+
print "%s (%i%%)\r\n" % [entry.entity.unique_name, entry.score]
|
35
|
+
end
|
data/lib/rbrainz.rb
CHANGED
@@ -1,11 +1,16 @@
|
|
1
|
-
# $Id: rbrainz.rb
|
2
|
-
#
|
3
|
-
# All rights reserved.
|
4
|
-
# See LICENSE for permissions.
|
5
|
-
|
1
|
+
# $Id: rbrainz.rb 145 2007-07-19 13:11:44Z phw $
|
2
|
+
#
|
6
3
|
# This is actually just a convenient shortcut that allows
|
7
4
|
# the user to use RBrainz by just using <tt>require 'rbrainz'</tt>.
|
8
|
-
# This will include the whole RBrainz
|
5
|
+
# This will include the whole RBrainz web service library, which
|
9
6
|
# should be ok most of the time.
|
7
|
+
#
|
8
|
+
# If you want only the models use <tt>require 'rbrainz/model'</tt>.
|
9
|
+
#
|
10
|
+
# Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
|
11
|
+
# Copyright:: Copyright (c) 2007, Nigel Graham, Philipp Wolfer
|
12
|
+
# License:: RBrainz is free software distributed under a BSD style license.
|
13
|
+
# See LICENSE[file:../LICENSE.html] for permissions.
|
10
14
|
|
11
|
-
require 'rbrainz/webservice'
|
15
|
+
require 'rbrainz/webservice'
|
16
|
+
require 'rbrainz/core_ext'
|