class Videoinfo::Videos::Tv

Attributes

episode_number[R]
episode_string[R]
season_number[R]

Public Instance Methods

name=(n) click to toggle source
# File lib/videoinfo/videos/tv.rb, line 66
def name=(n)
  @episode_string = n.slice!(/(\AS\d{2,3}E\d{2,3}\ |\ S\d{2,3}E\d{2,3}\z|\AS\d{2,3}\ |\ S\d{2,3}\z)/i)
  @name           = n

  if @episode_string
    @episode_string.strip!
    @season_number, @episode_number = @episode_string.gsub(/[SE]/i, ' ').split
  end

  @name
end
populate_result!() click to toggle source
# File lib/videoinfo/videos/tv.rb, line 11
def populate_result!
  result.mediainfo = read_mediainfo

  serie = search_imdb.first
  if serie
    result.imdb_id   = serie.id
    result.title     = serie.title
    result.plot      = serie.plot
    result.rating    = serie.rating
    result.genres    = serie.genres
    result.country   = serie.countries.first
    result.premiered = serie.year

    if season_number
      season = serie.season(season_number.to_i)
      if season
        result.season_number = season.season_number
        if episode_number
          episode = season.episode(episode_number.to_i)
          if episode
            result.episode_number  = episode.episode
            result.episode_imdb_id = episode.id
            result.episode_title   = episode.title
            result.episode_url     = episode.url
            result.episode_rating  = episode.rating
            result.air_date        = episode.air_date
          end
        end
      end
    end
  end

  result.screenshot_urls = capture_screenshots.map { |ss| Videoinfo.upload_screenshot(ss) }

  result
end
result() click to toggle source
# File lib/videoinfo/videos/tv.rb, line 7
def result
  @result ||= Results::TvResult.new
end
search_imdb() click to toggle source
# File lib/videoinfo/videos/tv.rb, line 48
def search_imdb
  series = []
  begin
    series = Imdb::Search.new(name, :tv).movies
  rescue => e
    raise Error, "could not search IMDB. #{e.message}"
  end

  return series.map { |s| Imdb::Serie.new(s.id) } unless Videoinfo.interactive?

  series.each do |s|
    STDERR.print "Is your series \"#{s.title}\" (tt#{s.id})? [Y/n] "
    return [Imdb::Serie.new(s.id)] if STDIN.gets.strip !~ /^(n|no)$/i
  end

  []
end