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'
Bundler.setup
require 'ostruct'
require 'thor'
require 'musicbrainz'
require 'rippr'
class Cli < Thor
desc "rip", "Rip the CD currently in the drive."
def rip
disc = 'pmzhT6ZlFiwSRCdVwV0eqire5_Y-'
puts "Getting metadata from MusicBrainz..."
metadata = Rippr::MetaData.new(disc)
print metadata.releases
begin
disc = DiscId.read('/dev/rdisk2')
rescue DiscId::DiscError
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

View File

@ -1,5 +1,8 @@
require "musicbrainz_discid"
require "rippr/version"
require 'ostruct'
require 'discid'
require 'musicbrainz'
require 'musicbrainz_discid'
require 'rippr/version'
module Rippr
class MetaData
@ -14,14 +17,19 @@ module Rippr
@discid = discid
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
@releases ||= MusicBrainz::Release.find_by_discid(@discid)
end
end
end
class DiscId
def self.read(dev)
OpenStruct.new(id: 'pmzhT6ZlFiwSRCdVwV0eqire5_Y-') # Stubbed for initial testing
end
end