mb-discid 0.1.5 → 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 CHANGED
@@ -1,4 +1,6 @@
1
1
  = Changelog
2
+ == 0.2.0 (2013-02-17)
3
+ * Support for MCN and ISRC (requires libdiscid >= 0.3)
2
4
 
3
5
  == 0.1.5 (2011-07-02)
4
6
  * Added binding for get_webservice_url()
@@ -31,4 +33,4 @@
31
33
  == 0.1.0 (2007-06-02)
32
34
  * Initial release
33
35
 
34
- $Id: CHANGES 333 2011-07-02 13:41:07Z phw $
36
+ $Id$
data/README CHANGED
@@ -7,7 +7,7 @@ to find the release entry for your CD in the MusicBrainz database.
7
7
 
8
8
  == Requirements
9
9
  * Ruby >= 1.8.6
10
- * libdiscid >= 0.2.2
10
+ * libdiscid >= 0.2.2 (>= 0.3.0 for MCN and ISRC support)
11
11
 
12
12
  == Installation
13
13
  Before installing rdiscid make sure you have libdiscid installed. See
@@ -47,8 +47,8 @@ If you find bugs or if you have any feature requests please use the
47
47
  RBrainz bug tracker[http://rubyforge.org/tracker/?group_id=3677].
48
48
 
49
49
  == License
50
- MB-DiscID is Copyright (c) 2007 Philipp Wolfer.
50
+ MB-DiscID is Copyright (c) 2007-2013 Philipp Wolfer.
51
51
  It is free softare distributed under a BSD style license. See
52
52
  LICENSE[link:files/LICENSE.html] for details.
53
53
 
54
- $Id: README 315 2010-06-14 21:30:06Z phw $
54
+ $Id$
data/Rakefile CHANGED
@@ -1,14 +1,14 @@
1
- # $Id: Rakefile 330 2011-07-02 13:12:30Z phw $
2
- # Copyright (c) 2007, Philipp Wolfer
1
+ # $Id$
2
+ # Copyright (c) 2007-2013, Philipp Wolfer
3
3
  # All rights reserved.
4
4
  # See LICENSE for permissions.
5
5
 
6
- # Rakefile for RDiscID
6
+ # Rakefile for MBDiscID
7
7
 
8
8
  require 'rubygems'
9
- require 'rake/gempackagetask'
9
+ require 'rubygems/package_task'
10
10
  require 'rake/testtask'
11
- require 'rake/rdoctask'
11
+ require 'rdoc/task'
12
12
 
13
13
  task :default do
14
14
  puts "Please see 'rake --tasks' for an overview of the available tasks."
@@ -17,7 +17,7 @@ end
17
17
  # Packaging tasks: -------------------------------------------------------
18
18
 
19
19
  PKG_NAME = 'mb-discid'
20
- PKG_VERSION = '0.1.5'
20
+ PKG_VERSION = '0.2.0'
21
21
  PKG_SUMMARY = 'Ruby bindings for libdiscid.'
22
22
  PKG_AUTHOR = 'Philipp Wolfer'
23
23
  PKG_EMAIL = 'phw@rubyforge.org'
@@ -50,9 +50,8 @@ spec = Gem::Specification.new do |spec|
50
50
  spec.extensions << 'ext/extconf.rb'
51
51
  spec.required_ruby_version = ">= 1.8.6"
52
52
  end
53
- spec.requirements << 'libdiscid >= 0.2.2 (http://musicbrainz.org/doc/libdiscid)'
53
+ spec.requirements << 'libdiscid >= 0.3.0 (http://musicbrainz.org/doc/libdiscid)'
54
54
  spec.require_paths = ['lib', 'ext']
55
- spec.autorequire = spec.name
56
55
  spec.description = PKG_DESCRIPTION
57
56
  spec.author = PKG_AUTHOR
58
57
  spec.email = PKG_EMAIL
@@ -62,7 +61,7 @@ spec = Gem::Specification.new do |spec|
62
61
  spec.extra_rdoc_files = PKG_EXTRA_RDOC_FILES
63
62
  end
64
63
 
65
- Rake::GemPackageTask.new(spec) do |pkg|
64
+ Gem::PackageTask.new(spec) do |pkg|
66
65
  pkg.need_zip = true
67
66
  pkg.need_tar_gz= true
68
67
  end
@@ -79,8 +78,7 @@ task :build do
79
78
 
80
79
  cd 'ext' do
81
80
  unless system("ruby extconf.rb #{extconf_args}")
82
- STDERR.puts "ERROR: could not configure extension!\n" +
83
- "\n#{INFO_NOTE}\n"
81
+ STDERR.puts "ERROR: could not configure extension!"
84
82
  break
85
83
  end
86
84
 
@@ -9,7 +9,7 @@
9
9
  # Example:
10
10
  # ./discid.rb /dev/dvd
11
11
  #
12
- # $Id: discid.rb 312 2010-06-14 21:04:14Z phw $
12
+ # $Id$
13
13
 
14
14
  # Just make sure we can run this example from the command
15
15
  # line even if RBrainz is not yet installed properly.
@@ -43,6 +43,7 @@ First track : #{disc.first_track_num}
43
43
  Last track : #{disc.last_track_num}
44
44
  Total length: #{disc.seconds} seconds
45
45
  Sectors : #{disc.sectors}
46
+ MCN : #{disc.media_catalog_number}
46
47
  EOF
47
48
 
48
49
  # Print information about individual tracks:
@@ -54,6 +55,7 @@ disc.track_details do |track_info|
54
55
  [track_info.start_time / 60, track_info.start_time % 60, track_info.start_sector]
55
56
  puts " End : %02d:%02d (sector %i)" %
56
57
  [track_info.end_time / 60, track_info.end_time % 60, track_info.end_sector]
58
+ puts " ISRC : %s" % track_info.isrc
57
59
  end
58
60
 
59
61
  # Print a submission URL that can be used to submit
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env ruby
2
- # $Id: extconf.rb 329 2011-07-02 12:49:58Z phw $
2
+ # $Id$
3
3
 
4
4
  require 'mkmf'
5
5
 
6
- LIBDIR = Config::CONFIG['libdir']
7
- INCLUDEDIR = Config::CONFIG['includedir']
6
+ LIBDIR = RbConfig::CONFIG['libdir']
7
+ INCLUDEDIR = RbConfig::CONFIG['includedir']
8
8
 
9
9
  $CFLAGS << " #{ENV["CFLAGS"]}"
10
10
  $LIBS << " #{ENV["LIBS"]}"
11
11
 
12
12
  # totally thieved from Nokogiri's extconf.rb
13
- if Config::CONFIG['target_os'] =~ /mswin32/
13
+ if RbConfig::CONFIG['target_os'] =~ /mswin32/
14
14
  # There's no default include/lib dir on Windows. Let's just add the Ruby ones
15
15
  # and resort on the search path specified by INCLUDE and LIB environment
16
16
  # variables
@@ -51,6 +51,9 @@ dir_config('discid', HEADER_DIRS, LIB_DIRS)
51
51
 
52
52
  if have_library('discid', 'discid_new') or
53
53
  have_library('discid.dll', 'discid_new')
54
+ headers = ['discid/discid.h']
55
+ have_func('discid_get_mcn', headers)
56
+ have_func('discid_get_track_isrc', headers)
54
57
  # Remove -MD from compiler flags on Windows.
55
58
  $CFLAGS.sub!('-MD', '') if RUBY_PLATFORM.include? 'win32'
56
59
  create_makefile('MB_DiscID')
@@ -1,11 +1,11 @@
1
1
  /**
2
- * $Id: mb_discid.c 312 2010-06-14 21:04:14Z phw $
2
+ * $Id$
3
3
  *
4
4
  * Ruby bindings for libdiscid. See http://musicbrainz.org/doc/libdiscid
5
5
  * for more information on libdiscid and MusicBrainz.
6
6
  *
7
7
  * Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
8
- * Copyright:: Copyright (c) 2007, Philipp Wolfer
8
+ * Copyright:: Copyright (c) 2007-2013, Philipp Wolfer
9
9
  * License:: MB-DiscID is free software distributed under a BSD style license.
10
10
  * See LICENSE for permissions.
11
11
  */
@@ -110,6 +110,33 @@ static VALUE mb_discid_freedb_id(VALUE self)
110
110
  }
