Sha256: d79624db038c139f618b6f1ea760e75a2871ed95c72735fbb7c5af978663cb19

Contents?: true

Size: 1.5 KB

Versions: 3

Compression:

Stored size: 1.5 KB

Contents

require 'tvdb_party'

module UnifiedDB
  module Backend
    class TVDB < Base

      def find_by_id(id)
        movie = handler.get_series_by_id(id)
        raise if movie.nil?

        @result = Result::ID.new(
          :id => movie.id,
          :title => movie.name.to_s,
          :overview => movie.overview.to_s,
          :release_date => movie.first_aired.to_s,
          :genres => movie.genres,
          :rating => movie.rating.to_s,
          :runtime => movie.runtime.to_i.to_s,
          :actors => format_actors(movie.actors),
          :directors => [],
          :writers => [],
          :posters => format_posters(movie.banners)
        )
      rescue
        raise ApiError, 'not found'
      end

      def find_by_title(title)
        movies = handler.search(title)
        movies.each do |movie|
          @result << Result::Title.new(
            :id => movie['seriesid'],
            :title => movie['SeriesName'],
            :year => movie['FirstAired'].to_s.split('-')[0])
        end
        result
      end

      private

      def service; 'tvdb'; end

      def handler
        raise ApiError, 'no TVDB secret provided' if UnifiedDB.tvdb_secret.nil?
        @handler ||= TvdbParty::Search.new(UnifiedDB.tvdb_secret)
      end

      def format_posters(posters)
        list = posters.select { |poster| (['season', 'poster'].include? poster.banner_type) && poster.banner_type2 != 'seasonwide' }
        list.sort { |a,b| b.banner_type <=> a.banner_type }.collect(&:url)
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
unified_db-0.2.7 lib/unified_db/backend/tvdb.rb
unified_db-0.2.6 lib/unified_db/backend/tvdb.rb
unified_db-0.2.5 lib/unified_db/backend/tvdb.rb