Class: RubySpriter::BatchProcessor
- Inherits:
-
Object
- Object
- RubySpriter::BatchProcessor
- Defined in:
- lib/ruby_spriter/batch_processor.rb
Overview
Processes multiple videos in batch mode
Instance Attribute Summary collapse
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Instance Method Summary collapse
-
#consolidate_results(outputs) ⇒ Hash?
Consolidate all resulting spritesheets.
-
#find_videos ⇒ Array<String>
Find all MP4 files in the directory.
-
#initialize(options = {}) ⇒ BatchProcessor
constructor
A new instance of BatchProcessor.
-
#process ⇒ Hash
Process all videos in the directory.
Constructor Details
#initialize(options = {}) ⇒ BatchProcessor
Returns a new instance of BatchProcessor.
10 11 12 13 14 15 16 |
# File 'lib/ruby_spriter/batch_processor.rb', line 10 def initialize( = {}) = @gimp_path = nil @gimp_version = nil validate_directory! setup_dependencies if needs_dependency_setup? end |
Instance Attribute Details
#options ⇒ Object (readonly)
Returns the value of attribute options.
8 9 10 |
# File 'lib/ruby_spriter/batch_processor.rb', line 8 def end |
Instance Method Details
#consolidate_results(outputs) ⇒ Hash?
Consolidate all resulting spritesheets
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/ruby_spriter/batch_processor.rb', line 91 def consolidate_results(outputs) return nil unless [:batch_consolidate] return nil if outputs.empty? Utils::OutputFormatter.header("Consolidating #{outputs.length} spritesheets") output_dir = [:outputdir] || [:dir] consolidated_file = File.join(output_dir, 'batch_consolidated_spritesheet.png') consolidated_file = Utils::FileHelper.ensure_unique_output(consolidated_file, overwrite: [:overwrite]) consolidator = Consolidator.new() result = consolidator.consolidate(outputs, consolidated_file) Utils::OutputFormatter.success("Consolidated output: #{File.basename(consolidated_file)}") result end |
#find_videos ⇒ Array<String>
Find all MP4 files in the directory
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/ruby_spriter/batch_processor.rb', line 20 def find_videos pattern = File.join([:dir], '*.mp4') videos = Dir.glob(pattern) if videos.empty? raise ValidationError, "No MP4 files found in directory: #{options[:dir]}" end if [:debug] Utils::OutputFormatter.note("Found #{videos.length} video(s) to process") videos.each { |v| Utils::OutputFormatter.indent(File.basename(v)) } end videos end |
#process ⇒ Hash
Process all videos in the directory
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/ruby_spriter/batch_processor.rb', line 38 def process videos = find_videos output_dir = determine_output_directory ensure_output_directory_exists(output_dir) results = { processed_count: 0, outputs: [], errors: [] } Utils::OutputFormatter.header("Batch Processing: #{videos.length} video(s)") videos.each_with_index do |video, index| begin puts "\nProcessing [#{index + 1}/#{videos.length}]: #{File.basename(video)}" output_file = determine_output_file(video, output_dir) output_file = Utils::FileHelper.ensure_unique_output(output_file, overwrite: [:overwrite]) # Process video video_result = process_video(video, output_file) # Apply max compression if requested if [:max_compress] && video_result[:output_file] video_result[:output_file] = apply_compression(video_result[:output_file]) end results[:outputs] << video_result[:output_file] results[:processed_count] += 1 Utils::OutputFormatter.success("Output: #{File.basename(video_result[:output_file])}") rescue StandardError => e error_msg = "#{File.basename(video)}: #{e.message}" results[:errors] << error_msg Utils::OutputFormatter.error(error_msg) end end # Consolidate if requested if [:batch_consolidate] && results[:outputs].any? consolidated = consolidate_results(results[:outputs]) results[:consolidated] = consolidated if consolidated end display_summary(results) results end |