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:
parent
a29671577a
commit
f21d9dc8f3
23
bin/rippr
23
bin/rippr
@ -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
|
||||||
|
|
||||||
|
|||||||
24
lib/rippr.rb
24
lib/rippr.rb
@ -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
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user