111
111
  }
112
112
 
113
+ /**
114
+ * call-seq:
115
+ * mcn() -> string or nil
116
+ *
117
+ * Return the media catalogue number of the release, if present.
118
+ *
119
+ * Requires libdiscid >= 0.3. If not supported this method will always return +nil+.
120
+ *
121
+ * Returns +nil+ if no ID was yet read.
122
+ */
123
+ static VALUE mb_discid_mcn(VALUE self)
124
+ {
125
+ #ifdef HAVE_DISCID_GET_MCN
126
+ if (rb_iv_get(self, "@read") == Qfalse)
127
+ return Qnil;
128
+ else
129
+ {
130
+ DiscId *disc;
131
+ Data_Get_Struct(self, DiscId, disc);
132
+
133
+ return rb_str_new2(discid_get_mcn(disc));
134
+ }
135
+ #else
136
+ return Qnil;
137
+ #endif
138
+ }
139
+
113
140
  /**
114
141
  * call-seq:
115
142
  * first_track_num() -> int or nil
@@ -225,6 +252,34 @@ static VALUE mb_discid_tracks(VALUE self)
225
252
  }
226
253
  }
227
254
 
255
+ /**
256
+ * call-seq:
257
+ * isrc(track)
258
+ *
259
+ * Returns the International Standard Recording Code (ISRC) for the track.
260
+ *
261
+ * Requires libdiscid >= 0.3. If not supported this method will always return +nil+.
262
+ *
263
+ * Returns always +nil+ if no ID was yet read.
264
+ */
265
+ static VALUE mb_discid_isrc(VALUE self, VALUE track)
266
+ {
267
+ #ifdef HAVE_DISCID_GET_TRACK_ISRC
268
+ if (rb_iv_get(self, "@read") == Qfalse)
269
+ return Qnil;
270
+ else
271
+ {
272
+ DiscId *disc; /* Pointer to the disc struct */
273
+ int ctrack = NUM2INT(track); /* Track number to process. */
274
+
275
+ Data_Get_Struct(self, DiscId, disc);
276
+ return rb_str_new2(discid_get_track_isrc(disc, ctrack));
277
+ }
278
+ #else
279
+ return Qnil;
280
+ #endif
281
+ }
282
+
228
283
  /**
229
284
  * call-seq:
230
285
  * read(device=nil)
@@ -263,12 +318,11 @@ static VALUE mb_discid_read(int argc, VALUE *argv, VALUE self)
263
318
 
264
319
  /* Read the discid */
