webgalen/lib/webgalien/screenshot.rb
2018-09-21 01:25:39 +02:00

41 lines
1 KiB
Ruby

module Webgalien
class Screenshot
def self.start(urls:, output_path:)
# Start workpools
cores = Celluloid.cores
screenshot_pool = ScreenshotActor.pool(
size: cores,
args: { output_path: output_path }
)
crop_pool = CropPngActor.pool(
size: cores,
args: { output_path: output_path }
)
futures =
urls.
map do |url|
Celluloid::Future.new { Work.new(input: {url: url}, id: url) }
end.
map do |future_work|
screenshot_pool.future.perform(future_work)
end.
map do |future_work|
crop_pool.future.perform(future_work)
end
puts '(main) Waiting for remaining jobs'
results = futures.map { |future_work| future_work.value }
puts '(main) Cleaning'
results
.map { |result| result.shift!.artefacts }
.flatten
#.select { |artefact| artefact[:type] == :file }
#.each { |file| FileUtils.rm_f file }
end
end
end