Class: MusicBox::Extractor
- Inherits:
-
Object
- Object
- MusicBox::Extractor
- Defined in:
- lib/musicbox/extractor.rb
Instance Method Summary collapse
- #extract_dir(source_dir) ⇒ Object
-
#initialize(catalog:) ⇒ Extractor
constructor
A new instance of Extractor.
- #xld_extract(cue_file:, bin_file:, dest_dir:) ⇒ Object
Constructor Details
#initialize(catalog:) ⇒ Extractor
Returns a new instance of Extractor.
5 6 7 |
# File 'lib/musicbox/extractor.rb', line 5 def initialize(catalog:) @catalog = catalog end |
Instance Method Details
#extract_dir(source_dir) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/musicbox/extractor.rb', line 9 def extract_dir(source_dir) puts "Extracting #{source_dir}" files = @catalog.categorize_files(source_dir) cue_file = files[:cue]&.shift or raise Error, "No cue file found" bin_file = files[:audio]&.shift or raise Error, "No bin file found" dest_dir = @catalog.import_dir / source_dir.basename raise Error, "Extraction directory already exists: #{dest_dir}" if dest_dir.exist? dest_dir.mkpath xld_extract(cue_file: cue_file, bin_file: bin_file, dest_dir: dest_dir) files.values.flatten.each { |p| p.cp_r(dest_dir) } @catalog.extract_done_dir.mkpath unless @catalog.extract_done_dir.exist? source_dir.rename(@catalog.extract_done_dir / source_dir.basename) end |
#xld_extract(cue_file:, bin_file:, dest_dir:) ⇒ Object
23 24 25 26 27 28 29 30 31 |
# File 'lib/musicbox/extractor.rb', line 23 def xld_extract(cue_file:, bin_file:, dest_dir:) dest_dir.chdir do run_command('xld', '-c', cue_file, '-f', 'alac', '--filename-format', '%D-%n - %t', bin_file) end end |