class P3::Eztv::Series

Constants

EPISODES_XPATH

Attributes

high_def[R]
name[R]

Public Class Methods

new(name) click to toggle source
# File lib/p3-eztv.rb, line 24
def initialize(name)
    @name = name
    @high_def = false
end

Public Instance Methods

episode(season, episode_number) click to toggle source
# File lib/p3-eztv.rb, line 42
def episode(season, episode_number)
    episodes().find do |episode|
        episode.season == season and episode.episode_number == episode_number
    end
end
episodes() click to toggle source
# File lib/p3-eztv.rb, line 38
def episodes
    @episodes ||= EpisodeFactory.create( name, fetch_episodes() )
end
get(s01e01_format) click to toggle source
# File lib/p3-eztv.rb, line 48
def get(s01e01_format)
    season_episode_match_data = s01e01_format.match( /#{SE_FORMAT}/ )
    season  = season_episode_match_data[1].to_i
    episode_number = season_episode_match_data[2].to_i
    return episode(season, episode_number)
end
high_def!() click to toggle source
# File lib/p3-eztv.rb, line 29
def high_def!
    @high_def = true
end
search_string() click to toggle source
# File lib/p3-eztv.rb, line 33
def search_string
    search =  @high_def ? "#{@name} 720p" : @name
    return URI::escape( search )
end
season(season) click to toggle source
# File lib/p3-eztv.rb, line 55
def season(season)
    episodes().find_all {|episode| episode.season == season }
end
seasons() click to toggle source
# File lib/p3-eztv.rb, line 59
def seasons
    episodes().sort.group_by {|episode| episode.season }
end

Private Instance Methods

fetch_episodes() click to toggle source
# File lib/p3-eztv.rb, line 65
def fetch_episodes

    # 'get' method comes from httparty
    result = Series::get("/search/#{self.search_string()}")

    document = Nokogiri::HTML(result)

    episodes_array = document.xpath( EPISODES_XPATH )

    episodes_array = episodes_array.children
    episodes_array = episodes_array.select{ | episode | episode.attributes['class'].to_s == 'forum_header_border' }

    raise SeriesNotFoundError.new(self) if episodes_array.empty?

    return episodes_array
end