the_tvdb 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.env
19
+ .rvmrc
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ group :test do
4
+ gem 'webmock', '~> 1.8.0'
5
+ gem 'vcr'
6
+ gem 'turn'
7
+ gem 'rake'
8
+ gem 'rspec'
9
+ end
10
+
11
+ # Specify your gem's dependencies in the_tvdb.gemspec
12
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Alessandro Mencarini
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # TheTvdb
2
+
3
+ Ruby wrapper for TheTVDB.com
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'the_tvdb'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install the_tvdb
18
+
19
+ ## Usage
20
+
21
+ Instructions coming soon!
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,32 @@
1
+ module TheTvdb
2
+
3
+ def self.config
4
+ @config ||= Configuration.new
5
+ end
6
+
7
+ class Configuration
8
+
9
+ def dump_path
10
+ @dump_path ||= default_path
11
+ FileUtils.mkdir_p("#{@dump_path}/zipfiles") if !File.directory?("#{@dump_path}/zipfiles")
12
+ FileUtils.mkdir_p("#{@dump_path}/data/episodes") if !File.directory?("#{@dump_path}/data/episodes")
13
+ @dump_path
14
+ end
15
+
16
+ def default_path
17
+ 'tmp/the_tvdb/'
18
+ end
19
+
20
+ def zip_path
21
+ "#{dump_path}/zipfiles"
22
+ end
23
+ def data_path
24
+ "#{dump_path}/data"
25
+ end
26
+ def episodes_path
27
+ "#{data_path}/episodes"
28
+ end
29
+
30
+
31
+ end
32
+ end
@@ -0,0 +1,50 @@
1
+ module TheTvdb
2
+ class Episode
3
+
4
+ attr_accessor :remote_id, :season_remote_id, :season_number, :name, :number, :aired_at, :description
5
+
6
+ def initialize(info)
7
+ @remote_id = info['id'].to_i
8
+ @season_remote_id = info['seasonid'].to_i
9
+ @season_number = info['Combined_season'].to_i
10
+ @name = info['EpisodeName']
11
+ @number = info['EpisodeNumber'].to_i
12
+ @aired_at = Date.parse(info['FirstAired'])
13
+ @description = info['Overview']
14
+ end
15
+
16
+ def self.find(remote_id)
17
+ info = TheTvdb.gateway.get_episode_details(remote_id)
18
+ self.new(info)
19
+ end
20
+
21
+ end
22
+ end
23
+
24
+ # For reference, the episode yaml:
25
+ #
26
+ # id: '4245778'
27
+ # seasonid: '473271'
28
+ # EpisodeNumber: '9'
29
+ # EpisodeName: Blackwater
30
+ # FirstAired: '2012-05-28'
31
+ # GuestStars:
32
+ # Director: Neil Marshall
33
+ # Writer: George R. R. Martin
34
+ # Overview: Tyrion and the Lannisters fight for their lives as Stannis’ fleet assaults King’s Landing.
35
+ # ProductionCode:
36
+ # lastupdated: '1352849383'
37
+ # flagged: '0'
38
+ # DVD_discid:
39
+ # DVD_season: '2'
40
+ # DVD_episodenumber: '9.0'
41
+ # DVD_chapter:
42
+ # absolute_number: '19'
43
+ # filename: episodes/121361/4245778.jpg
44
+ # seriesid: '121361'
45
+ # mirrorupdate: '2012-11-13 15:28:01'
46
+ # IMDB_ID: tt2084342
47
+ # EpImgFlag: '2'
48
+ # Rating: '8.4'
49
+ # SeasonNumber: '2'
50
+ # Language: en
@@ -0,0 +1,124 @@
1
+ require 'rubygems'
2
+ require 'open-uri'
3
+ require 'nokogiri'
4
+ require 'zip/zip'
5
+ require 'active_support/core_ext'
6
+
7
+ module TheTvdb
8
+
9
+ def self.gateway
10
+ @gateway ||= Gateway.new
11
+ end
12
+
13
+ class Gateway
14
+
15
+ def config
16
+ TheTvdb.config
17
+ end
18
+
19
+ def zip_path
20
+ config.zip_path
21
+ end
22
+ def data_path
23
+ config.data_path
24
+ end
25
+ def episodes_path
26
+ config.episodes_path
27
+ end
28
+
29
+ # TODO: setup a reliable env system for apikey
30
+ def initialize(api_key = nil)
31
+ @api_key = api_key || ENV['TVDBKEY']
32
+ raise 'No API key was provided. Please set one as environment variable (e.g.: `export TVDBKEY=1234567898765432`).' if !@api_key
33
+ @mirror = get_mirror
34
+ end
35
+
36
+ ENDPOINT = 'http://www.thetvdb.com/api/'
37
+
38
+ def endpoint
39
+ ENDPOINT
40
+ end
41
+
42
+ # def api_key
43
+ # APIKEY
44
+ # end
45
+
46
+ def get_mirror
47
+ hash = xml_to_hash "#{endpoint}#{@api_key}/mirrors.xml", 'Mirror'
48
+ "#{hash['mirrorpath']}/api/#{@api_key}"
49
+ end
50
+
51
+ def get_time
52
+ xml_to_hash "#{endpoint}/Updates.php?type=none", 'Time'
53
+ end
54
+
55
+ def get_series(name)
56
+ doc = open_xml "#{endpoint}/GetSeries.php?seriesname=#{URI.escape(name)}"
57
+ result = doc.css('Series').map { |series| Hash.from_xml(series.to_s)['Series'] }
58
+ #puts result.to_yaml
59
+ result
60
+ end
61
+
62
+ def get_series_package(seriesid, language = 'en')
63
+ begin
64
+ open("#{zip_path}/#{seriesid}.zip", 'wb') do |file|
65
+ file << open("#{@mirror}/series/#{seriesid}/all/#{language}.zip").read
66
+ end
67
+ unzip_file("#{zip_path}/#{seriesid}.zip", "#{data_path}/xml/#{seriesid}")
68
+ xml_to_hash "#{data_path}/xml/#{seriesid}/#{language}.xml", 'Data'
69
+ rescue Exception => e
70
+ p e
71
+ #puts e.backtrace
72
+ puts "#{@mirror}/series/#{seriesid}/all/#{language}.zip"
73
+ nil
74
+ end
75
+ end
76
+
77
+ def get_episode_details(episodeid, language = 'en')
78
+ file_path = "#{episodes_path}/#{episodeid}.xml"
79
+ open(file_path, 'wb') do |file|
80
+ file << open("#{@mirror}/episodes/#{episodeid}/#{language}.xml").read
81
+ end
82
+ xml_to_hash(file_path, 'Episode')
83
+ end
84
+
85
+ private
86
+
87
+ def open_xml(xml)
88
+ begin
89
+ location = (xml =~ URI::regexp) ? open(xml) : File.open(xml)
90
+ Nokogiri::XML(location)
91
+ rescue Exception => e
92
+ p e
93
+ #puts e.backtrace
94
+ end
95
+ end
96
+
97
+ def xml_to_hash(url, selector = nil)
98
+ doc = open_xml(url)
99
+ doc = doc.css(selector) if selector.present?
100
+ result = Hash.from_xml(doc.to_s)
101
+ result[selector] if selector.present?
102
+ end
103
+
104
+ # def xmlurl_to_array(url, selector = nil)
105
+ # if selector
106
+ # document = open_xml(url).css(selector)
107
+ #
108
+ # else
109
+ # Array.from_xml(open_xml(url).to_s)
110
+ # end
111
+ # end
112
+
113
+ def unzip_file (file, destination)
114
+ Zip::ZipFile.open(file) { |zip_file|
115
+ zip_file.each { |f|
116
+ f_path=File.join(destination, f.name)
117
+ FileUtils.mkdir_p(File.dirname(f_path))
118
+ zip_file.extract(f, f_path) unless File.exist?(f_path)
119
+ }
120
+ }
121
+ end
122
+
123
+ end
124
+ end
@@ -0,0 +1,27 @@
1
+ module TheTvdb
2
+ class Show
3
+
4
+ attr_accessor :remote_id, :name, :banner, :description, :episodes, :seasons#, :aired_at
5
+
6
+ def self.search(name)
7
+ shows = TheTvdb.gateway.get_series(name)
8
+ shows.map {|s| self.new(s) }
9
+ end
10
+
11
+ def initialize(info)
12
+ @remote_id = info['seriesid'].to_i
13
+ @name = info['SeriesName']
14
+ @banner = info['banner']
15
+ @description = info['Overview']
16
+ #@aired_at = info['FirstAired']
17
+ end
18
+
19
+ def self.find(remote_id)
20
+ info = TheTvdb.gateway.get_series_package(remote_id)
21
+ show = self.new(info['Series'])
22
+ show.episodes = info['Episode'].map {|e| TheTvdb::Episode.new(e) }
23
+ show
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,3 @@
1
+ module TheTvdb
2
+ VERSION = "0.0.1"
3
+ end
data/lib/the_tvdb.rb ADDED
@@ -0,0 +1,9 @@
1
+ require "the_tvdb/version"
2
+ require "the_tvdb/gateway"
3
+ require "the_tvdb/configuration"
4
+ require "the_tvdb/show"
5
+ require "the_tvdb/episode"
6
+
7
+ module TheTvdb
8
+
9
+ end
@@ -0,0 +1,128 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.thetvdb.com/api/A4EF663990171DE4/mirrors.xml
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Server:
20
+ - cloudflare-nginx
21
+ Date:
22
+ - Thu, 20 Dec 2012 10:48:57 GMT
23
+ Content-Type:
24
+ - text/xml
25
+ Transfer-Encoding:
26
+ - chunked
27
+ Connection:
28
+ - keep-alive
29
+ Last-Modified:
30
+ - Thu, 20 Dec 2012 10:40:03 GMT
31
+ Vary:
32
+ - Accept-Encoding
33
+ Expires:
34
+ - Thu, 20 Dec 2012 11:03:57 GMT
35
+ Cache-Control:
36
+ - max-age=900
37
+ Set-Cookie:
38
+ - __cfduid=d665a8c3de7f0bd80bb3998702e5398191356000537; expires=Mon, 23-Dec-2019
39
+ 23:50:00 GMT; path=/; domain=.thetvdb.com
40
+ Cf-Ray:
41
+ - 97a8c668b69e34a9
42
+ body:
43
+ encoding: US-ASCII
44
+ string: ! "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<Mirrors>\n <Mirror>\n
45
+ \ <id>1</id>\n <mirrorpath>http://thetvdb.com</mirrorpath>\n <typemask>7</typemask>\n
46
+ \ </Mirror>\n</Mirrors>\n"
47
+ http_version:
48
+ recorded_at: Thu, 20 Dec 2012 10:48:57 GMT
49
+ - request:
50
+ method: get
51
+ uri: http://thetvdb.com/api/A4EF663990171DE4/episodes/4245778/en.xml
52
+ body:
53
+ encoding: US-ASCII
54
+ string: ''
55
+ headers:
56
+ Accept:
57
+ - ! '*/*'
58
+ User-Agent:
59
+ - Ruby
60
+ response:
61
+ status:
62
+ code: 200
63
+ message: !binary |-
64
+ T0s=
65
+ headers:
66
+ !binary "U2VydmVy":
67
+ - !binary |-
68
+ Y2xvdWRmbGFyZS1uZ2lueA==
69
+ !binary "RGF0ZQ==":
70
+ - !binary |-
71
+ VGh1LCAyMCBEZWMgMjAxMiAxMDo1MTozNyBHTVQ=
72
+ !binary "Q29udGVudC1UeXBl":
73
+ - !binary |-
74
+ dGV4dC94bWw7IGNoYXJzZXQ9dXRmLTg=
75
+ !binary "VHJhbnNmZXItRW5jb2Rpbmc=":
76
+ - !binary |-
77
+ Y2h1bmtlZA==
78
+ !binary "Q29ubmVjdGlvbg==":
79
+ - !binary |-
80
+ a2VlcC1hbGl2ZQ==
81
+ !binary "WC1Qb3dlcmVkLUJ5":
82
+ - !binary |-
83
+ UEhQLzUuMi42LTErbGVubnkxNg==
84
+ !binary "Q2FjaGUtQ29udHJvbA==":
85
+ - !binary |-
86
+ bWF4LWFnZT05MDA=
87
+ !binary "RXhwaXJlcw==":
88
+ - !binary |-
89
+ VGh1LCAyMCBEZWMgMjAxMiAxMTowNjozNyBHTVQ=
90
+ !binary "VmFyeQ==":
91
+ - !binary |-
92
+ VXNlci1BZ2VudCxBY2NlcHQtRW5jb2Rpbmc=
93
+ !binary "U2V0LUNvb2tpZQ==":
94
+ - !binary |-
95
+ X19jZmR1aWQ9ZDUxODQzZDVkNThmOWQxNDFiOGRhYTk4NjRiMWQ3YTQ0MTM1
96
+ NjAwMDY5NzsgZXhwaXJlcz1Nb24sIDIzLURlYy0yMDE5IDIzOjUwOjAwIEdN
97
+ VDsgcGF0aD0vOyBkb21haW49LnRoZXR2ZGIuY29t
98
+ !binary "Q2YtUmF5":
99
+ - !binary |-
100
+ YzI1ZTRkNGFlMDM0NzgyNg==
101
+ body:
102
+ encoding: ASCII-8BIT
103
+ string: !binary |-
104
+ PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+CjxEYXRh
105
+ PjxFcGlzb2RlPgo8aWQ+NDI0NTc3ODwvaWQ+CjxzZWFzb25pZD40NzMyNzE8
106
+ L3NlYXNvbmlkPgo8RXBpc29kZU51bWJlcj45PC9FcGlzb2RlTnVtYmVyPgo8
107
+ RXBpc29kZU5hbWU+QmxhY2t3YXRlcjwvRXBpc29kZU5hbWU+CjxGaXJzdEFp
108
+ cmVkPjIwMTItMDUtMjg8L0ZpcnN0QWlyZWQ+CjxHdWVzdFN0YXJzPjwvR3Vl
109
+ c3RTdGFycz4KPERpcmVjdG9yPk5laWwgTWFyc2hhbGw8L0RpcmVjdG9yPgo8
110
+ V3JpdGVyPkdlb3JnZSBSLiBSLiBNYXJ0aW48L1dyaXRlcj4KPE92ZXJ2aWV3
111
+ PlR5cmlvbiBhbmQgdGhlIExhbm5pc3RlcnMgZmlnaHQgZm9yIHRoZWlyIGxp
112
+ dmVzIGFzIFN0YW5uaXPigJkgZmxlZXQgYXNzYXVsdHMgS2luZ+KAmXMgTGFu
113
+ ZGluZy48L092ZXJ2aWV3Pgo8UHJvZHVjdGlvbkNvZGU+PC9Qcm9kdWN0aW9u
114
+ Q29kZT4KPGxhc3R1cGRhdGVkPjEzNTI4NDkzODM8L2xhc3R1cGRhdGVkPgo8
115
+ ZmxhZ2dlZD4wPC9mbGFnZ2VkPgo8RFZEX2Rpc2NpZD48L0RWRF9kaXNjaWQ+
116
+ CjxEVkRfc2Vhc29uPjI8L0RWRF9zZWFzb24+CjxEVkRfZXBpc29kZW51bWJl
117
+ cj45LjA8L0RWRF9lcGlzb2RlbnVtYmVyPgo8RFZEX2NoYXB0ZXI+PC9EVkRf
118
+ Y2hhcHRlcj4KPGFic29sdXRlX251bWJlcj4xOTwvYWJzb2x1dGVfbnVtYmVy
119
+ Pgo8ZmlsZW5hbWU+ZXBpc29kZXMvMTIxMzYxLzQyNDU3NzguanBnPC9maWxl
120
+ bmFtZT4KPHNlcmllc2lkPjEyMTM2MTwvc2VyaWVzaWQ+CjxtaXJyb3J1cGRh
121
+ dGU+MjAxMi0xMS0xMyAxNToyODowMTwvbWlycm9ydXBkYXRlPgo8SU1EQl9J
122
+ RD50dDIwODQzNDI8L0lNREJfSUQ+CjxFcEltZ0ZsYWc+MjwvRXBJbWdGbGFn
123
+ Pgo8UmF0aW5nPjguNDwvUmF0aW5nPgo8U2Vhc29uTnVtYmVyPjI8L1NlYXNv
124
+ bk51bWJlcj4KPExhbmd1YWdlPmVuPC9MYW5ndWFnZT4KPC9FcGlzb2RlPjwv
125
+ RGF0YT4K
126
+ http_version:
127
+ recorded_at: Thu, 20 Dec 2012 10:51:37 GMT
128
+ recorded_with: VCR 2.3.0
@@ -0,0 +1,411 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.thetvdb.com/api//GetSeries.php?seriesname=Game%20of%20Thrones
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - ! '*/*'
12
+ User-Agent:
13
+ - Ruby
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Server:
20
+ - cloudflare-nginx
21
+ Date:
22
+ - Thu, 20 Dec 2012 10:48:58 GMT
23
+ Content-Type:
24
+ - text/xml; charset=utf-8
25
+ Transfer-Encoding:
26
+ - chunked
27
+ Connection:
28
+ - keep-alive
29
+ X-Powered-By:
30
+ - PHP/5.2.6-1+lenny16
31
+ Cache-Control:
32
+ - max-age=900
33
+ Expires:
34
+ - Thu, 20 Dec 2012 11:03:58 GMT
35
+ Vary:
36
+ - User-Agent,Accept-Encoding
37
+ Set-Cookie:
38
+ - __cfduid=d665a8c3de7f0bd80bb3998702e5398191356000537; expires=Mon, 23-Dec-2019
39
+ 23:50:00 GMT; path=/; domain=.thetvdb.com
40
+ Cf-Ray:
41
+ - cc984309ab1b4190
42
+ body:
43
+ encoding: US-ASCII
44
+ string: ! '<?xml version="1.0" encoding="UTF-8" ?>
45
+
46
+ <Data>
47
+
48
+ <Series>
49
+
50
+ <seriesid>121361</seriesid>
51
+
52
+ <language>en</language>
53
+
54
+ <SeriesName>Game of Thrones</SeriesName>
55
+
56
+ <banner>graphical/121361-g26.jpg</banner>
57
+
58
+ <Overview>Based on the fantasy novel series "A Song of Ice and Fire," Game
59
+ of Thrones explores the story of an epic battle among seven kingdoms and two
60
+ ruling families in the only game that matters - the Game of Thrones. All seek
61
+ control of the Iron Throne, the possession of which ensures survival through
62
+ the 40-year winter to come.</Overview>
63
+
64
+ <FirstAired>2011-04-17</FirstAired>
65
+
66
+ <IMDB_ID>tt0944947</IMDB_ID>
67
+
68
+ <zap2it_id>SH01389809</zap2it_id>
69
+
70
+ <id>121361</id>
71
+
72
+ </Series>
73
+
74
+ </Data>'
75
+ http_version:
76
+ recorded_at: Thu, 20 Dec 2012 10:48:58 GMT
77
+ - request:
78
+ method: get
79
+ uri: http://thetvdb.com/api/A4EF663990171DE4/series/121361/all/en.zip
80
+ body:
81
+ encoding: US-ASCII
82
+ string: ''
83
+ headers:
84
+ Accept:
85
+ - ! '*/*'
86
+ User-Agent:
87
+ - Ruby
88
+ response:
89
+ status:
90
+ code: 200
91
+ message: !binary |-
92
+ T0s=
93
+ headers:
94
+ !binary "U2VydmVy":
95
+ - !binary |-
96
+ Y2xvdWRmbGFyZS1uZ2lueA==
97
+ !binary "RGF0ZQ==":
98
+ - !binary |-
99
+ VGh1LCAyMCBEZWMgMjAxMiAxMDo0ODo1OCBHTVQ=
100
+ !binary "Q29udGVudC1UeXBl":
101
+ - !binary |-
102
+ YXBwbGljYXRpb24vemlw
103
+ !binary "Q29udGVudC1MZW5ndGg=":
104
+ - !binary |-
105
+ MTI0MjE=
106
+ !binary "Q29ubmVjdGlvbg==":
107
+ - !binary |-
108
+ a2VlcC1hbGl2ZQ==
109
+ !binary "TGFzdC1Nb2RpZmllZA==":
110
+ - !binary |-
111
+ VGh1LCAyMCBEZWMgMjAxMiAwMDozMTo0MiBHTVQ=
112
+ !binary "RXhwaXJlcw==":
113
+ - !binary |-
114
+ VGh1LCAyMCBEZWMgMjAxMiAxMTowMzo1OCBHTVQ=
115
+ !binary "Q2FjaGUtQ29udHJvbA==":
116
+ - !binary |-
117
+ bWF4LWFnZT05MDA=
118
+ !binary "QWNjZXB0LVJhbmdlcw==":
119
+ - !binary |-
120
+ Ynl0ZXM=
121
+ !binary "U2V0LUNvb2tpZQ==":
122
+ - !binary |-
123
+ X19jZmR1aWQ9ZGY4OTFhYzI5YjE0Y2FjNTFhNGYwM2I5OThjYjEzNGJjMTM1
124
+ NjAwMDUzODsgZXhwaXJlcz1Nb24sIDIzLURlYy0yMDE5IDIzOjUwOjAwIEdN
125
+ VDsgcGF0aD0vOyBkb21haW49LnRoZXR2ZGIuY29t
126
+ !binary "Q2YtUmF5":
127
+ - !binary |-
128
+ NzM3ZTMwYWFlOGRlZDU0Yw==
129
+ body:
130
+ encoding: ASCII-8BIT
131
+ string: !binary |-
132
+ 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
284
+ PR+JLbb1kFkUCMSmy1HZ4kXfHrIRsCnMQzYoNl1H92rL8wXIie4QVtKDhYxh
285
+ adItj9rBUofKm4VRGw1TloKas4TVyxWm55XjqSJNPDdPS44JcPzsLtsXniz9
286
+ tV1iTu6InBFpl5tE76gYPlghf1ZYJESarAsuSSGLxYH0IVdWGWDbAoPxnCap
287
+ fA2CvBAOBeqG2pqZ7LkNQ5MkrtMN9Y4mjSt02pqZRkCTMDPT0LPij3R3Sqe8
288
+ amP34GliROm4wMIiyvRtR6JzVGN5rmElkM9WxL1Oc0mZ5lU4EjNV1WF0flhi
289
+ YltTb0RyxGJ0teD0Dxj+RbDJUHRm21ZoY3Ha0pI7bBjKnkd0MstcHeCf11B9
290
+ irppKC7SKEEcAEnamm/smQ1EktmoSDLv23wzApKEmW9qkORBpwYzsGKtcPo7
291
+ 2W8Qdcbarh4sOIIeXfPrCT2mybR9xIeTCrpkp6r2EZ+LTfioOty+j4+kJPSx
292
+ Sqis1d4QOvRqg359uV88b1qzU3Pe25rsJq1tIHKkAg967Xqr3g9643qr1jaQ
293
+ MbTGYTaQIUnDF2VUHt3TJ2e9N2mzyjjABxKzAbpz+TGZxLNJB7JgjzskZhJt
294
+ oJzjAok+eyWyqw8Sai5DwmVmrPtXbnefqlOpya4L10Qu07xwqy5sQ5u5gmgE
295
+ mCgUdrMfZ+MgkHhBdc8NfYa3W00PYST3hzMyzl80kFfpU3nCWrihssq0/WG8
296
+ DBhBjFL1cDukim2kfybdk6HQaTZ2/zZu7YYQMAiDqOlsNEHVVXIxb+zfTlrh
297
+ U/J/XdBVW8PcXPdgdEiwkCv5z+/be/WgNWWfJr3ux/LHpPbETOPLZHZxUbcp
298
+ YDoHU+t2Yn5+p0r1yz9QSwMEFAAAAAgA8oOTQUH43aFdDAAA76YAAAsAFQBi
299
+ YW5uZXJzLnhtbFVUCQADaFzSUGhc0lBVeAQAAAAAAO1dW28buxF+z68I8syz
300
+ 5gzvgI8P0AP0qSiKNu1roSY6jotEDmznNAX2x5eU5UtWJJezXO7KhQMLkKyV
301
+ 4pmPM/PNhdzzX75/+fz29+3N7dX17ud30PF3b7e7D9cfr3aXP7/7+/s//mTf
302
+ vf3l4s35Hza7nb/q8dnFm7dvz68+XlhltbDnZ/5p+M39m3/Z3H26+G2z29zc
303
+ nV3fXF1e7TafzwBBaPgJVPfvr5fnZ8+ufPrg+/9+3R4++HDF/lc/XoEX4JB/
304
+ B27586twf9mv15+v/d/ZI9cMgTNE7NGw/U9vFLOcWd2fnx2uCx/502Z3+W1z
305
+ ub3Y7s7PHl+Ed/66ufOKuDAdSinPzw4vn9759frb7u5Cqoe37l+H9/+2vbna
306
+ 3v558yXI8/l2e3727Dfhgvefvn35125z9Xmvgn9+2Hz4tD0b0dmPnwnf8o+r
307
+ y9327m77XOO/H343/PQP17550NwxolqKIGw5om4hRJVkqBQDZ3urmePMgYcZ
308
+ GFjLgDsyqCCsS4IqdGtQXRWojgSq45wboIAqFwIVkYHx+AnRK8OEY+h6kMID
309
+ KpgxREx1Zy2mDRVMa0xlFaaShKnhXDgKpktBypHdP2SPwPY/vfMGi975EgFV
310
+ nUDOk4Bi3vPe3Xyrw7MKThqaVnOOmmKheg440fLvBjNocubx6wWTzPZSMseo
311
+ Nukh5MakIWzuZ3WVTWpy8HQUOrQMiKg8iOEhXY/etzoG2j/x8dS/QqBDisbY
312
+ tJu1jSGtQpQGaHCypMAplgEULUPhfaxQPXhKpD0J6g0wT3CNpaOpHU410Gof
313
+ K2rAFDTrtBYMEsBEvkzI9ByWeS4bYPSB0v+N3jg9E4IQRFUCzt9uknD6f0k4
314
+ XWPbfFDZNDwfPl3ubrkjAWqXylUUOzz6YKbeWr2hBteLPpBKsoV6+p5mQYCt
315
+ MbVVmFpaqgJKo6AQoVlcbgGmPitBYffmqUPW6cHswRhmNKP73CyiojUnqnK6
316
+ QPO6DriWFGYrljFSGmKys0KIJGKtWayoMkFBM0HrLVCRqgW4kAlCKOqZEBlD
317
+ agn3bjWETZ+aSKpb9ZB6/rRitQCrrBBJmGrrLCdhuhSk6kB0zFNqAiCZ9xqh
318
+ CJTA9OM2hanR0wsGM2BaBSk1NZEkRGepvI+mJmA5u39gLznb//TAjQfTUx9q
319
+ qunxzLldaI1nVeWdVnh3XDlwFDK7jNclAwYyDVhrn4pVPhVpPjVYIFIs0CxV
320
+ VPc+VfhQKT1BtXumavsQIsHIfeykQqq1TlfwmtugqYHUkJkPLUouVCFAdB7S
321
+ kID46IjMw+gBRbZPKcmtL9kpm3OqrfNJqKoRAK1G4LhDTXGrYhnmQ4VM5hLG
322
+ 1iYoqniNoBGbUNWxFCPEhbgq6FBq9bRUQx/s0TEBvbJMGabpTjULKPDWgbIK
323
+ UaQhurdBRUF0mV4lFTJc0waxqhuJ1HakjzgUrwmzFG3GGx9CBVrj834MQyAG
324
+ mLQ9cnc/RCDp6UUW0uZWCFVlHSBWVr0VOspkjz7NSLiqFeoqv6kn+E1KLXyZ
325
+ UawXBVjVmBV1ysqhoRiYmqX9//+Fl6rq7itae39vYIZCTJZK4UNtm3PmcJ/N
326
+ +0/46Ab3fUVh5o90zclLVRKPtCx+b4eUjpM6zY7TunZYRU0UseMUUj6SHS41
327
+ Ri4NOzx6KfbzqYFv8n0pDQTdCrnR6aFjaN34xap6NpInybmlhENcrJPvnev9
328
+ o+dMMOwNMufxBGofX45MZjTP4qsa+Ugcn1IagVQcXaqHGBJCCT4yul4xyVwP
329
+ ChiEuAnUiWPRWZvZFtB6fArqGoj0QhspIcTFtno8jE+JXjmmkAntUQ5NxVCB
330
+ ozb6RWfWtdKqHARpSUiYWNWk6ulChRsfOpF7UuuR9DYqVQ/aE1kBExoYolOe
331
+ 46W7/PkGRvXIal2PkU5lSQPlS42samBSsv38sQtdfhFGciDszvLcaAKgOQuV
332
+ rYs6VQ0pTR1aRSTtEYBZcs6CTQLy4HTDvIZPPb2r5WGHnSdGSvtwSg+lkO0b
333
+ N28zVuWcQM85OWUUWS6TwdAgw3yrv3V6IqvSE0mdt3EIlOKqOsVy+MqIqSq+
334
+ qsjlcAEUGzvFsg52IjfR1hqwqqoOud8kSIPf6jRd4qqj+qpuApHsEsFRynBy
335
+ Gbb5ohCTVWRSkqebgEQm5SkGMVgZsaogJslBDEiTFfIUx3zXRqwqBZfkHBws
336
+ xcbEMk3CF4WYqErGBDkZo51ho05x3mxlxFTVvJmizZvtbYwyIShOkSuubWNV
337
+ XFHQ0+cga3kcW6a796IQk1X9O0nciBsKHqQDg05xnGxtxKp6OZI+UEbqoOtX
338
+ rpjUycTiPr1fAyTm8YpYUicTmQcdMU4pA8tTHNpc2ytWDW1K8tAmkA6+E69x
339
+ LKmTiVyRHMeAFMfEaz6W1MlExMj5GJJaLeoUK8Frx7GqSrCiV4ItJY6J13ws
340
+ qZOJNkbOx8CSDkZ6ZR5JnUxEjMw8BFD6Y+LVKyZ1MhExslcUklK7V69cMamT
341
+ iXGMxhWtEDrO7r9e395tb24fs4YxoO6vzwKlbcCJR3AaxcR2XNr0IbgSBqBk
342
+ lqhnWlGqNRB4NF63Fdh0LrcIcThFnUbYoVBRpjIQePxkx9YSC20zx8kPNwPk
343
+ ZrJl/BThocRrC4xWZSY2h3O46TUttMBoO2co8GirtLXE+Q08xWvaoizyWqPh
344
+ pa28ujOKMGidljcc0loi72ibrrm8pPPjsgLLEoFHOXprgTEHMAwPKs36rPgp
345
+ PAOBRwvYL0Rg66zBKFUc+qyV17TqlFI6KXFxVNofh17kpFcOSyLvtIa3G8gL
346
+ HC1DDgUeTdvaCoxzCezA6GiPfijwykaM+f0/5TasrI6PQw4EXpl2QJ5LH+1I
347
+ TBMt0ImTtYYIr5wujaSww71AWYFVdHxyIPDo7P8LkTe0J0vkHb8f0AsROKQO
348
+ 0aroUOCVEU6KSkiEtVbReHS73dxe7x5F5eMk6/4TWVmPLymFluexjd7vJ/xf
349
+ QRWHZ9n6B4+3mgZaGK0GtNSBGzkEN7qZcS+5KNCBXwkqzkwGOlh1HdhO7Y8j
350
+ K62HPOkAS3UQ9XQDHRTkWC21YDoNLuPohjWDJy1AkRacwBIt4HgBtK0WJNp0
351
+ EhI955uwFKSJB72jpTCai7VVAhrMOIXqpSDjVOcoPKy8FOjdieLo4Bk9xm8H
352
+ dLQUVo0PunP0GxWULwXr11mU5h9pYdUIoTtNPrOsWAmOy8TBCUeucbTK2lIJ
353
+ Izd3it4qqNg1Gs51fIh76BTWVMHILQPqXMJ+HUS78EfGMJrmt1VCdh3UGoPg
354
+ 8Q7LkTGs6hFGlJBeCSXGEJQQL8ofKeFlroRSJcQT5iMlrBohxVSfUMYYnShK
355
+ pXEZxvgpcX8qMTVAFiuhjCstEiBnV0KJYwwBMn5TnqES1jWGrEdIZ9JliYNx
356
+ 8VHQo3UwWkObZR18m1T1T5dUyiizhfghwEdKWCR7St2vd8p5MDSWUEKVcN2a
357
+ ysiRHemVUBQgQVoV7YIdKWG88TeHFr7ezTfmR6EJKEvKrLiMU5ipj0CNkFqr
358
+ HGv+z9XH7fwZVPjWBnX3dHmpqLIS6q05B/lcF3PWFSZqw004I5LgKNGIXMh8
359
+ roz5aPRkVUyMGcW9iFzMeK6KE1gVE1VR5C40mmzx8QcTWVsVpimTECJxW/bL
360
+ m83XT1cfnsbFL7GAS4Rh9KwqHr92AceZlzqaTESkLqCRTaV2cwmNWsXPYokI
361
+ XeAAmgptZ5uz4DzODI6FhoLsuanQpjPGpPceQPGAmEOwIurrI1AXOLjGUpMK
362
+ SBmvLmy8VhSBuoAENhY622ctH8m3WopSqMc3XjSXWuQGIAl7TYLUUZIbkXpt
363
+ XxbayfOYNSCKaKcsInVBPXQWqT8mqoHE9nGu+uniaX5E6IIUtzHUpB5hfn2X
364
+ Ir02QdGd8VlW+bhEjpcnOoDHUq8dq3WnrcS00OWbyHz0ize7joVeWWbVSf00
365
+ 8XAsc7lNh0J2tGgV4SfrCy1lercgabNgHOe77fe7g7gzyBq+bZKYwsoMISnG
366
+ NsipCtfz2nxE5VPr8m1kwYjjO0GPhV7bXY/MsZTvMwreulDmteOyJN4qKi20
367
+ Ml7uMqGXYmCZe9ErmXHX5XHZpU5biLCRgomMWaROd6EB1Sy7ytDEJ7IiQi+V
368
+ Q6dbrn5hQlLo4dhuvsVcmlctVQ6c2GcuJtuOaxGfwjwWeqnVHb5iQhuNcDqF
369
+ l7mwWLJY2be1zAgyfuB7hHUuVSBKzQ/Ub0MKN9WJn5YeEXdtJjZF3MOz24v/
370
+ AVBLAwQUAAAACADyg5NBg+FF+Y8FAABHHAAACgAVAGFjdG9ycy54bWxVVAkA
371
+ A2hc0lBoXNJQVXgEAAAAAACtmdtyGjkQhu/9FCpf7F454MEcXEtIYYghNj6U
372
+ YePkss20GRmN5GiEyeSN9jn2xbY1jmtrkUTYEnfAT9V81erD35ruh++5YC+o
373
+ C67k+8Pjd/VDhnKuUi4X7w//nJ0fdQ7Zh95Btz83ShdvH3oHjHV52ks6J612
374
+ vVujj/aXTzkssAfVX2uv2run50W39irYv1xDjr1bNKjZkMuloN+7tepHq94p
375
+ gb1ZqQmGTUBKXtAfu7XqZ6tPlTY3OkXdo4f+++WgW/uJtYGXnNRPjgN4lebF
376
+ +5hzwYENBOilQzcElKjLgs1AL0CXKCP4OieN5kkwfKR5+S65YWPQdERGyU2+
377
+ CwrdVKq1l+p4R6pWqxk+1FbTS3UFvODI7rmg4OXFJldfl8CmhkLqJUt2ITtO
378
+ 6p164DxfNS/ZBCWwMUKK5SbVgDIf+S9ybVe29mmYjTQv2zVfKgFPbKDs44/u
379
+ QaSwcs4UcorsHiCT09N25zRwtJXmLwhRYsFG8IBiE+0Olhlo5UVq7IzU2YLU
380
+ 8cdNyUKxvlQ/uFOiXwiIfckUSDaE76qIhGtvgWt74W4UJdwgg2fBnfqcgeAF
381
+ sCvARek/yd3JWlvIWv7WAQap8c6XbtQmJWH1tS79DW13qlDrqLQt8+AzrBYZ
382
+ OAGjSNmkZ33MVSxaqNdWmh8NjKZw0XkJyHjqRO0MBDXckcbySZVRdK1WuDBJ
383
+ 89LdqYL6AhbCPc6vC82NwUikcGGS5kWitNeCusUQ5Nwz2tf8V5N9Z7hGEoZr
384
+ JP6uAQbsaJ/RRNhkuykyiAQKWY1K8wJdrAiH8keoFxuO/xKNNMiUveX/bTlH
385
+ ISIPtBEya5XmR1TUMTB/LtwcG6FMdWTWJ1uyPvFn/Uzl7F5AMc945hzjBXxD
386
+ yca/UyuJzK9kS/In/uQ/51IycmDo2J+J0kCesdR0hpFY4XlEmr/rayo3m2fX
387
+ wLXTYMcqVbGhCk8i0rxMQ5qRImXTVf5s3NR/S/rJas3jmn4rCc8j0rxsU05O
388
+ h13i0nrZTbRpBpFFmITHEGmBIswkO9OQCtfDTiFfU1bZhUTEFWOzET5H0vze
389
+ sMj//oudUXbNlWMOI71XsxE+O9K8PCM0Gc2YvjSZkk6s7lCKkp2BBpNhpJ1o
390
+ NsLnSNqWAUQNVencl/W0UtJyuY8+0Ww0ttA1/FmGWuXIzkUpnS5xppWMjVd4
391
+ YDcDA3u0phGjyEYj+emqi7kOTHOUpKtHWwEmi2EkFxisAKsFMi7Pgd1nKFzz
392
+ +pUybR/ukB4eTDar+fde2sPZYEVmS9I0zN2bjBdVsCnCWsWHLZhsVvMbRSBj
393
+ jeyFxtJYrQy6xh/tpkQOozrbfkH+jEdSBhPQav5RYPA5I0MxpFEA0km+qam8
394
+ 7F46SqddrwevXazmD6OSgloeG3PhLOdkOlJaq3QZ04btjU/Io1WaP27qOaM+
395
+ N1tp6fa5Kchi22XQ7mAhi1ZpgZWJ+uvVfABuiyMsckLst28rZf6YZWjzUqav
396
+ X9lA4KJKgCjekHerND8vn5OTtWtAmro1cqceHvYSyFDbq7TAfZ9esn6aOjP2
397
+ ktoNIzDUZj91QQjhS1LS/LMMaGsfCcTCvSO91ZyW01oFeqEeH6k/74001Agr
398
+ zUv6CbjdAN3DnZIBvqC9IWNXZBeUNJFooe5XaV60vnikIu4LD9zMxmoPo80+
399
+ PLQ3V5ofjKd2beY+sls05VsVT7gxAh/poFH/LOQzsHMlZt7Zm/lwvZDmRR6D
400
+ ps4zEapMN4k/82KHVwq7w4Uv70nz52ABMGdju+YbhPToXvNFZlyrRUGP7zaN
401
+ ZrhISAuUM9Ux1UGunI3/MgPBhlotIm6h7duDZMubhcSfhlfUnO2lDDunxdqz
402
+ mg3AIJnp2JjZ9wedLe8WOn46sna0NKLrSj+mqR0prwVxjW8j7v9Tvn4oev8A
403
+ UEsBAhcDFAAAAAgA9YOTQV4sZcsDHQAAWosAAAYADQAAAAAAAQAAAP+BAAAA
404
+ AGVuLnhtbFVUBQADblzSUFV4AABQSwECFwMUAAAACADyg5NBQfjdoV0MAADv
405
+ pgAACwANAAAAAAABAAAA/4E8HQAAYmFubmVycy54bWxVVAUAA2hc0lBVeAAA
406
+ UEsBAhcDFAAAAAgA8oOTQYPhRfmPBQAARxwAAAoADQAAAAAAAQAAAP+B1ykA
407
+ AGFjdG9ycy54bWxVVAUAA2hc0lBVeAAAUEsFBgAAAAADAAMAzAAAAKMvAAAA
408
+ AA==
409
+ http_version:
410
+ recorded_at: Thu, 20 Dec 2012 10:48:59 GMT
411
+ recorded_with: VCR 2.3.0
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+
3
+ require (File.expand_path('./../../../spec_helper', __FILE__))
4
+ # For Ruby > 1.9.3, use this instead of require
5
+ # require_relative '../../spec_helper'
6
+
7
+ describe TheTvdb::Episode do
8
+
9
+ before do
10
+ VCR.insert_cassette 'episodes', record: :new_episodes
11
+ end
12
+
13
+ after do
14
+ VCR.eject_cassette
15
+ end
16
+
17
+ describe "find" do
18
+
19
+ let(:episode) { TheTvdb::Episode.find(4245778) }
20
+
21
+ it "should return all the info of the episode" do
22
+ episode.name.should == 'Blackwater'
23
+ episode.number.should == 9
24
+ episode.aired_at.should == Date.parse('2012-05-28')
25
+ episode.description.should == "Tyrion and the Lannisters fight for their lives as Stannis’ fleet assaults King’s Landing."
26
+ end
27
+
28
+ end
29
+
30
+ end
@@ -0,0 +1,42 @@
1
+ require (File.expand_path('./../../../spec_helper', __FILE__))
2
+ # For Ruby > 1.9.3, use this instead of require
3
+ # require_relative '../../spec_helper'
4
+
5
+ describe TheTvdb::Show do
6
+
7
+ before do
8
+ VCR.insert_cassette 'shows', record: :new_episodes
9
+ end
10
+
11
+ after do
12
+ VCR.eject_cassette
13
+ end
14
+
15
+ describe "search" do
16
+
17
+ let(:shows) { TheTvdb::Show.search('Game of Thrones') }
18
+ let(:show) { shows.first }
19
+
20
+ it "should return related series when searching for a show name" do
21
+ shows.size.should be(1)
22
+ show.name.should == 'Game of Thrones'
23
+ show.remote_id.should == 121361
24
+ description = 'Based on the fantasy novel series "A Song of Ice and Fire," Game of Thrones explores the story of an epic battle among seven kingdoms and two ruling families in the only game that matters - the Game of Thrones. All seek control of the Iron Throne, the possession of which ensures survival through the 40-year winter to come.'
25
+ show.description.should == description
26
+ end
27
+
28
+ end
29
+
30
+ describe "find" do
31
+
32
+ let(:show) { TheTvdb::Show.find(121361) }
33
+ let(:episode) { show.episodes[24] }
34
+
35
+ it "should return info and episodes when looking up a show id" do
36
+ show.should have(27).episodes
37
+ episode.name.should == 'Blackwater'
38
+ end
39
+
40
+ end
41
+
42
+ end
@@ -0,0 +1,14 @@
1
+ require_relative '../lib/the_tvdb'
2
+ # For Ruby < 1.9.3, use this instead of require_relative
3
+ # require(File.expand_path('../../lib/dish', __FILE__))
4
+
5
+ #require 'rspec'
6
+ require 'rspec/autorun'
7
+ require 'webmock/rspec'
8
+ require 'vcr'
9
+
10
+ #VCR config
11
+ VCR.configure do |config|
12
+ config.cassette_library_dir = 'spec/fixtures/tvdb_cassettes'
13
+ config.hook_into :webmock
14
+ end
data/the_tvdb.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'the_tvdb/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "the_tvdb"
8
+ gem.version = TheTvdb::VERSION
9
+ gem.authors = ["Alessandro Mencarini"]
10
+ gem.email = ["a.mencarini@freegoweb.it"]
11
+ gem.description = %q{A TheTVDB API wrapper}
12
+ gem.summary = %q{Allows to simplify the usage of TheTVDB API, making more RESTful oriented calls}
13
+ gem.homepage = "https://github.com/freego/the_tvdb"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+
21
+ #gem.add_dependency("httparty")
22
+ gem.add_dependency("nokogiri")
23
+ gem.add_dependency("rubyzip")
24
+ gem.add_dependency("activesupport")
25
+
26
+ end
27
+
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: the_tvdb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Alessandro Mencarini
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-20 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rubyzip
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: activesupport
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: A TheTVDB API wrapper
63
+ email:
64
+ - a.mencarini@freegoweb.it
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - .gitignore
70
+ - Gemfile
71
+ - LICENSE.txt
72
+ - README.md
73
+ - Rakefile
74
+ - lib/the_tvdb.rb
75
+ - lib/the_tvdb/configuration.rb
76
+ - lib/the_tvdb/episode.rb
77
+ - lib/the_tvdb/gateway.rb
78
+ - lib/the_tvdb/show.rb
79
+ - lib/the_tvdb/version.rb
80
+ - spec/fixtures/tvdb_cassettes/episodes.yml
81
+ - spec/fixtures/tvdb_cassettes/shows.yml
82
+ - spec/lib/the_tvdb/episode_spec.rb
83
+ - spec/lib/the_tvdb/show_spec.rb
84
+ - spec/spec_helper.rb
85
+ - the_tvdb.gemspec
86
+ homepage: https://github.com/freego/the_tvdb
87
+ licenses: []
88
+ post_install_message:
89
+ rdoc_options: []
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ! '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ requirements: []
105
+ rubyforge_project:
106
+ rubygems_version: 1.8.24
107
+ signing_key:
108
+ specification_version: 3
109
+ summary: Allows to simplify the usage of TheTVDB API, making more RESTful oriented
110
+ calls
111
+ test_files:
112
+ - spec/fixtures/tvdb_cassettes/episodes.yml
113
+ - spec/fixtures/tvdb_cassettes/shows.yml
114
+ - spec/lib/the_tvdb/episode_spec.rb
115
+ - spec/lib/the_tvdb/show_spec.rb
116
+ - spec/spec_helper.rb