class MediaInfo

Public Instance Methods

help() click to toggle source
# File lib/cli_chef/apps/media_info.rb, line 25
def help
  run!(help: true).body
end
info(file, full = false) click to toggle source
# File lib/cli_chef/apps/media_info.rb, line 33
def info(file, full = false)
  run!(file: file, full: full).body.split("\n\n").hmap do |category|
    lines = category.split("\n")
    next if lines.empty?
    [
      lines.shift.strip.downcase.method_case,
      lines.hmap do |line|
        key, value = line.split(':', 2)
        key = key.downcase.method_case.to_sym
        [
          key,
          convert_value(key, value.strip)
        ]
      end
    ]
  end.keys_to_sym
end
version() click to toggle source
# File lib/cli_chef/apps/media_info.rb, line 29
def version
  run!(version: true).body.scan(/(?<= v)\d+\.\d+.*/).first
end

Protected Instance Methods

convert_value(key, value) click to toggle source
# File lib/cli_chef/apps/media_info.rb, line 53
def convert_value(key, value)
  case key
  when :file_size
    value.parse_file_size
  when :duration
    value.parse_duration
  when :width, :height
    value.to_i
  else
    value
  end
end