Sha256: bdc870f5af05fc7de2fb6dc968f0c21ccc807ef8cd41d75e2c5153c1c89ea231
Contents?: true
Size: 1.8 KB
Versions: 27
Compression:
Stored size: 1.8 KB
Contents
# frozen_string_literal: true require 'eac_ruby_utils/core_ext' require 'ehbrs/fs/compressed_package' require 'ehbrs/videos/extract/package_file' module Ehbrs module Videos module Extract class Package enable_simple_cache common_constructor :path, :target_dir, :qualities do self.path = path.to_pathname self.target_dir = target_dir.to_pathname end delegate :to_s, to: :path def run(delete) selected_files.each(&:copy_to_selected_dir) files.each(&:move_to_quality_dir) extract_dir.rmdir path.unlink if delete end private def files_uncached ::Pathname.glob("#{extract_dir}/**/*").map do |file| ::Ehbrs::Videos::Extract::PackageFile.new(self, file) end end def extract_dir_uncached r = target_dir / path.basename raise "Extract directory \"#{r}\" is a file" if r.file? r.rmtree if r.directory? ::Ehbrs::Fs::CompressedPackage.new(path).extract_to(r) r end def files_qualities_uncached qualities_with_default.select { |q| grouped_files.keys.include?(q) } end def grouped_files_uncached r = {} files.each do |file| r[file.quality] ||= [] r[file.quality] << file end r end def qualities_with_default qualities + [::Ehbrs::Videos::Extract::PackageFile::DEFAULT_QUALITY] end def selected_dir_uncached target_dir / 'selected' end def selected_files files.select { |f| f.quality == selected_quality } end def selected_quality_uncached files_qualities.first end end end end end
Version data entries
27 entries across 27 versions & 1 rubygems