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