Sha256: 3cdb75d4c2c9f7326919a755674f87ead132920d2651f87fea72132d8b31588c
Contents?: true
Size: 1.73 KB
Versions: 2
Compression:
Stored size: 1.73 KB
Contents
# frozen_string_literal: true require_relative 'tag/version' require_relative 'tag/file' require_relative 'tag/fileset' require_relative 'tag/flac' require_relative 'tag/mp3' require 'unitf/logging' module UnitF module Tag class Error < StandardError; end class MissingCover < Error; end def self.logger unless @logger @logger = UnitF::Logging::Logger.new @logger.add_writer(UnitF::Logging::ConsoleWriter.new) end @logger end def self.update(file_path) UnitF::Tag::File.new(file_path).open do |file| yield file file.save || (raise UnitF::Tag::Error, "Failed to save file #{file_path}") end end def self.valid_file?(file_path) ::File.file?(file_path) && file_path.encode.match(/\.(flac|mp3)$/i) rescue ArgumentError => e logger.error("Error processing #{file_path} - #{e.message}") false end def self.process_target(target) if ::File.directory?(target) find_files(target) elsif valid_file?(target) [UnitF::Tag::File.new(target)] else [] end end def self.find_files(root_path) files = [] Find.find(root_path) do |file_path| logger.debug("Considering #{file_path}") next unless valid_file?(file_path) files << UnitF::Tag::File.new(file_path) end files end def self.list(files, format: :json) buff = [] files.each do |file| file.open do |o| case format when :json buff << o.info when :line puts o.format_line else o.print end end end puts JSON.pretty_generate(buff) if format == :json end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
unitf-tag-0.1.16 | lib/unitf/tag.rb |
unitf-tag-0.1.10 | lib/unitf/tag.rb |