Files
old-holivud2/app/models/edl_event_gateway.rb
2020-05-31 22:38:19 +02:00

76 lines
2.0 KiB
Ruby

class EdlEventGateway
def initialize(files_for_request, timecode_start, timecode_end, collection: {}, channel_filter: "")
@files_for_request = files_for_request
@timecode_start = timecode_start
@timecode_end = timecode_end
@collection = collection
@channel_filter = channel_filter
end
def edl_events
@edl_events ||= response_results.
filter { |response_edl_event| response_edl_event.channel.include?(channel_filter) }.
map do |response_edl_event|
EdlEvent.new(
channel: response_edl_event.channel,
start_time: response_edl_event.start_time,
timecode_in: response_edl_event.timecode_in,
timecode_out: response_edl_event.timecode_out,
duration: response_edl_event.duration,
source_file_name: response_edl_event.source_file_name,
clip_name: response_edl_event.clip_name,
description: response_edl_event.description,
matches: response_edl_event.matches,
)
end
end
def edl_timecode_start
return if response.nil?
response.edl_timecode_start
end
def fps
return if response.nil?
response.fps
end
def edl_offset_seconds
return if response.nil?
response.edl_offset_seconds
end
private
attr_reader :files_for_request, :timecode_start, :timecode_end, :collection, :channel_filter
def as_json(*)
{
job_id: files_for_request.job_id,
video_bucket_name: files_for_request.aws_bucket_name,
video_object_name: files_for_request.file_object_name,
edl_bucket_name: files_for_request.aws_bucket_name,
edl_object_name: files_for_request.edl_file_object_name,
timecode_start: timecode_start,
timecode_end: timecode_end,
collection: collection,
edl_timecode_start: files_for_request.start_timecode_offset,
}.compact
end
def response_results
return [] if response.nil?
response.results
end
def response
@response ||= BrayniacAI::EdlParse.create as_json
rescue ActiveResource::ServerError => e
nil
end
end