filmbuff 0.1.6 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +3 -2
- data/.travis.yml +10 -0
- data/{History → CHANGES} +18 -0
- data/Gemfile +6 -1
- data/Guardfile +6 -0
- data/LICENSE +1 -1
- data/README.md +114 -36
- data/Rakefile +10 -0
- data/filmbuff.gemspec +24 -17
- data/lib/filmbuff.rb +108 -5
- data/lib/filmbuff/title.rb +59 -16
- data/lib/filmbuff/version.rb +3 -2
- data/test/filmbuff/test_filmbuff_title.rb +65 -0
- data/test/test_filmbuff.rb +179 -0
- data/test/test_helper.rb +11 -0
- metadata +105 -42
- data/lib/filmbuff/imdb.rb +0 -42
- data/spec/filmbuff/imdb_spec.rb +0 -27
- data/spec/filmbuff/title_spec.rb +0 -114
- data/spec/filmbuff_spec.rb +0 -0
- data/spec/spec_helper.rb +0 -1
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0835d52418eba19073d416952ffa7a71319f22b9
|
4
|
+
data.tar.gz: 60bec3177b930f361f2748b6f34c78d4a6b74fa2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6d7acb437fa288d558443c67427a379c7aab193d92e1ed30b948dd49e6ed68106d07d2f8b8c9a6072cef7accb3ed94bf19b1aac69b2f03cc586009f5ffe8f1be
|
7
|
+
data.tar.gz: b24b15228ee313ee8bce26f111305796b459563030c9a4494fc1181a91069641d3084916c747271e495645f67640b873a582b190ff9e45db509fda08b3c483c3
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/{History → CHANGES}
RENAMED
@@ -1,3 +1,21 @@
|
|
1
|
+
=== 1.0.0 / 2015-08-25
|
2
|
+
|
3
|
+
* 1 major enhancement
|
4
|
+
|
5
|
+
* Incompatible with older versions of Film Buff!
|
6
|
+
* Now requires Ruby 2.0.0 or newer because of the use of keyword arguments.
|
7
|
+
* Film Buff is no longer a module, but a class. Use it by creating an
|
8
|
+
instance with `imdb = FilmBuff.new`
|
9
|
+
* `find_by_id` is now called `look_up_id`
|
10
|
+
* `find_by_title` is now called `search_for_title`
|
11
|
+
* `search_for_title` now returns an array with results.
|
12
|
+
|
13
|
+
* 1 minor enhancement
|
14
|
+
|
15
|
+
* http.rb has replaced HTTParty
|
16
|
+
* Implemented YARD documentation. It can be found at
|
17
|
+
http://rubydoc.info/gems/filmbuff/frames
|
18
|
+
|
1
19
|
=== 0.1.6 / 2012-07-24
|
2
20
|
|
3
21
|
* 1 minor enhancement
|
data/Gemfile
CHANGED
data/Guardfile
ADDED
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,26 +1,35 @@
|
|
1
1
|
# Film Buff - A Ruby wrapper for IMDb's JSON API
|
2
2
|
|
3
|
+
[](https://rubygems.org/gems/filmbuff)
|
4
|
+
[](https://travis-ci.org/sachse/filmbuff)
|
5
|
+
[](https://gemnasium.com/sachse/filmbuff)
|
6
|
+
[](https://coveralls.io/r/sachse/filmbuff)
|
7
|
+
[](https://inch-ci.org/github/sachse/filmbuff/)
|
8
|
+
|
3
9
|
## Description
|
4
10
|
|
5
11
|
Film Buff provides a Ruby wrapper for IMDb's JSON API, which is the fastest and easiest way to get information from IMDb.
|
6
12
|
|
7
|
-
|
13
|
+
Film Buff supports IMDb's different locales, so information can be retrieved in different languages. See [Locales](#locales) for more information.
|
8
14
|
|
9
|
-
|
15
|
+
## Usage
|
10
16
|
|
11
|
-
|
17
|
+
Film Buff 1.0.x provides two ways to return information on a movie or TV show. First, set up an IMDb instance:
|
12
18
|
|
13
|
-
|
19
|
+
require 'filmbuff'
|
20
|
+
imdb = FilmBuff.new
|
14
21
|
|
15
|
-
###
|
22
|
+
### look_up_id
|
16
23
|
|
17
|
-
|
24
|
+
If you know the movie or TV show's IMDb ID you can return an object with the IMDb information:
|
18
25
|
|
19
|
-
|
26
|
+
movie = imdb.look_up_id('tt0032138')
|
20
27
|
|
21
|
-
|
28
|
+
movie.title => "The Wizard of Oz"
|
29
|
+
movie.rating => 8.2
|
30
|
+
movie.genres => ["Adventure", Family", "Fantasy", "Musical"]
|
22
31
|
|
23
|
-
Accessible
|
32
|
+
Accessible information for an object returned by `look_up_id` is:
|
24
33
|
|
25
34
|
- Title
|
26
35
|
- Tagline
|
@@ -33,37 +42,100 @@ Accessible title information is:
|
|
33
42
|
- Release date
|
34
43
|
- IMDb ID
|
35
44
|
|
36
|
-
###
|
45
|
+
### search_for_title
|
37
46
|
|
38
|
-
|
47
|
+
You can also search for a movie or TV show by its title. This will return an array with results from IMDb's search feature:
|
39
48
|
|
40
|
-
|
41
|
-
imdb = FilmBuff::IMDb.new
|
49
|
+
results = imdb.search_for_title('The Wizard of Oz')
|
42
50
|
|
43
|
-
|
51
|
+
results => [
|
52
|
+
{
|
53
|
+
:type => "title_popular",
|
54
|
+
:imdb_id => "tt0032138",
|
55
|
+
:title => "The Wizard of Oz",
|
56
|
+
:release_year => "1939"
|
57
|
+
},
|
44
58
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
59
|
+
{
|
60
|
+
:type => "title_exact",
|
61
|
+
:imdb_id => "tt0016544",
|
62
|
+
:title => "The Wizard of Oz",
|
63
|
+
:release_year => "1925"
|
64
|
+
},
|
50
65
|
|
51
|
-
|
66
|
+
{
|
67
|
+
:type=>"title_exact",
|
68
|
+
:imdb_id=>"tt0001463",
|
69
|
+
:title=>"The Wonderful Wizard of Oz",
|
70
|
+
:release_year=>"1910"
|
71
|
+
},
|
52
72
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
73
|
+
etc.
|
74
|
+
|
75
|
+
]
|
76
|
+
|
77
|
+
### Configuration
|
78
|
+
|
79
|
+
When initializing a new `FilmBuff` instance keyword arguments can passed to change default behaviours:
|
80
|
+
|
81
|
+
- SSL is used by default when communicating with IMDb but it can be turned off by setting `ssl` to false.
|
82
|
+
- Locale defaults to `en_US` but this behaviour can be changed by passing `locale` with a different value. Locale can also be changed as necessary during runtime. See [Locales](#locales) for more information.
|
83
|
+
|
84
|
+
`search_for_title` also takes keyword arguments that can be used to change the default behaviours on a per search basis.
|
85
|
+
|
86
|
+
- `limit` limits the amount of results returned.
|
87
|
+
- `types` decides the types of titles IMDb will search. Valid settings are:
|
88
|
+
- title_popular
|
89
|
+
- title_exact
|
90
|
+
- title_approx
|
91
|
+
- title_substring
|
58
92
|
|
59
|
-
|
93
|
+
#### Examples
|
60
94
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
95
|
+
Return only 2 results:
|
96
|
+
|
97
|
+
results = imdb.search_for_title('The Wizard of Oz', limit: 2)
|
98
|
+
|
99
|
+
results => [
|
100
|
+
{
|
101
|
+
:type => "title_popular",
|
102
|
+
:imdb_id => "tt0032138",
|
103
|
+
:title => "The Wizard of Oz",
|
104
|
+
:release_year => "1939"
|
105
|
+
},
|
106
|
+
|
107
|
+
{
|
108
|
+
:type => "title_exact",
|
109
|
+
:imdb_id => "tt0016544",
|
110
|
+
:title => "The Wizard of Oz",
|
111
|
+
:release_year => "1925"
|
112
|
+
}
|
113
|
+
]
|
114
|
+
|
115
|
+
|
116
|
+
Only return popular results related to the title provided:
|
117
|
+
|
118
|
+
result = imdb.search_for_title('The Wizard of Oz', types: %w(title_popular))
|
119
|
+
|
120
|
+
result => [
|
121
|
+
{
|
122
|
+
:type => "title_popular",
|
123
|
+
:imdb_id => "tt0032138",
|
124
|
+
:title => "The Wizard of Oz",
|
125
|
+
:release_year => "1939"
|
126
|
+
}
|
127
|
+
]
|
128
|
+
|
129
|
+
#### Locales
|
130
|
+
|
131
|
+
To retrieve information in a different language, either pass locale as as keyword argument when setting up an instance of `imdb` or set the instance variable `locale` to your wanted locale once the instance has already been created:
|
132
|
+
|
133
|
+
imdb.locale = 'fr_FR'
|
134
|
+
movie = imdb.look_up_id('tt0032138')
|
135
|
+
|
136
|
+
movie.title => "Le magicien d'Oz"
|
137
|
+
movie.rating => 8.2
|
138
|
+
movie.genres => ["Aventure", "Famille", "Fantasy", "Musical"]
|
67
139
|
|
68
140
|
Supported locales are
|
69
141
|
|
@@ -74,14 +146,20 @@ Supported locales are
|
|
74
146
|
- it_IT (Italian)
|
75
147
|
- pt_PT (Portuguese)
|
76
148
|
|
149
|
+
## Links
|
150
|
+
|
151
|
+
- [Public git repository](https://github.com/sachse/filmbuff)
|
152
|
+
- [Online documentation](http://rubydoc.info/gems/filmbuff/frames)
|
153
|
+
- [Issue tracker](https://github.com/sachse/filmbuff/issues)
|
154
|
+
- [Film Buff on RubyGems](https://rubygems.org/gems/filmbuff)
|
155
|
+
|
77
156
|
## Authors
|
78
157
|
|
79
|
-
|
158
|
+
- [Kristoffer Sachse](https://github.com/sachse)
|
80
159
|
|
81
160
|
## Contribute
|
82
161
|
|
83
|
-
|
84
|
-
a pull request to me. I'll gladly consider any help or ideas.
|
162
|
+
You can contribute either with code by forking the project, implementing your changes in its own branch, and sending a pull request, or you can report issues and ideas for changes [on the issues page](https://github.com/sachse/filmbuff/issues).
|
85
163
|
|
86
164
|
### Contributors
|
87
|
-
- Jon Maddox
|
165
|
+
- [Jon Maddox](https://github.com/maddox) inspired the 0.1.0 rewrite through his imdb_party gem.
|
data/Rakefile
CHANGED
@@ -1,2 +1,12 @@
|
|
1
1
|
require 'bundler'
|
2
2
|
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
task :default => :test
|
5
|
+
|
6
|
+
require 'rake/testtask'
|
7
|
+
Rake::TestTask.new do |t|
|
8
|
+
t.libs = ['test', 'fixtures']
|
9
|
+
t.test_files = ['test/test_filmbuff.rb',
|
10
|
+
'test/filmbuff/test_filmbuff_title.rb'
|
11
|
+
]
|
12
|
+
end
|
data/filmbuff.gemspec
CHANGED
@@ -1,24 +1,31 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require "filmbuff/version"
|
1
|
+
$:.push File.expand_path('../lib', __FILE__)
|
2
|
+
require 'filmbuff/version'
|
4
3
|
|
5
4
|
Gem::Specification.new do |s|
|
6
|
-
s.name =
|
7
|
-
s.version =
|
8
|
-
s.
|
9
|
-
s.
|
10
|
-
s.
|
11
|
-
s.
|
12
|
-
s.
|
13
|
-
|
5
|
+
s.name = 'filmbuff'
|
6
|
+
s.version = FilmBuff::VERSION
|
7
|
+
s.authors = ['Kristoffer Sachse']
|
8
|
+
s.email = ['hello@kristoffer.is']
|
9
|
+
s.homepage = 'https://github.com/sachse/filmbuff'
|
10
|
+
s.summary = 'A Ruby wrapper for IMDb\'s JSON API'
|
11
|
+
s.description = 'Film Buff provides a Ruby wrapper for IMDb\'s JSON API, ' <<
|
12
|
+
'which is the fastest and easiest way to get information ' <<
|
13
|
+
'from IMDb.'
|
14
|
+
s.license = 'MIT'
|
14
15
|
|
15
|
-
s.
|
16
|
+
s.required_ruby_version = '>= 2.0.0'
|
16
17
|
|
17
|
-
s.add_dependency(
|
18
|
-
|
19
|
-
s.add_development_dependency(
|
18
|
+
s.add_dependency('http', '~> 0.9.3')
|
19
|
+
|
20
|
+
s.add_development_dependency('minitest', '>= 1.4.0')
|
21
|
+
s.add_development_dependency('vcr', '>= 2.4')
|
22
|
+
s.add_development_dependency('webmock')
|
23
|
+
s.add_development_dependency('yard', '>= 0.8.5.2')
|
24
|
+
s.add_development_dependency('kramdown')
|
25
|
+
s.add_development_dependency('rake')
|
26
|
+
s.add_development_dependency('coveralls')
|
20
27
|
|
21
28
|
s.files = `git ls-files`.split("\n")
|
22
|
-
s.test_files = `git ls-files -- {
|
23
|
-
s.require_paths = [
|
29
|
+
s.test_files = `git ls-files -- {test}/*`.split("\n")
|
30
|
+
s.require_paths = ['lib']
|
24
31
|
end
|
data/lib/filmbuff.rb
CHANGED
@@ -1,6 +1,109 @@
|
|
1
|
-
require '
|
2
|
-
require 'httparty-icebox'
|
1
|
+
require 'filmbuff/title'
|
3
2
|
|
4
|
-
|
5
|
-
require
|
6
|
-
|
3
|
+
require 'http'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
# Interacts with IMDb and is used to look up titles
|
7
|
+
class FilmBuff
|
8
|
+
class NotFound < StandardError; end
|
9
|
+
|
10
|
+
# @return [String] The locale currently used by the IMDb instance
|
11
|
+
attr_accessor :locale
|
12
|
+
|
13
|
+
# Create a new FilmBuff instance
|
14
|
+
#
|
15
|
+
# @param [String] locale
|
16
|
+
# The locale to search with. The FilmBuff instance will also return
|
17
|
+
# results in the language matching the given locale. Defaults to `en_US`
|
18
|
+
#
|
19
|
+
# @param [Boolean] ssl
|
20
|
+
# Whether or not to use SSL when searching by IMDb ID (IMDb does not
|
21
|
+
# currently support SSL when searching by title). Defaults to `true`
|
22
|
+
def initialize(locale = 'en_US', ssl: true)
|
23
|
+
@locale = locale
|
24
|
+
@protocol = ssl ? 'https' : 'http'
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def build_hash(type, value)
|
30
|
+
{
|
31
|
+
type: type,
|
32
|
+
imdb_id: value['id'],
|
33
|
+
title: value['title'],
|
34
|
+
release_year: value['description'][/\A\d{4}/]
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
public
|
39
|
+
|
40
|
+
# Looks up the title with the IMDb ID imdb_id and returns a
|
41
|
+
# FilmBuff::Title object with information on that title
|
42
|
+
#
|
43
|
+
# @param [String] imdb_id
|
44
|
+
# The IMDb ID for the title to look up
|
45
|
+
#
|
46
|
+
# @return [Title]
|
47
|
+
# The FilmBuff::Title object containing information on the title
|
48
|
+
#
|
49
|
+
# @example Basic usage
|
50
|
+
# movie = imdb_instance.look_up_id('tt0032138')
|
51
|
+
def look_up_id(imdb_id)
|
52
|
+
response = HTTP.get("#{@protocol}://app.imdb.com/title/maindetails", params: {
|
53
|
+
tconst: imdb_id, locale: @locale
|
54
|
+
})
|
55
|
+
|
56
|
+
if response.status != 200
|
57
|
+
fail NotFound
|
58
|
+
else
|
59
|
+
Title.new(response.parse['data'])
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# Searches IMDb for the title provided and returns an array with results
|
64
|
+
#
|
65
|
+
# @param [String] title The title to search for
|
66
|
+
#
|
67
|
+
# @param [Integer] limit The maximum number of results to return
|
68
|
+
#
|
69
|
+
# @param [Array] types The types of matches to search for.
|
70
|
+
# These types will be searched in the provided order. Can be
|
71
|
+
# `title_popular`, `title_exact`, `title_approx`, and `title_substring`
|
72
|
+
#
|
73
|
+
# @return [Array<Hash>] An array of hashes, each representing a search result
|
74
|
+
#
|
75
|
+
# @example Basic usage
|
76
|
+
# movie = imdb_instance.search_for_title('The Wizard of Oz')
|
77
|
+
#
|
78
|
+
# @example Return only 2 results
|
79
|
+
# movie = imdb_instance.search_for_title('The Wizard of Oz', limit: 2)
|
80
|
+
#
|
81
|
+
# @example Only return results containing the exact title provided
|
82
|
+
# movie = imdb_instance.search_for_title('The Wizard of Oz',
|
83
|
+
# types: %w(title_exact))
|
84
|
+
def search_for_title(title, limit: nil, types: %w(title_popular
|
85
|
+
title_exact
|
86
|
+
title_approx
|
87
|
+
title_substring))
|
88
|
+
response = JSON.parse(HTTP.get('http://www.imdb.com/xml/find', params: {
|
89
|
+
q: title,
|
90
|
+
json: '1'
|
91
|
+
}).to_s)
|
92
|
+
|
93
|
+
output = []
|
94
|
+
results = response.select { |type| types.include? type }
|
95
|
+
|
96
|
+
results.each_key do |type|
|
97
|
+
response[type].each do |hash|
|
98
|
+
break unless output.size < limit if limit
|
99
|
+
next unless hash['id'] && hash['title'] && hash['description']
|
100
|
+
|
101
|
+
output << build_hash(type, hash)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
fail NotFound if output.empty?
|
106
|
+
|
107
|
+
output
|
108
|
+
end
|
109
|
+
end
|
data/lib/filmbuff/title.rb
CHANGED
@@ -1,20 +1,63 @@
|
|
1
|
-
|
1
|
+
require 'date'
|
2
|
+
|
3
|
+
class FilmBuff
|
4
|
+
# Represents a single title from IMDb and contains all available data on it
|
2
5
|
class Title
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
6
|
+
# @return [String] The IMDb ID of Title
|
7
|
+
attr_reader :imdb_id
|
8
|
+
|
9
|
+
# @return [String] The title of Title
|
10
|
+
attr_reader :title
|
11
|
+
|
12
|
+
# @return [String] The tagline of Title
|
13
|
+
attr_reader :tagline
|
14
|
+
|
15
|
+
# @return [String] The plot summary of Title
|
16
|
+
attr_reader :plot
|
17
|
+
|
18
|
+
# @return [Integer] The runtime of Title in seconds
|
19
|
+
attr_reader :runtime
|
20
|
+
|
21
|
+
# @return [Float] The IMDb rating of Title
|
22
|
+
attr_reader :rating
|
23
|
+
|
24
|
+
# @return [Integer] The amount of votes that have been used to determine
|
25
|
+
# the rating of Title
|
26
|
+
attr_reader :votes
|
27
|
+
|
28
|
+
# @return [String] The URL for the poster of Title
|
29
|
+
attr_reader :poster_url
|
30
|
+
|
31
|
+
# @return [Array<String>] The genres of Title
|
32
|
+
attr_reader :genres
|
33
|
+
|
34
|
+
# @return [Date, String] The release date of Title. Returns a Date when
|
35
|
+
# possible, otherwise a String
|
36
|
+
attr_reader :release_date
|
37
|
+
|
38
|
+
# Create a new Title instance from an IMDb hash
|
39
|
+
#
|
40
|
+
# @param [Hash] imdb_hash
|
41
|
+
# The hash with IMDb information to create a Title instance from
|
42
|
+
def initialize(imdb_hash)
|
43
|
+
@imdb_id = imdb_hash['tconst']
|
44
|
+
@title = imdb_hash['title']
|
45
|
+
@tagline = imdb_hash['tagline'] if imdb_hash['tagline']
|
46
|
+
@plot = imdb_hash['plot']['outline'] if imdb_hash['plot']
|
47
|
+
@runtime = imdb_hash['runtime']['time'] if imdb_hash['runtime']
|
48
|
+
@rating = imdb_hash['rating']
|
49
|
+
@votes = imdb_hash['num_votes']
|
50
|
+
@poster_url = imdb_hash['image']['url'] if imdb_hash['image']
|
51
|
+
@genres = imdb_hash['genres'] || []
|
52
|
+
|
53
|
+
if imdb_hash['release_date']
|
54
|
+
begin
|
55
|
+
@release_date = Date.strptime(imdb_hash['release_date']['normal'],
|
56
|
+
'%Y-%m-%d')
|
57
|
+
rescue
|
58
|
+
@release_date = imdb_hash['release_date']['normal']
|
59
|
+
end
|
60
|
+
end
|
18
61
|
end
|
19
62
|
end
|
20
63
|
end
|
data/lib/filmbuff/version.rb
CHANGED
@@ -0,0 +1,65 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
describe FilmBuff::Title do
|
4
|
+
before do
|
5
|
+
@imdb = FilmBuff.new
|
6
|
+
|
7
|
+
VCR.use_cassette('The Wizard of Oz by ID') do
|
8
|
+
@title = @imdb.look_up_id('tt0032138')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'has an IMDb ID' do
|
13
|
+
assert_equal 'tt0032138', @title.imdb_id
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'has a title' do
|
17
|
+
assert_equal 'The Wizard of Oz', @title.title
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'has a tagline' do
|
21
|
+
assert_equal 'Mighty Miracle Show Of 1000 Delights !', @title.tagline
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'has a plot' do
|
25
|
+
assert_equal 'Dorothy Gale is swept away to a magical land in ' <<
|
26
|
+
'a tornado and embarks on a quest to see the Wizard who can help her ' <<
|
27
|
+
'return home.', @title.plot
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'has a runtime' do
|
31
|
+
assert_equal 6120, @title.runtime
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'has a rating' do
|
35
|
+
assert_instance_of Float, @title.rating
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'has an amount of votes' do
|
39
|
+
assert_instance_of Fixnum, @title.votes
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'has a poster URL' do
|
43
|
+
assert_match %r{\Ahttp://ia.media-imdb.com/images/.*/}, @title.poster_url
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'has genres' do
|
47
|
+
assert_equal %w(Adventure Family Fantasy Musical), @title.genres
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'has a release date' do
|
51
|
+
assert_equal Date.strptime('1939-08-25', '%Y-%m-%d'), @title.release_date
|
52
|
+
end
|
53
|
+
|
54
|
+
describe 'when looking up titles without a specific release date' do
|
55
|
+
before do
|
56
|
+
VCR.use_cassette('Rear Window by ID') do
|
57
|
+
@title = @imdb.look_up_id('tt0047396')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'falls back to the IMDb provided date' do
|
62
|
+
assert_equal '1954', @title.release_date
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,179 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
VCR.configure do |config|
|
4
|
+
config.cassette_library_dir = 'fixtures/vcr_cassettes'
|
5
|
+
config.hook_into :webmock
|
6
|
+
end
|
7
|
+
|
8
|
+
describe FilmBuff do
|
9
|
+
before do
|
10
|
+
@imdb = FilmBuff.new
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#look_up_id' do
|
14
|
+
it 'returns a Title' do
|
15
|
+
VCR.use_cassette('The Wizard of Oz by ID') do
|
16
|
+
@title = @imdb.look_up_id('tt0032138')
|
17
|
+
end
|
18
|
+
|
19
|
+
assert_instance_of FilmBuff::Title, @title
|
20
|
+
end
|
21
|
+
|
22
|
+
describe 'given a non-existent ID' do
|
23
|
+
it 'throws an exception' do
|
24
|
+
VCR.use_cassette('non-existent ID') do
|
25
|
+
assert_raises(FilmBuff::NotFound) do
|
26
|
+
@title = @imdb.look_up_id('tt9999999')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe 'given locale' do
|
33
|
+
describe 'de_DE' do
|
34
|
+
before do
|
35
|
+
@imdb.locale = 'de_DE'
|
36
|
+
|
37
|
+
VCR.use_cassette('The Wizard of Oz German') do
|
38
|
+
@title = @imdb.look_up_id('tt0032138')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'returns German information' do
|
43
|
+
assert_equal 'Der Zauberer von Oz', @title.title
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe 'en_US' do
|
48
|
+
before do
|
49
|
+
@imdb.locale = 'en_US'
|
50
|
+
|
51
|
+
VCR.use_cassette('The Wizard of Oz by ID') do
|
52
|
+
@title = @imdb.look_up_id('tt0032138')
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'returns English information' do
|
57
|
+
assert_equal 'The Wizard of Oz', @title.title
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe 'es_ES' do
|
62
|
+
before do
|
63
|
+
@imdb.locale = 'es_ES'
|
64
|
+
|
65
|
+
VCR.use_cassette('The Wizard of Oz Spanish') do
|
66
|
+
@title = @imdb.look_up_id('tt0032138')
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'returns Spanish information' do
|
71
|
+
assert_equal 'El mago de Oz', @title.title
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe 'fr_FR' do
|
76
|
+
before do
|
77
|
+
@imdb.locale = 'fr_FR'
|
78
|
+
|
79
|
+
VCR.use_cassette('The Wizard of Oz French') do
|
80
|
+
@title = @imdb.look_up_id('tt0032138')
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'returns French information' do
|
85
|
+
assert_equal 'Le magicien d\'Oz', @title.title
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe 'it_IT' do
|
90
|
+
before do
|
91
|
+
@imdb.locale = 'it_IT'
|
92
|
+
|
93
|
+
VCR.use_cassette('The Wizard of Oz Italian') do
|
94
|
+
@title = @imdb.look_up_id('tt0032138')
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'returns Italian information' do
|
99
|
+
assert_equal 'Il mago di Oz', @title.title
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
describe 'pt_PT' do
|
104
|
+
before do
|
105
|
+
@imdb.locale = 'pt_PT'
|
106
|
+
|
107
|
+
VCR.use_cassette('The Wizard of Oz Portugese') do
|
108
|
+
@title = @imdb.look_up_id('tt0032138')
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'returns Portugese information' do
|
113
|
+
assert_equal 'O Feiticeiro de Oz', @title.title
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe '#search_for_title' do
|
120
|
+
describe 'with default options' do
|
121
|
+
before do
|
122
|
+
VCR.use_cassette('The Wizard of Oz by title') do
|
123
|
+
@titles = @imdb.search_for_title('The Wizard of Oz')
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'returns an array of titles' do
|
128
|
+
assert_instance_of Array, @titles
|
129
|
+
end
|
130
|
+
|
131
|
+
describe 'given a non-existent title' do
|
132
|
+
it 'throws an exception' do
|
133
|
+
VCR.use_cassette('non-existent title') do
|
134
|
+
assert_raises(FilmBuff::NotFound) do
|
135
|
+
@title = @imdb.search_for_title('123456789012345678901234567890')
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
# describe 'given a title that redirects' do
|
142
|
+
# it 'follows the redirect and returns a Title object' do
|
143
|
+
# skip 'this still needs a title to test against'
|
144
|
+
|
145
|
+
# VCR.use_cassette('Redirecting title') do
|
146
|
+
# @title = @imdb.search_for_title('')
|
147
|
+
# end
|
148
|
+
|
149
|
+
# assert_instance_of FilmBuff::Title, @title
|
150
|
+
# end
|
151
|
+
# end
|
152
|
+
end
|
153
|
+
|
154
|
+
describe 'given a limit of 3' do
|
155
|
+
before do
|
156
|
+
VCR.use_cassette('The Wizard of Oz by title') do
|
157
|
+
@titles = @imdb.search_for_title('The Wizard of Oz', limit: 3)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
it 'returns 3 results' do
|
162
|
+
assert_equal 3, @titles.size
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
describe 'when only returning popular titles' do
|
167
|
+
before do
|
168
|
+
VCR.use_cassette('The Wizard of Oz by title') do
|
169
|
+
@title = @imdb.search_for_title('The Wizard of Oz',
|
170
|
+
types: %w(title_popular))
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
it 'returns the 1939 version' do
|
175
|
+
assert_equal '1939', @title.first[:release_year]
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
CHANGED
@@ -1,109 +1,172 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: filmbuff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Kristoffer Sachse
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-08-25 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
14
|
+
name: http
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
19
|
+
version: 0.9.3
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
26
|
+
version: 0.9.3
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
28
|
+
name: minitest
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
38
|
-
type: :
|
33
|
+
version: 1.4.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.4.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: vcr
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.4'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.4'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: webmock
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: yard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.8.5.2
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.8.5.2
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: kramdown
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rake
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
39
105
|
prerelease: false
|
40
106
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
107
|
requirements:
|
43
|
-
- -
|
108
|
+
- - ">="
|
44
109
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0
|
110
|
+
version: '0'
|
46
111
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
112
|
+
name: coveralls
|
48
113
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
114
|
requirements:
|
51
|
-
- -
|
115
|
+
- - ">="
|
52
116
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
117
|
+
version: '0'
|
54
118
|
type: :development
|
55
119
|
prerelease: false
|
56
120
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
121
|
requirements:
|
59
|
-
- -
|
122
|
+
- - ">="
|
60
123
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
124
|
+
version: '0'
|
62
125
|
description: Film Buff provides a Ruby wrapper for IMDb's JSON API, which is the fastest
|
63
126
|
and easiest way to get information from IMDb.
|
64
127
|
email:
|
65
|
-
- kristoffer
|
128
|
+
- hello@kristoffer.is
|
66
129
|
executables: []
|
67
130
|
extensions: []
|
68
131
|
extra_rdoc_files: []
|
69
132
|
files:
|
70
|
-
- .gitignore
|
133
|
+
- ".gitignore"
|
134
|
+
- ".travis.yml"
|
135
|
+
- CHANGES
|
71
136
|
- Gemfile
|
72
|
-
-
|
137
|
+
- Guardfile
|
73
138
|
- LICENSE
|
74
139
|
- README.md
|
75
140
|
- Rakefile
|
76
141
|
- filmbuff.gemspec
|
77
142
|
- lib/filmbuff.rb
|
78
|
-
- lib/filmbuff/imdb.rb
|
79
143
|
- lib/filmbuff/title.rb
|
80
144
|
- lib/filmbuff/version.rb
|
81
|
-
-
|
82
|
-
-
|
83
|
-
-
|
84
|
-
- spec/spec_helper.rb
|
145
|
+
- test/filmbuff/test_filmbuff_title.rb
|
146
|
+
- test/test_filmbuff.rb
|
147
|
+
- test/test_helper.rb
|
85
148
|
homepage: https://github.com/sachse/filmbuff
|
86
|
-
licenses:
|
149
|
+
licenses:
|
150
|
+
- MIT
|
151
|
+
metadata: {}
|
87
152
|
post_install_message:
|
88
153
|
rdoc_options: []
|
89
154
|
require_paths:
|
90
155
|
- lib
|
91
156
|
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
-
none: false
|
93
157
|
requirements:
|
94
|
-
- -
|
158
|
+
- - ">="
|
95
159
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
160
|
+
version: 2.0.0
|
97
161
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
|
-
none: false
|
99
162
|
requirements:
|
100
|
-
- -
|
163
|
+
- - ">="
|
101
164
|
- !ruby/object:Gem::Version
|
102
165
|
version: '0'
|
103
166
|
requirements: []
|
104
|
-
rubyforge_project:
|
105
|
-
rubygems_version:
|
167
|
+
rubyforge_project:
|
168
|
+
rubygems_version: 2.4.5
|
106
169
|
signing_key:
|
107
|
-
specification_version:
|
170
|
+
specification_version: 4
|
108
171
|
summary: A Ruby wrapper for IMDb's JSON API
|
109
172
|
test_files: []
|
data/lib/filmbuff/imdb.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
module FilmBuff
|
2
|
-
class IMDb
|
3
|
-
attr_accessor :locale
|
4
|
-
|
5
|
-
include HTTParty
|
6
|
-
include HTTParty::Icebox
|
7
|
-
cache :store => 'memory', :timeout => 120
|
8
|
-
|
9
|
-
base_uri 'app.imdb.com'
|
10
|
-
format :json
|
11
|
-
|
12
|
-
def initialize
|
13
|
-
@locale = "en_US"
|
14
|
-
end
|
15
|
-
|
16
|
-
public
|
17
|
-
def find_by_id(imdb_id)
|
18
|
-
result = self.class.get('/title/maindetails', :query => {
|
19
|
-
:tconst => imdb_id, :locale => @locale
|
20
|
-
}).parsed_response
|
21
|
-
Title.new(result["data"])
|
22
|
-
end
|
23
|
-
|
24
|
-
def find_by_title(title)
|
25
|
-
result = self.class.get('http://www.imdb.com/xml/find', :query => {
|
26
|
-
:q => title,
|
27
|
-
:json => '1',
|
28
|
-
:tt => 'on'
|
29
|
-
}).parsed_response
|
30
|
-
|
31
|
-
%w(title_popular title_exact title_approx title_substring).each do |key|
|
32
|
-
if result[key]
|
33
|
-
result[key].each do |row|
|
34
|
-
next unless row['id'] && row['title'] && row['description']
|
35
|
-
|
36
|
-
return self.find_by_id(row['id'])
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
data/spec/filmbuff/imdb_spec.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '../spec_helper'))
|
2
|
-
|
3
|
-
describe FilmBuff::IMDb do
|
4
|
-
before(:all) do
|
5
|
-
@imdb = FilmBuff::IMDb.new
|
6
|
-
end
|
7
|
-
|
8
|
-
describe "#find_by_id" do
|
9
|
-
before(:all) do
|
10
|
-
@title = @imdb.find_by_id("tt0032138")
|
11
|
-
end
|
12
|
-
|
13
|
-
it "returns a Title" do
|
14
|
-
@title.instance_of?(FilmBuff::Title).should be_true
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe "#find_by_title" do
|
19
|
-
before(:all) do
|
20
|
-
@title = @imdb.find_by_title("The Wizard of Oz")
|
21
|
-
end
|
22
|
-
|
23
|
-
it "returns a Title" do
|
24
|
-
@title.instance_of?(FilmBuff::Title).should be_true
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
data/spec/filmbuff/title_spec.rb
DELETED
@@ -1,114 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
require File.expand_path(File.join(File.dirname(__FILE__), '../spec_helper'))
|
3
|
-
|
4
|
-
describe FilmBuff::Title do
|
5
|
-
context "given no locale" do
|
6
|
-
before(:all) do
|
7
|
-
@imdb = FilmBuff::IMDb.new
|
8
|
-
@title = @imdb.find_by_id("tt0032138")
|
9
|
-
end
|
10
|
-
|
11
|
-
it "has an IMDb ID" do
|
12
|
-
@title.imdb_id.should == "tt0032138"
|
13
|
-
end
|
14
|
-
|
15
|
-
it "has a title" do
|
16
|
-
@title.title.should == "The Wizard of Oz"
|
17
|
-
end
|
18
|
-
|
19
|
-
it "has a tagline" do
|
20
|
-
@title.tagline.should == "Mighty Miracle Show Of 1000 Delights !"
|
21
|
-
end
|
22
|
-
|
23
|
-
it "has a plot" do
|
24
|
-
@title.plot.should == "Dorothy Gale is swept away to a magical land in" <<
|
25
|
-
" a tornado and embarks on a quest to see the Wizard who can help her " <<
|
26
|
-
"return home."
|
27
|
-
end
|
28
|
-
|
29
|
-
it "has a runtime" do
|
30
|
-
@title.runtime.should == 6060
|
31
|
-
end
|
32
|
-
|
33
|
-
it "has a rating" do
|
34
|
-
@title.rating.should be_a(Float)
|
35
|
-
end
|
36
|
-
|
37
|
-
it "has an amount of votes" do
|
38
|
-
@title.votes.should be_a(Integer)
|
39
|
-
end
|
40
|
-
|
41
|
-
it "has a poster URL" do
|
42
|
-
@title.poster_url.should match /http:\/\/ia.media-imdb.com\/images\/.*/
|
43
|
-
end
|
44
|
-
|
45
|
-
it "has genres" do
|
46
|
-
@title.genres.should == %w[ Adventure Family Fantasy Musical ]
|
47
|
-
end
|
48
|
-
|
49
|
-
it "has a release date" do
|
50
|
-
@title.release_date.should == Date.parse("1939-08-25")
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
context "given locale" do
|
55
|
-
before(:all) do
|
56
|
-
@imdb = FilmBuff::IMDb.new
|
57
|
-
end
|
58
|
-
|
59
|
-
context "\"de_DE\"" do
|
60
|
-
before(:all) do
|
61
|
-
@imdb.locale = "de_DE"
|
62
|
-
@title = @imdb.find_by_id("tt0032138")
|
63
|
-
end
|
64
|
-
|
65
|
-
it "returns German information" do
|
66
|
-
@title.title.should == "Das zauberhafte Land"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context "\"es_ES\"" do
|
71
|
-
before(:all) do
|
72
|
-
@imdb.locale = "es_ES"
|
73
|
-
@title = @imdb.find_by_id("tt0032138")
|
74
|
-
end
|
75
|
-
|
76
|
-
it "returns Spanish information" do
|
77
|
-
@title.title.should == "El mago de Oz"
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
context "\"fr_FR\"" do
|
82
|
-
before(:all) do
|
83
|
-
@imdb.locale = "fr_FR"
|
84
|
-
@title = @imdb.find_by_id("tt0032138")
|
85
|
-
end
|
86
|
-
|
87
|
-
it "returns French information" do
|
88
|
-
@title.title.should == "Le magicien d'Oz"
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
context "\"it_IT\"" do
|
93
|
-
before(:all) do
|
94
|
-
@imdb.locale = "it_IT"
|
95
|
-
@title = @imdb.find_by_id("tt0032138")
|
96
|
-
end
|
97
|
-
|
98
|
-
it "returns Italian information" do
|
99
|
-
@title.title.should == "Il mago di Oz"
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
context "\"pt_PT\"" do
|
104
|
-
before(:all) do
|
105
|
-
@imdb.locale = "pt_PT"
|
106
|
-
@title = @imdb.find_by_id("tt0032138")
|
107
|
-
end
|
108
|
-
|
109
|
-
it "returns Spanish information" do
|
110
|
-
@title.title.should == "O Feiticeiro de Oz"
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
data/spec/filmbuff_spec.rb
DELETED
File without changes
|
data/spec/spec_helper.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', 'lib', 'filmbuff')
|