Class: VideoPosterExtractionWorker

Inherits:
Object
  • Object
show all
Includes:
Sidekiq::Worker, Workers::StatusBroadcastable
Defined in:
app/workers/video_poster_extraction_worker.rb

Instance Attribute Summary

Attributes included from Workers::StatusBroadcastable

#broadcast_status_updates

Instance Method Summary collapse

Methods included from Workers::StatusBroadcastable::Overrides

#at, #store, #total

Instance Method Details

#perform(video_id, timestamp_seconds = nil, redirect_to = nil) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/workers/video_poster_extraction_worker.rb', line 9

def perform(video_id, timestamp_seconds = nil, redirect_to = nil)
  video = Video.find(video_id)

  timestamp_seconds = 5.0 if timestamp_seconds.nil? || timestamp_seconds < 0

  total(100)
  at(0, "Starting poster extraction for video #{video.title}")
  store redirect_to: redirect_to if redirect_to.present?

  at(25, 'Extracting poster using optimized service...')

  service = VideoPosterExtractionService.new(video, timestamp_seconds)
  service.extract_poster

  at(100, 'Poster extraction completed successfully!')
rescue VideoPosterExtractionService::ExtractionError => e
  store error_message: e.message
  raise
end