265
320
  if (discid_read(disc, cdevice) == 0)
266
- rb_raise(rb_eException, discid_get_error_msg(disc));
321
+ rb_raise(rb_eException, "%s", discid_get_error_msg(disc));
267
322
  else /* Remember that we already read the ID. */
268
323
  rb_iv_set(self, "@read", Qtrue);
269
324
 
270
325
  return Qnil;
271
-
272
326
  }
273
327
 
274
328
  /**
@@ -314,7 +368,7 @@ static VALUE mb_discid_put(VALUE self, VALUE first_track, VALUE sectors,
314
368
 
315
369
  /* Read the discid */
316
370
  if (discid_put(disc, cfirst, clast, coffsets) == 0)
317
- rb_raise(rb_eException, discid_get_error_msg(disc));
371
+ rb_raise(rb_eException, "%s", discid_get_error_msg(disc));
318
372
  else /* Remember that we already read the ID. */
319
373
  rb_iv_set(self, "@read", Qtrue);
320
374
 
@@ -378,8 +432,11 @@ void Init_MB_DiscID()
378
432
  rb_define_method(cDiscID, "submission_url", mb_discid_submission_url, 0);
379
433
  rb_define_method(cDiscID, "webservice_url", mb_discid_webservice_url, 0);
380
434
  rb_define_method(cDiscID, "freedb_id", mb_discid_freedb_id, 0);
435
+ rb_define_method(cDiscID, "media_catalog_number", mb_discid_mcn, 0);
381
436
  rb_define_method(cDiscID, "first_track_num", mb_discid_first_track_num, 0);
382
437
  rb_define_method(cDiscID, "last_track_num", mb_discid_last_track_num, 0);
383
438
  rb_define_method(cDiscID, "sectors", mb_discid_sectors, 0);
384
439
  rb_define_method(cDiscID, "tracks", mb_discid_tracks, 0);
440
+
441
+ rb_define_method(cDiscID, "isrc", mb_discid_isrc, 1);
385
442
  }
@@ -1,4 +1,4 @@
1
- # $Id: mb-discid.rb 201 2008-02-13 14:59:48Z phw $
1
+ # $Id$
2
2
  #
3
3
  # Just a helper file to allow loading the MB-DiscID library with
