Class: DiscId::Disc
- Inherits:
-
Object
- Object
- DiscId::Disc
- Defined in:
- lib/discid/disc.rb
Overview
This class holds information about a disc (TOC, MCN, ISRCs).
Use #read or #put to initialize an instance of Disc.
Instance Attribute Summary collapse
-
#device ⇒ Object
readonly
The device from which this disc object was read.
Instance Method Summary collapse
-
#first_track_number ⇒ Integer
The number of the first track on this disc.
-
#freedb_id ⇒ String
The FreeDB DiscID.
-
#id ⇒ String
The MusicBrainz DiscID.
-
#last_track_number ⇒ Integer
The number of the last track on this disc.
-
#mcn ⇒ String
The media catalogue number on the disc, if present.
-
#seconds ⇒ Integer
The length of the disc in seconds.
-
#sectors ⇒ Integer
The length of the disc in sectors.
-
#submission_url ⇒ String
An URL for submitting the DiscID to MusicBrainz.
-
#to_s ⇒ String
DiscID to String conversion.
-
#toc_string ⇒ String
Return a string representing CD Table Of Contents (TOC).
-
#tracks {|Track| ... } ⇒ Array<Track>
Returns an array of Track objects.
Instance Attribute Details
#device ⇒ Object (readonly)
The device from which this disc object was read.
28 29 30 |
# File 'lib/discid/disc.rb', line 28 def device @device end |
Instance Method Details
#first_track_number ⇒ Integer
The number of the first track on this disc.
93 94 95 |
# File 'lib/discid/disc.rb', line 93 def first_track_number Lib.get_first_track_num @handle if @read end |
#freedb_id ⇒ String
The FreeDB DiscID.
86 87 88 |
# File 'lib/discid/disc.rb', line 86 def freedb_id Lib.get_freedb_id @handle if @read end |
#id ⇒ String
The MusicBrainz DiscID.
79 80 81 |
# File 'lib/discid/disc.rb', line 79 def id Lib.get_id @handle if @read end |
#last_track_number ⇒ Integer
The number of the last track on this disc.
100 101 102 |
# File 'lib/discid/disc.rb', line 100 def last_track_number Lib.get_last_track_num @handle if @read end |
#mcn ⇒ String
libdiscid >= 0.3.0 required. Older versions will always return nil. Not available on all platforms, see https://musicbrainz.org/doc/libdiscid#Feature_Matrix.
The media catalogue number on the disc, if present.
Requires libdiscid >= 0.5. If not supported this method will always
return nil.
128 129 130 |
# File 'lib/discid/disc.rb', line 128 def mcn Lib.get_mcn @handle if @read end |
#seconds ⇒ Integer
The length of the disc in seconds.
114 115 116 |
# File 'lib/discid/disc.rb', line 114 def seconds DiscId.sectors_to_seconds(sectors) if @read end |
#sectors ⇒ Integer
The length of the disc in sectors.
107 108 109 |
# File 'lib/discid/disc.rb', line 107 def sectors Lib.get_sectors @handle if @read end |
#submission_url ⇒ String
An URL for submitting the DiscID to MusicBrainz.
The URL leads to an interactive disc submission wizard that guides the user through the process of associating this disc's DiscID with a release in the MusicBrainz database.
172 173 174 |
# File 'lib/discid/disc.rb', line 172 def submission_url Lib.get_submission_url @handle if @read end |
#to_s ⇒ String
DiscID to String conversion. Same as calling the method #id but guaranteed to return a string.
181 182 183 |
# File 'lib/discid/disc.rb', line 181 def to_s id.to_s end |
#toc_string ⇒ String
Return a string representing CD Table Of Contents (TOC).
The TOC suitable as a value of the toc parameter when accessing the MusicBrainz Web Service. This enables fuzzy searching when the actual DiscID is not found.
Note that this is the unencoded value, which still contains spaces.
For libdiscid >= 0.6 the native implementation will be used. For older versions falls back to extract the TOC from #submission_url.
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/discid/disc.rb', line 148 def toc_string return nil unless @read result = Lib.get_toc_string @handle unless result # probably an old version of libdiscid (< 0.6.0) # gather toc string from submission_url match = /toc=([0-9+]+)/.match submission_url raise "can't get toc string from submission url" unless match result = match[1].tr('+', ' ') end result end |
#tracks {|Track| ... } ⇒ Array<Track>
Returns an array of Track objects. Each Track object contains detailed information about the track.
Returns always nil if no ID was yet read. The block won't be
called in this case.
195 196 197 198 199 200 201 202 203 204 |
# File 'lib/discid/disc.rb', line 195 def tracks(&block) return unless @read read_tracks if @tracks.nil? return @tracks unless block @tracks.each(&block) nil end |