Sha256: 8d034a40afec8750f2e5b17221e403782aebb86210c9af407c032d6293cc681b

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true

require 'themoviedb'

# A cached movie lookup instance
module MovieOrganizer
  class TmdbInstance
    attr_reader :title, :year, :matches

    def initialize(title, year = nil)
      Tmdb::Api.key(api_key) # configure TMDB API key
      @title = title
      @year  = year
    end

    def movie?
      @matches = Tmdb::Movie.find(title)
      sleep(0.25)
      return self if matches.any?
      false
    end

    # rubocop:disable Metrics/AbcSize
    # rubocop:disable Style/RescueModifier
    def likely_match
      @likely_match ||= begin
        if year.nil?
          lm = matches.first
          release_date = Date.parse(lm.release_date) rescue nil
          @title = lm.title
          @year = release_date&.year
        else
          lm = nil
          matches.each do |m|
            release_date = Date.parse(m.release_date) rescue nil
            next unless release_date&.year.to_i == year.to_i
            lm = m
            @title = lm.title
            @year = release_date&.year
            break
          end
          lm ||= matches.first
        end
        lm
      end
    end
    # rubocop:enable Style/RescueModifier
    # rubocop:enable Metrics/AbcSize

    private

    def api_key
      ENV.fetch('TMDB_KEY') do
        Settings.instance[:movies][:tmdb_key]
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
movie_organizer-1.0.2 lib/movie_organizer/tmdb_instance.rb
movie_organizer-1.0.1 lib/movie_organizer/tmdb_instance.rb