1
0
mirror of https://github.com/danbee/rippr synced 2025-03-04 08:39:08 +00:00

Reads from CD and lists matching releases to choose from.

This commit is contained in:
Dan Barber 2014-01-15 08:28:10 +00:00
parent a29671577a
commit f21d9dc8f3
2 changed files with 33 additions and 14 deletions

View File

@ -3,19 +3,30 @@
require 'bundler' require 'bundler'
Bundler.setup Bundler.setup
require 'ostruct'
require 'thor' require 'thor'
require 'musicbrainz'
require 'rippr' require 'rippr'
class Cli < Thor class Cli < Thor
desc "rip", "Rip the CD currently in the drive." desc "rip", "Rip the CD currently in the drive."
def rip def rip
disc = 'pmzhT6ZlFiwSRCdVwV0eqire5_Y-' begin
puts "Getting metadata from MusicBrainz..." disc = DiscId.read('/dev/rdisk2')
metadata = Rippr::MetaData.new(disc) rescue DiscId::DiscError
print metadata.releases puts "Disc not present."
exit
end
puts "Searching MusicBrainz..."
metadata = Rippr::MetaData.new(disc.id)
release = metadata.choose_release
if release.nil?
puts "No release selected."
exit
end
puts release.id
end end
end end

View File

@ -1,5 +1,8 @@
require "musicbrainz_discid" require 'ostruct'
require "rippr/version" require 'discid'
require 'musicbrainz'
require 'musicbrainz_discid'
require 'rippr/version'
module Rippr module Rippr
class MetaData class MetaData
@ -14,14 +17,19 @@ module Rippr
@discid = discid @discid = discid
end end
def choose_release
return releases[0] if releases.count == 1
puts "There are multiple matches, please choose:"
releases.to_enum.with_index(1) do |release, index|
puts "#{index}: #{release.title} (#{release.country})"
end
print "Choose a release: "
index = STDIN.gets.chomp.to_i
releases[index - 1] unless index.zero?
end
def releases def releases
@releases ||= MusicBrainz::Release.find_by_discid(@discid) @releases ||= MusicBrainz::Release.find_by_discid(@discid)
end end
end end
end end
class DiscId
def self.read(dev)
OpenStruct.new(id: 'pmzhT6ZlFiwSRCdVwV0eqire5_Y-') # Stubbed for initial testing
end
end