Class: Flacky::CLI

Inherits:
Thor
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/flacky/cli.rb

Instance Method Summary collapse

Instance Method Details

#generate_json(root_dir = ENV['PWD']) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/flacky/cli.rb', line 20

def generate_json(root_dir = ENV['PWD'])
  start_dir = File.join(File.expand_path(root_dir), '**/*.flac')
  Dir.glob(start_dir).sort.map { |f| File.dirname(f) }.uniq.each do |dir|
    mdf = File.join(dir, "metadata.json")
    say("Processing <#{dir}>", :cyan)
    data = Flacky::MetadataGenerator.new(mdf).combined_data
    IO.write(mdf, JSON.pretty_generate(data))
  end
end

#import_json(*args) ⇒ Object



31
32
33
# File 'lib/flacky/cli.rb', line 31

def import_json(*args)
  args.each { |glob| (glob) }
end

#missing_urls(root_dir = ENV['PWD']) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/flacky/cli.rb', line 37

def missing_urls(root_dir = ENV['PWD'])
  start_dir = File.join(File.expand_path(root_dir), '**/metadata.json')
  files = []

  Dir.glob(start_dir).sort.each do |mdf|
    attr = JSON.parse(IO.read(mdf))["allmusic_url"]
    files << mdf if attr.nil? || attr.empty?
  end

  if options[:print0]
    print files.join("\x0").concat("\x0")
  else
    puts files.join("\n") unless files.empty?
  end
end

#strip_pad(*args) ⇒ Object



54
55
56
57
58
59
60
61
# File 'lib/flacky/cli.rb', line 54

def strip_pad(*args)
  args.each do |glob|
    Dir.glob(glob).sort.each do |file|
      say("Processing <#{file}>", :cyan)
      Flacky::FlacTrackZeroPadStripper.new(file).strip!
    end
  end
end

#to_mp3(*args) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/flacky/cli.rb', line 69

def to_mp3(*args)
  %w{flac lame}.each do |cmd|
    abort "Command #{cmd} must be on your PATH" unless %x{which #{cmd}}
  end

  mp3izer = Flacky::Mp3Convertor.new(
    :lame_opts  => options[:'lame-opts'],
    :dest_root  => options[:destination]
  )

  args.each { |glob| convert_files(glob, mp3izer) }
end

#versionObject



83
84
85
# File 'lib/flacky/cli.rb', line 83

def version
  say "Flacky version #{Flacky::VERSION}"
end