Sha256: d13b3324a2838955638f3e69a1fd6291cdb33c2bec90c1fa0c04c513ee92ad2a

Contents?: true

Size: 1.35 KB

Versions: 3

Compression:

Stored size: 1.35 KB

Contents

require 'imdb'
require 'imdb_party'

module UnifiedDB
  module Backend
    class IMDB < Base

      def find_by_id(id)
        movie = handler.find_movie_by_id(id)
        @result = Result::ID.new(
          :id => movie.imdb_id,
          :title => movie.title,
          :overview => movie.plot,
          :release_date => movie.release_date,
          :genres => movie.genres,
          :rating => movie.rating,
          :runtime => movie.runtime.to_i,
          :actors => format_actors(movie.actors),
          :directors => format_directors(movie.directors),
          :writers => format_writers(movie.writers),
          :posters => Array(movie.poster_url)
        )
      rescue
        raise ApiError, 'not found'
      end

      def find_by_title(title)
        # movies = handler.find_by_title(title)
        movies = Imdb::Search.new(title).movies
        movies.each do |movie|
          id = "tt#{movie.id}"
          title1, year, title2 = movie.title.match(/(.*) \(([0-9]{4})\)(.*)/)[1..3] rescue next
          @result << Result::Title.new(
            :id => id,
            :title => [title1.to_s.strip, title2.to_s.strip].join(" ").strip,
            :year => year)
        end
        result
      end

      private

      def service; 'imdb'; end

      def handler
        @handler ||= ImdbParty::Imdb.new(:anonymize => true)
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
unified_db-0.2.2 lib/unified_db/backend/imdb.rb
unified_db-0.2.1 lib/unified_db/backend/imdb.rb
unified_db-0.2.0 lib/unified_db/backend/imdb.rb