Initial commit
This commit is contained in:
72
app/models/audio_analysis.rb
Normal file
72
app/models/audio_analysis.rb
Normal file
@@ -0,0 +1,72 @@
|
||||
class AudioAnalysis
|
||||
def initialize(video)
|
||||
@video = video
|
||||
end
|
||||
|
||||
# Use the custom hash to generate JSON format
|
||||
def as_json(*)
|
||||
to_hash
|
||||
end
|
||||
|
||||
def to_hash
|
||||
{
|
||||
edl_bucket_name: aws_bucket_name,
|
||||
edl_object_name: video.audio_only_edl_file.key,
|
||||
acquired_audio: acquired_audio_list,
|
||||
original_music: original_music_list,
|
||||
}
|
||||
end
|
||||
|
||||
def results
|
||||
response.results
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :video
|
||||
|
||||
def aws_bucket_name
|
||||
ENV["AWS_BUCKET"]
|
||||
end
|
||||
|
||||
def acquired_audio_list
|
||||
video.project.acquired_media_releases.flat_map do |acquired_media_release|
|
||||
acquired_media_release.file_infos.audio.map do |file_info|
|
||||
{ id: file_info.id, filename: file_info.filename }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def original_music_list
|
||||
video.project.music_releases.flat_map do |music_release|
|
||||
music_release.file_infos.map do |file_info|
|
||||
{ id: file_info.id, filename: file_info.filename, composers: music_release.composer_info, publishers: music_release.publisher_info }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def analysis_uid
|
||||
video.audio_analysis_uid
|
||||
end
|
||||
|
||||
def fps
|
||||
edl_event_gateway.fps
|
||||
end
|
||||
|
||||
def edl_offset_seconds
|
||||
edl_event_gateway.edl_offset_seconds
|
||||
end
|
||||
|
||||
def edl_event_gateway
|
||||
# TODO: Eventually cache this on the video itself to avoid an extra API call, but for now keep it simple
|
||||
@edl_event_gateway ||= begin
|
||||
files_for_request = AudioFilesForRequest.new(video, video.edl_timecode_start)
|
||||
EdlEventGateway.new(files_for_request, "00:00:00:00", "00:00:00:00")
|
||||
end
|
||||
end
|
||||
|
||||
def response
|
||||
@response ||= BrayniacAI::AudioRecognition.find(analysis_uid,
|
||||
params: { fps: fps, edl_offset_seconds: edl_offset_seconds })
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user