28 lines
726 B
Ruby
28 lines
726 B
Ruby
class AnalyzeVideoJob < ApplicationJob
|
|
queue_as :default
|
|
|
|
before_perform do |job|
|
|
video = job.arguments.first
|
|
ProjectsChannel.broadcast_video_analysis_update(video)
|
|
end
|
|
|
|
def perform(video, reanalysis: false)
|
|
response = BrayniacAI::FacialRecognition.create! VideoAnalysis.new(video, reanalysis)
|
|
|
|
video.update!({
|
|
analysis_uid: response.job_id,
|
|
analysis_started_at: Time.zone.now,
|
|
analysis_status: :pending,
|
|
})
|
|
|
|
rescue StandardError => e
|
|
video.analysis_failure!
|
|
Rails.logger.error("Failed to analyze video(##{video.id})\n" + e.message)
|
|
end
|
|
|
|
after_perform do |job|
|
|
video = job.arguments.first
|
|
ProjectsChannel.broadcast_video_analysis_update(video)
|
|
end
|
|
end
|