Class: EM::TvDB

Inherits:
Object
  • Object
show all
Defined in:
lib/em-tvdb/client.rb

Constant Summary collapse

Client =
RestCore::Builder.client do
  s = RestCore
  use s::DefaultSite , 'http://www.thetvdb.com/api'
  use s::XmlDecode
  use s::CommonLogger, method(:puts)
  use s::Cache       , nil, 3600
  run s::EmHttpRequest
end

Instance Method Summary collapse

Constructor Details

#initialize(api_key) ⇒ TvDB

Returns a new instance of TvDB.



36
37
38
39
# File 'lib/em-tvdb/client.rb', line 36

def initialize(api_key)
  @api_key = api_key
  @client = Client.new
end

Instance Method Details

#episodes(serie_id, &block) ⇒ Object

4158103 13 2 Shawn Piller 2 Silent Night 13 2011-12-06 Niamh Wilson|Craig Eldridge en ... 7.9 14 2 Brian Millikin episodes/158661/4158103.jpg 1327959365 463844 158661


104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/em-tvdb/client.rb', line 104

def episodes(serie_id, &block)
  @client.get("/#{@api_key}/series/#{serie_id}/all/en.xml") do |xml|
    episodes = xml.css('Episode').map do |ep|
      aired_date = ep.content_node('FirstAired')
      
      if aired_date.empty?
        aired_date = nil
      else
        aired_date = Time.parse(aired_date)
      end
      
      
      Hashie::Mash.new(
        :id               => ep.content_node('id'),
        :name             => ep.content_node('EpisodeName'),
        :episode_number   => ep.content_node('EpisodeNumber').to_i,
        :season_number    => ep.content_node('SeasonNumber').to_i,
        :aired_date       => aired_date,
        :overview         => ep.content_node('Overview')
      )
    end
    
    episodes = episodes.select{|ep| ep.season_number > 0 }.sort_by(&:episode_number)
    block.call(episodes)
  end
end

#search_serie(name, &block) ⇒ Object

158661 en Haven graphical/158661-g2.jpg ... 2010-07-09 tt1519931 SH01281487 158661 70971 en Castle Haven 1969-04-01 70971


62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/em-tvdb/client.rb', line 62

def search_serie(name, &block)
  @client.get("/GetSeries.php", :seriesname => name) do |xml|
    series = xml.css('Series').map do |serie|
      Hashie::Mash.new(
        :id       => serie.content_node('seriesid'),
        :name     => serie.content_node('SeriesName'),
        :overview => serie.content_node('Overview')
      )
    end
  
    block.call(series)
  end
end