Class: TvdbPartyV2::Search

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/tvdb_party_v2/search.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(apikey, username, userkey, language = 'en', cache_options = {}) ⇒ Search

Returns a new instance of Search.



9
10
11
12
13
14
15
16
# File 'lib/tvdb_party_v2/search.rb', line 9

def initialize(apikey, username, userkey, language = 'en', cache_options = {})
  @language = language
  thetvdb = self.class.post('/login',
                            :body => {"apikey" => apikey,
                                      "username" => username,
                                      "userkey" => userkey}.to_json)
  @token = thetvdb['token']
end

Instance Attribute Details

#languageObject

Returns the value of attribute language.



7
8
9
# File 'lib/tvdb_party_v2/search.rb', line 7

def language
  @language
end

#tokenObject

Returns the value of attribute token.



7
8
9
# File 'lib/tvdb_party_v2/search.rb', line 7

def token
  @token
end

Instance Method Details

#get(url) ⇒ Object



126
127
128
129
# File 'lib/tvdb_party_v2/search.rb', line 126

def get(url)
  return self.class.get(url,
                 :headers => {"Authorization" => 'Bearer ' + @token,"Accept-Language" => self.language}).parsed_response
end

#get_actors(series) ⇒ Object



89
90
91
92
93
94
95
96
# File 'lib/tvdb_party_v2/search.rb', line 89

def get_actors(series)
  response = self.get("/series/#{series.id}/actors")
  if response["data"]
    response["data"].collect {|a| Actor.new(a)}
  else
    nil
  end
end

#get_banners(series, keyType, subKey = nil) ⇒ Object



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/tvdb_party_v2/search.rb', line 108

def get_banners(series, keyType, subKey = nil)
  if subKey
    url = "/series/#{series.id}/images/query?keyType=#{keyType}&subKey=#{subKey}"
  else
    url = "/series/#{series.id}/images/query?keyType=#{keyType}"
  end
  response = self.get(url)
  return [] unless response["data"]
  case response["data"]
  when Array
    response["data"].map {|result| Banner.new(result)}
  when Hash
    [Banner.new(response["data"])]
  else
    []
  end
end

#get_episode(series, season_number, episode_number = nil, page_id = nil) ⇒ Object

基于季数、集数获取集的详细信息



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/tvdb_party_v2/search.rb', line 68

def get_episode(series, season_number, episode_number = nil,  page_id = nil)
  if episode_number
    url = "/series/#{series.id}/episodes/query?airedSeason=#{season_number}&airedEpisode=#{episode_number}"
  else
    url = "/series/#{series.id}/episodes/query?airedSeason=#{season_number}"
  end
  url = url + "&page=#{page_id}" unless page_id.nil?

  response = self.get(url)
  return [] unless response["data"]
  if response['links']['next'].nil?
    data = response["data"]
  else
    data << response["data"]
    get_episode(series, season_number, episode_number, self.language, response['links']['next'])
  end
  data.map {|e| self.get_episode_by_id(e["id"])}
end

#get_episode_by_id(episode_id, language = self.language) ⇒ Object

基于电视剧集id获取每集的详细信息



58
59
60
61
62
63
64
65
# File 'lib/tvdb_party_v2/search.rb', line 58

def get_episode_by_id(episode_id, language = self.language)
  response = self.get("/episodes/#{episode_id.to_s}")
  if response["data"]
    Episode.new(self, response["data"])
  else
    nil
  end
end

#get_seasons(series) ⇒ Object

获取季数



99
100
101
102
103
104
105
106
# File 'lib/tvdb_party_v2/search.rb', line 99

def get_seasons(series)
  response = self.get("/series/#{series.id}/episodes/summary")
  if response["data"] && response["data"]["airedSeasons"]
    return response["data"]["airedSeasons"]
  else
    return []
  end
end

#get_series_by_id(series_id, language = self.language) ⇒ Object

基于电视剧id获取电视剧详细信息



48
49
50
51
52
53
54
55
# File 'lib/tvdb_party_v2/search.rb', line 48

def get_series_by_id(series_id, language = self.language)
  response = self.get("/series/#{series_id.to_s}")
  if response["data"]
    Series.new(self, response["data"])
  else
    nil
  end
end

#search(series_name) ⇒ Object

基于电视剧英文名称获取thetvdb的查询结果



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/tvdb_party_v2/search.rb', line 19

def search(series_name)
  response = self.get("/search/series?name=#{URI::encode(series_name)}")
  return [] unless response["data"]
  case response["data"]
  when Array
    response["data"]
  when Hash
    [response["data"]]
  else
    []
  end
end

#search_by_imdb(imdb_id) ⇒ Object

基于imdbid获取thetvdb的查询结果



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/tvdb_party_v2/search.rb', line 33

def search_by_imdb(imdb_id)
  response = self.get("/search/series?imdbId=#{imdb_id}")
  return [] unless response["data"]

  case response["data"]
  when Array
    response["data"]
  when Hash
    [response["data"]]
  else
    []
  end
end