Sha256: eefffe3ddc0632c91a7a53b16ba5ea1b07e92033727ff875b6abfc0f69318d24
Contents?: true
Size: 1.65 KB
Versions: 3
Compression:
Stored size: 1.65 KB
Contents
require 'find' require 'digest' require 'pathname' require 'methadone' class Collector include Methadone::CLILogging def collect(path) result = Array.new @pathname = Pathname.new(path) Find.find(path) do |file| begin if File.directory?(file) info "skipping #{file}" next end if File.pipe?(file) info "skippking pipe #{file}" next end result << extract_file_infos(file) rescue => file_error error ("error with file '#{path}': #{file}") end end result end private def extract_file_infos(file_path) directory_name = create_relative_path(file_path) file_name = File.basename(file_path) begin entry = FileEntry.new(directory_name, file_name) entry.last_modified= File.mtime(file_path) entry.size = File.size(file_path) entry.checksum = Digest::SHA2.file(file_path).hexdigest collect_metadata(entry, file_path) rescue => file_error error ("error with file '#{file_path}': #{file_error}") end entry end def create_relative_path(file_path) pathname_for_file = Pathname.new(file_path) relative_path = pathname_for_file.relative_path_from(@pathname) relative_path.dirname.to_s end def collect_metadata(entry, file_path) extension = File.extname(file_path).downcase if ExifExtractor.handles? extension extractor = ExifExtractor.new entry.metadata = extractor.metadata_for_file(file_path) end if VideoExtractor.handles? extension extractor = VideoExtractor.new entry.metadata = extractor.metadata_for_file(file_path) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
filentory-cli-0.6.0 | lib/filentory/collector.rb |
filentory-cli-0.5.0 | lib/filentory/collector.rb |
filentory-cli-0.4.0 | lib/filentory/collector.rb |