omdbapi 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +47 -13
- data/lib/omdbapi/client.rb +28 -6
- data/lib/omdbapi/version.rb +1 -1
- data/omdbapi.gemspec +1 -1
- data/spec/omdbapi/client_spec.rb +39 -3
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 272ba0afa85cd815166b6a0b2d077f447d3b652e
|
4
|
+
data.tar.gz: 112b7114fc02de8a93b491c5e6cbef4f65308419
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb65226a4f6ce075f9ff299af4577393e20be45a363ab2cdaba50fd4ca03a05c17a0152c5e84b69212d91b9fc544f05875ef65756a98f97ba5c57d99792ca66f
|
7
|
+
data.tar.gz: fbbaad3014a8944a6ddd743e12872f1c3299563c1e004416ce16a166bbee40e37c821784321381b14c2f5a0970ed42ce97f0ae19053cc3bf361d3d37ef8aa1d4
|
data/README.md
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
# omdbapi
|
2
2
|
|
3
|
-
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/omdbapi.png)](http://badge.fury.io/rb/omdbapi)
|
4
|
+
|
5
|
+
This gem is a simple and easy to use wrapper for the [omdbapi.com](http://omdbapi.com/) API. This API allows you to pull almost any type of information about a show or movie, and uses information from IMDb.
|
6
|
+
|
7
|
+
## Documentation
|
8
|
+
|
9
|
+
The complete documentation for the gem can be viewed at [rdoc.info/gems/omdbapi/frames](http://rdoc.info/gems/omdbapi/frames).
|
4
10
|
|
5
11
|
## Installation
|
6
12
|
|
@@ -53,12 +59,39 @@ This function will return a Hash with the following information about the title:
|
|
53
59
|
:actors, :plot, :poster, :imdb_rating, :imdb_votes, :imdb_id, :type
|
54
60
|
```
|
55
61
|
|
62
|
+
You can also pass in the optional parameters for year or plot. Plot defaults to 'short', so the only other option is 'full'.
|
63
|
+
|
64
|
+
```ruby
|
65
|
+
OMDB.title('True Grit')
|
66
|
+
# => {:title=>"True Grit", :year=>"2010", :rated=>"PG-13"...
|
67
|
+
OMDB.title('True Grit', year: '1969')
|
68
|
+
# => {:title=>"True Grit", :year=>"1969", :rated=>"G"...
|
69
|
+
|
70
|
+
# Get the title with the full plot
|
71
|
+
OMDB.title('Breaking Bad', plot: 'full')
|
72
|
+
|
73
|
+
# Get the original Italian Job with the full plot
|
74
|
+
OMDB.title('The Italian Job', year: '1969', plot: 'full')
|
75
|
+
```
|
76
|
+
|
77
|
+
### IMDb ID
|
78
|
+
|
79
|
+
You can find a title by it's IMDb ID using the id method:
|
80
|
+
|
81
|
+
```ruby
|
82
|
+
lost = OMDB.id('tt0411008')
|
83
|
+
# => {:title=>"Lost", :year=>"2004", :rated=>"TV-14", :released=>"22 Sep 2004", :runtime=>"42 min", :genre=>"Adventure, Drama, Fantasy, Mystery, Sci-Fi, Thriller", :director=>"N/A", :writer=>"J.J. Abrams, Jeffrey Lieber", :actors=>"Matthew Fox, Jorge Garcia, Evangeline Lilly, Naveen Andrews", :plot=>"The survivors of a plane crash are forced to live with each other on a remote island, a dangerous new world that poses unique threats of its own.", :poster=>"http://ia.media-imdb.com/images/M/MV5BMjA3NzMyMzU1MV5BMl5BanBnXkFtZTcwNjc1ODUwMg@@._V1_SX300.jpg", :imdb_rating=>"8.3", :imdb_votes=>"160,182", :imdb_id=>"tt0411008", :type=>"series", :response=>"True"}
|
84
|
+
lost.released # => "22 Sep 2004"
|
85
|
+
lost.imdb_rating # => "8.3"
|
86
|
+
# etc...
|
87
|
+
```
|
88
|
+
|
56
89
|
### Search
|
57
90
|
|
58
|
-
You can find a title by using the
|
91
|
+
You can find a title by using the search method:
|
59
92
|
|
60
93
|
```ruby
|
61
|
-
results = OMDB.
|
94
|
+
results = OMDB.search('Star Wars')
|
62
95
|
# => [{:title=>"Star Wars", :year=>"1977", :imdb_id=>"tt0076759", :type=>"movie"}, {:title=>"Star Wars: Episode V - The Empire Strikes Back", :year=>"1980", :imdb_id=>"tt0080684", :type=>"movie"}, {:title=>"Star Wars: Episode VI - Return of the Jedi", :year=>"1983", :imdb_id=>"tt0086190", :type=>"movie"}, {:title=>"Star Wars: Episode I - The Phantom Menace", :year=>"1999", :imdb_id=>"tt0120915", :type=>"movie"}, {:title=>"Star Wars: Episode III - Revenge of the Sith", :year=>"2005", :imdb_id=>"tt0121766", :type=>"movie"}, {:title=>"Star Wars: Episode II - Attack of the Clones", :year=>"2002", :imdb_id=>"tt0121765", :type=>"movie"}, {:title=>"Star Wars: The Clone Wars", :year=>"2008", :imdb_id=>"tt1185834", :type=>"movie"}, {:title=>"Star Wars: Clone Wars", :year=>"2003", :imdb_id=>"tt0361243", :type=>"series"}, {:title=>"Star Wars: The Clone Wars", :year=>"2008", :imdb_id=>"tt0458290", :type=>"series"}, {:title=>"The Star Wars Holiday Special", :year=>"1978", :imdb_id=>"tt0193524", :type=>"movie"}]
|
63
96
|
results.each { |r| puts r.title }
|
64
97
|
# etc...
|
@@ -70,22 +103,23 @@ This method returns an Array of search results. Each search result is a Hash wit
|
|
70
103
|
:title, :year, :imdb_id, :type
|
71
104
|
```
|
72
105
|
|
73
|
-
|
106
|
+
If there is only a single search result, the title will be returned as a Hash with the full information, instead of the Array of shortened search results.
|
74
107
|
|
75
|
-
You can find a title by it's IMDb id using the id method:
|
76
|
-
|
77
|
-
```ruby
|
78
|
-
lost = OMDB.id('tt0411008')
|
79
|
-
# => {:title=>"Lost", :year=>"2004", :rated=>"TV-14", :released=>"22 Sep 2004", :runtime=>"42 min", :genre=>"Adventure, Drama, Fantasy, Mystery, Sci-Fi, Thriller", :director=>"N/A", :writer=>"J.J. Abrams, Jeffrey Lieber", :actors=>"Matthew Fox, Jorge Garcia, Evangeline Lilly, Naveen Andrews", :plot=>"The survivors of a plane crash are forced to live with each other on a remote island, a dangerous new world that poses unique threats of its own.", :poster=>"http://ia.media-imdb.com/images/M/MV5BMjA3NzMyMzU1MV5BMl5BanBnXkFtZTcwNjc1ODUwMg@@._V1_SX300.jpg", :imdb_rating=>"8.3", :imdb_votes=>"160,182", :imdb_id=>"tt0411008", :type=>"series", :response=>"True"}
|
80
|
-
lost.released # => "22 Sep 2004"
|
81
|
-
lost.imdb_rating # => "8.3"
|
82
|
-
# etc...
|
83
|
-
```
|
84
108
|
|
85
109
|
This method will return a Hash of the title's properties, exactly as the title method.
|
86
110
|
|
111
|
+
## Running the Tests
|
112
|
+
|
113
|
+
The test suite is written using RSpec, and can be run by issuing the following command from the root of the repository:
|
114
|
+
|
115
|
+
```bash
|
116
|
+
$ rspec spec
|
117
|
+
```
|
118
|
+
|
87
119
|
## Contributing
|
88
120
|
|
121
|
+
Please feel free to contribute to the project by following the options below.
|
122
|
+
|
89
123
|
1. Fork it
|
90
124
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
91
125
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
data/lib/omdbapi/client.rb
CHANGED
@@ -11,11 +11,13 @@ module OMDB
|
|
11
11
|
# Retrieves a movie or show based on its title.
|
12
12
|
#
|
13
13
|
# @param title [String] The title of the movie or show.
|
14
|
+
# @param options [Hash] Options for the title, plot or year.
|
14
15
|
# @return [Hash]
|
15
16
|
# @example
|
16
17
|
# OMDB.title('Game of Thrones')
|
17
|
-
def title(title,
|
18
|
-
|
18
|
+
def title(title, options={})
|
19
|
+
params = build_params(title, options)
|
20
|
+
get '/', params
|
19
21
|
end
|
20
22
|
|
21
23
|
|
@@ -29,17 +31,25 @@ module OMDB
|
|
29
31
|
return get '/', { i: imdb_id }
|
30
32
|
end
|
31
33
|
|
32
|
-
#
|
34
|
+
# Search for a movie by its title.
|
33
35
|
#
|
34
|
-
# @param title [String] The title of the movie or show to
|
36
|
+
# @param title [String] The title of the movie or show to search for.
|
35
37
|
# @return [Array, Hash]
|
36
38
|
# @example
|
37
39
|
# OMDB.find('Star Wars')
|
38
|
-
def
|
40
|
+
def search(title)
|
39
41
|
results = get '/', { s: title }
|
40
|
-
|
42
|
+
if results[:search]
|
43
|
+
# Return the title if there is only one result, otherwise return the seach results
|
44
|
+
search = results.search
|
45
|
+
search.size == 1 ? title(search[0].title) : search
|
46
|
+
else
|
47
|
+
results
|
48
|
+
end
|
41
49
|
end
|
42
50
|
|
51
|
+
alias_method :find, :search
|
52
|
+
|
43
53
|
private
|
44
54
|
|
45
55
|
# Performs a method on all hash keys.
|
@@ -57,6 +67,18 @@ module OMDB
|
|
57
67
|
end
|
58
68
|
end
|
59
69
|
|
70
|
+
# Build parameters for a request.
|
71
|
+
#
|
72
|
+
# @param title [String] The title of the show.
|
73
|
+
# @param options [Hash] The optional parameters.
|
74
|
+
# @return [Hash]
|
75
|
+
def build_params(title, options)
|
76
|
+
params = { t: title }
|
77
|
+
params[:plot] = options[:plot] if options[:plot]
|
78
|
+
params[:y] = options[:year] if options[:year]
|
79
|
+
params
|
80
|
+
end
|
81
|
+
|
60
82
|
# Performs a get request.
|
61
83
|
#
|
62
84
|
# @param url [String] The url to perform the get request to.
|
data/lib/omdbapi/version.rb
CHANGED
data/omdbapi.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["caseyscarborough@gmail.com"]
|
11
11
|
spec.description = '[In Progress] A wrapper for the omdbapi.com movie API.'
|
12
12
|
spec.summary = 'This gem provides easy access for information retrieval from omdbapi.com.'
|
13
|
-
spec.homepage = "
|
13
|
+
spec.homepage = "http://caseyscarborough.github.io/omdbapi"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
data/spec/omdbapi/client_spec.rb
CHANGED
@@ -25,6 +25,24 @@ describe OMDB::Client do
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
describe 'with the year parameter' do
|
29
|
+
let(:title1) { OMDB.title('True Grit') }
|
30
|
+
let(:title2) { OMDB.title('True Grit', year: '1969') }
|
31
|
+
|
32
|
+
it 'should not be the same title' do
|
33
|
+
title1.should_not eq(title2)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe 'with the plot parameter' do
|
38
|
+
let(:title1) { OMDB.title('Game of Thrones') }
|
39
|
+
let(:title2) { OMDB.title('Game of Thrones', plot: 'full') }
|
40
|
+
|
41
|
+
it 'should have different plots' do
|
42
|
+
title1.plot.should_not eq(title2.plot)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
28
46
|
describe 'with a movie that doesn''t exist' do
|
29
47
|
let(:title) { OMDB.title('lsdfoweirjrpwef323423dsfkip') }
|
30
48
|
|
@@ -73,10 +91,10 @@ describe OMDB::Client do
|
|
73
91
|
end
|
74
92
|
end
|
75
93
|
|
76
|
-
describe '
|
94
|
+
describe 'search' do
|
77
95
|
|
78
96
|
describe 'with search results' do
|
79
|
-
let(:results) { OMDB.
|
97
|
+
let(:results) { OMDB.search('Star Wars') }
|
80
98
|
|
81
99
|
it 'should return an array' do
|
82
100
|
results.should be_instance_of Array
|
@@ -87,8 +105,20 @@ describe OMDB::Client do
|
|
87
105
|
end
|
88
106
|
end
|
89
107
|
|
108
|
+
describe 'with a single search result' do
|
109
|
+
let(:result) { OMDB.search('The Star Wars Holiday Special') }
|
110
|
+
|
111
|
+
it 'should return a hash of the title' do
|
112
|
+
result.should be_instance_of Hash
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'should have a title' do
|
116
|
+
result.title.should eq('The Star Wars Holiday Special')
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
90
120
|
describe 'with no search results' do
|
91
|
-
let(:results) { OMDB.
|
121
|
+
let(:results) { OMDB.search('lsdfoweirjrpwef323423dsfkip') }
|
92
122
|
|
93
123
|
it 'should return a hash' do
|
94
124
|
results.should be_instance_of Hash
|
@@ -102,6 +132,12 @@ describe OMDB::Client do
|
|
102
132
|
results.error.should be_instance_of String
|
103
133
|
end
|
104
134
|
end
|
135
|
+
|
136
|
+
describe 'should be aliased to find' do
|
137
|
+
it 'should be the same method' do
|
138
|
+
OMDB.search('Star Wars').should eq(OMDB.find('Star Wars'))
|
139
|
+
end
|
140
|
+
end
|
105
141
|
end
|
106
142
|
|
107
143
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omdbapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Casey Scarborough
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -87,7 +87,7 @@ files:
|
|
87
87
|
- spec/omdbapi/client_spec.rb
|
88
88
|
- spec/omdbapi/default_spec.rb
|
89
89
|
- spec/spec_helper.rb
|
90
|
-
homepage:
|
90
|
+
homepage: http://caseyscarborough.github.io/omdbapi
|
91
91
|
licenses:
|
92
92
|
- MIT
|
93
93
|
metadata: {}
|
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
107
|
version: '0'
|
108
108
|
requirements: []
|
109
109
|
rubyforge_project:
|
110
|
-
rubygems_version: 2.0.
|
110
|
+
rubygems_version: 2.0.5
|
111
111
|
signing_key:
|
112
112
|
specification_version: 4
|
113
113
|
summary: This gem provides easy access for information retrieval from omdbapi.com.
|