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

Version Path
ehbrs-tools-0.26.0 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.25.1 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.25.0 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.24.0 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.23.1 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.23.0 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.22.0 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.21.0 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.20.0 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.19.0 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.18.0 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.17.0 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.16.5 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.16.4 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.16.3 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.16.2 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.16.1 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.16.0 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.15.0 lib/ehbrs/videos/extract/package.rb
ehbrs-tools-0.14.1 lib/ehbrs/videos/extract/package.rb