class MyLocalPutio::SubtitlesManager

Attributes

cli[R]
configuration[R]
downloader[R]
logger[R]

Public Class Methods

new(configuration) click to toggle source
# File lib/my-local-putio/subtitles_manager.rb, line 5
def initialize(configuration)
  @configuration = configuration
  @logger = configuration.logger
  @cli = PutioCli.new(@configuration)
  @downloader = Downloader.new(@configuration)
end

Public Instance Methods

fetch(file, path) click to toggle source
# File lib/my-local-putio/subtitles_manager.rb, line 12
def fetch(file, path)
  return unless configuration.with_subtitles
  return unless file_is_video?(file)

  local_subtitle_path = File.join(path, filename(file))
  logger.log "Trying to fetch the preferred subtitle for: #{file.name}"
  subtitles = cli.get_subtitles(file.id)["subtitles"]
  if subtitles.empty?
    logger.log ":( Could not find any preferred subtitle for: #{file.name}"
    return
  end

  process_subtitle(subtitles, local_subtitle_path)
end

Private Instance Methods

file_is_video?(file) click to toggle source
# File lib/my-local-putio/subtitles_manager.rb, line 32
def file_is_video?(file)
  file.file_type == "VIDEO"
end
filename(file) click to toggle source
# File lib/my-local-putio/subtitles_manager.rb, line 28
def filename(file)
  File.basename(file.name, File.extname(file.name))
end
process_subtitle(subtitles, local_subtitle_path) click to toggle source
# File lib/my-local-putio/subtitles_manager.rb, line 36
def process_subtitle(subtitles, local_subtitle_path)
  subtitles_grouped = subtitles.group_by{|k,v| k["language_code"]}
  subtitles_grouped.each do |language_code, list|
    path = local_subtitle_path + ".#{language_code}.srt"
    logger.log("#{list.first["language"]} subtitle found!")
    downloader.download(list.first["url"], path)
  end
end