4
4
  # <tt>require 'mb-discid'</tt>, which is the only recommended way
@@ -122,11 +122,15 @@ module MusicBrainz
122
122
  # Start position of the track on the disc in sectors.
123
123
  attr_reader :start_sector
124
124
 
125
+ # ISRC number of the trac
126
+ attr_reader :isrc
127
+
125
128
  # Returns a new TrackInfo.
126
- def initialize(number, offset, length)
129
+ def initialize(number, offset, length, isrc)
127
130
  @number = number
128
131
  @start_sector = offset
129
132
  @sectors = length
133
+ @isrc = isrc
130
134
  end
131
135
 
132
136
  # End position of the track on the disc in sectors.
@@ -171,6 +175,7 @@ module MusicBrainz
171
175
  :seconds => seconds,
172
176
  :start_time => start_time,
173
177
  :end_time => end_time,
178
+ :isrc => isrc,
174
179
  }
175
180
  end
176
181
 
@@ -204,7 +209,8 @@ module MusicBrainz
204
209
 
205
210
  self.tracks do |offset, length|
206
211
  track_number += 1
207
- track_info = TrackInfo.new(track_number, offset, length)
212
+ isrc = self.isrc(track_number)
213
+ track_info = TrackInfo.new(track_number, offset, length, isrc)
208
214
 
209
215
  if block_given?
210
216
  yield track_info
@@ -1,4 +1,4 @@
1
- # $Id: test_discid.rb 236 2009-05-07 05:58:07Z phw $
1
+ # $Id$
2
2
  #
3
3
  # Author:: Philipp Wolfer (mailto:phw@rubyforge.org)
4
4
  # Copyright:: Copyright (c) 2007, Philipp Wolfer
metadata CHANGED
@@ -1,35 +1,27 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mb-discid
3
- version: !ruby/object:Gem::Version
4
- hash: 17
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 5
10
- version: 0.1.5
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Philipp Wolfer
14
- autorequire: mb-discid
9
+ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-07-02 00:00:00 +02:00
19
- default_executable:
12
+ date: 2013-02-17 00:00:00.000000000 Z
20
13
  dependencies: []
21
-
22
- description: " Ruby bindings for libdiscid. See http://musicbrainz.org/doc/libdiscid\n for more information on libdiscid and MusicBrainz.\n"
14
+ description: ! " Ruby bindings for libdiscid. See http://musicbrainz.org/doc/libdiscid\n
15
+ \ for more information on libdiscid and MusicBrainz.\n"
23
16
  email: phw@rubyforge.org
24
17
  executables: []
25
-
26
- extensions:
18
+ extensions:
27
19
  - ext/extconf.rb
28
- extra_rdoc_files:
20
+ extra_rdoc_files:
29
21
  - README
30
22
  - LICENSE
31
23
  - CHANGES
32
- files:
24
+ files:
33
25
  - Rakefile
34
26
  - LICENSE
35
27
  - README
@@ -39,42 +31,30 @@ files:
39
31
  - ext/extconf.rb
40
32
  - lib/mb-discid.rb
41
33
  - test/test_discid.rb
42
- has_rdoc: true
43
34
  homepage: http://rbrainz.rubyforge.org
44
35
  licenses: []
45
-
46
36
  post_install_message:
47
37
  rdoc_options: []
48
-
49
- require_paths:
38
+ require_paths:
50
39
  - lib
51
40
  - ext
52
- required_ruby_version: !ruby/object:Gem::Requirement
41
+ required_ruby_version: !ruby/object:Gem::Requirement
53
42
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 59
58
- segments:
59
- - 1
60
- - 8
61
- - 6
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
62
46
  version: 1.8.6
63
- required_rubygems_version: !ruby/object:Gem::Requirement
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
48
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- hash: 3
69
- segments:
70
- - 0
71
- version: "0"
72
- requirements:
73
- - libdiscid >= 0.2.2 (http://musicbrainz.org/doc/libdiscid)
49
+ requirements:
50
+ - - ! '>='
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ requirements:
54
+ - libdiscid >= 0.3.0 (http://musicbrainz.org/doc/libdiscid)
74
55
  rubyforge_project: rbrainz
75
- rubygems_version: 1.3.7
56
+ rubygems_version: 1.8.23
76
57
  signing_key:
77
58
  specification_version: 3
78
59
  summary: Ruby bindings for libdiscid.
79
60
  test_files: []
80
-