marceloboeira/feedcast

View on GitHub
app/services/audio_services/analyse.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
module AudioServices
  class Analyse
    def call(audio)
      audio_file = download(audio.url)
      audio_data = ffmpeg(audio_file)

      audio.update(size: audio_data.size,
                   duration: audio_data.duration,
                   codec: audio_data.audio_codec,
                   bitrate: audio_data.audio_bitrate,
                   sample_rate: audio_data.audio_sample_rate)
      audio.analyse!
    rescue StandardError => e
      audio.fail!(e.message)
    end

    private

    def download(url)
      AudioServices::Download.new.call(url)
    end

    def ffmpeg(file)
      AudioServices::FFMPEG.new.call(file)
    end
  end
end