imdb 0.1.0 → 0.2.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.
- data/History.txt +5 -0
- data/Manifest.txt +3 -0
- data/bin/imdb +10 -0
- data/lib/imdb.rb +1 -1
- data/lib/imdb/cli.rb +100 -0
- data/lib/imdb/movie.rb +1 -1
- data/spec/imdb_cli_spec.rb +34 -0
- metadata +7 -4
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -2,13 +2,16 @@ History.txt
|
|
2
2
|
Manifest.txt
|
3
3
|
README.rdoc
|
4
4
|
Rakefile
|
5
|
+
bin/imdb
|
5
6
|
lib/imdb.rb
|
7
|
+
lib/imdb/cli.rb
|
6
8
|
lib/imdb/movie.rb
|
7
9
|
lib/imdb/search.rb
|
8
10
|
lib/imdb/string_extensions.rb
|
9
11
|
script/console
|
10
12
|
script/destroy
|
11
13
|
script/generate
|
14
|
+
spec/imdb_cli_spec.rb
|
12
15
|
spec/imdb_movie_spec.rb
|
13
16
|
spec/imdb_search_spec.rb
|
14
17
|
spec/spec.opts
|
data/bin/imdb
ADDED
data/lib/imdb.rb
CHANGED
data/lib/imdb/cli.rb
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
|
3
|
+
module Imdb
|
4
|
+
class CLI
|
5
|
+
|
6
|
+
# Run the imdb command
|
7
|
+
#
|
8
|
+
# Searching
|
9
|
+
#
|
10
|
+
# imdb Star Trek
|
11
|
+
#
|
12
|
+
# Get a movie, supply a 7 digit IMDB id
|
13
|
+
#
|
14
|
+
# imdb 0095016
|
15
|
+
#
|
16
|
+
def self.execute(stdout, arguments=[])
|
17
|
+
|
18
|
+
@stdout = stdout
|
19
|
+
|
20
|
+
options = {
|
21
|
+
}
|
22
|
+
mandatory_options = %w( )
|
23
|
+
|
24
|
+
parser = OptionParser.new do |opts|
|
25
|
+
opts.banner = <<-BANNER.gsub(/^ /,'')
|
26
|
+
IMDB #{Imdb::VERSION}
|
27
|
+
|
28
|
+
Usage: #{File.basename($0)} Search Query
|
29
|
+
#{File.basename($0)} 0095016
|
30
|
+
|
31
|
+
BANNER
|
32
|
+
opts.separator ""
|
33
|
+
opts.on("-v", "--version",
|
34
|
+
"Show the current version.") { stdout.puts "IMDB #{Imdb::VERSION}"; exit }
|
35
|
+
opts.on("-h", "--help",
|
36
|
+
"Show this help message.") { stdout.puts opts; exit }
|
37
|
+
opts.parse!(arguments)
|
38
|
+
|
39
|
+
if mandatory_options && mandatory_options.find { |option| options[option.to_sym].nil? }
|
40
|
+
stdout.puts opts; exit
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
query = arguments.join(" ").strip
|
45
|
+
exit if query.blank?
|
46
|
+
|
47
|
+
movie, search = nil, nil
|
48
|
+
|
49
|
+
# If ID, fetch movie
|
50
|
+
if query.match(/\d\d\d\d\d\d\d/)
|
51
|
+
fetch_movie(query)
|
52
|
+
else
|
53
|
+
search_movie(query)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.fetch_movie(imdb_id)
|
58
|
+
@stdout.puts ">> Fetching movie #{imdb_id}"
|
59
|
+
|
60
|
+
movie = Imdb::Movie.new(imdb_id)
|
61
|
+
|
62
|
+
display_movie_details(movie)
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.search_movie(query)
|
66
|
+
@stdout.puts ">> Searching for \"#{query}\""
|
67
|
+
|
68
|
+
search = Imdb::Search.new(query)
|
69
|
+
|
70
|
+
if search.movies.size == 1
|
71
|
+
display_movie_details(search.movies.first)
|
72
|
+
else
|
73
|
+
display_search_results(search.movies)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.display_movie_details(movie)
|
78
|
+
@stdout.puts
|
79
|
+
@stdout.puts "#{movie.title} (#{movie.year})"
|
80
|
+
@stdout.puts "=" * 72
|
81
|
+
@stdout.puts "Rating: #{movie.rating}"
|
82
|
+
@stdout.puts "Duration: #{movie.length} minutes"
|
83
|
+
@stdout.puts "Directed by: #{movie.director}"
|
84
|
+
@stdout.puts "Cast by: #{movie.cast_members[0..4].join(", ")}"
|
85
|
+
@stdout.puts "Genres: #{movie.genres.join(", ")}"
|
86
|
+
@stdout.puts "#{movie.plot}"
|
87
|
+
@stdout.puts "=" * 72
|
88
|
+
@stdout.puts
|
89
|
+
end
|
90
|
+
|
91
|
+
def self.display_search_results(movies = [])
|
92
|
+
movies = movies[0..9] # limit to ten top hits
|
93
|
+
|
94
|
+
movies.each do |movie|
|
95
|
+
@stdout.puts " > #{movie.id} | #{movie.title}"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
100
|
+
end
|
data/lib/imdb/movie.rb
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
require 'imdb/cli'
|
3
|
+
|
4
|
+
describe Imdb::CLI, "execute" do
|
5
|
+
|
6
|
+
describe "yield search results" do
|
7
|
+
before(:each) do
|
8
|
+
@stdout_io = StringIO.new
|
9
|
+
Imdb::CLI.execute(@stdout_io, ["Star Trek"])
|
10
|
+
@stdout_io.rewind
|
11
|
+
@stdout = @stdout_io.read
|
12
|
+
end
|
13
|
+
|
14
|
+
it "report data" do
|
15
|
+
@stdout.should =~ /0060028/
|
16
|
+
@stdout.should =~ /Star Trek/
|
17
|
+
@stdout.should =~ /1966/
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "yield one movie" do
|
22
|
+
before(:each) do
|
23
|
+
@stdout_io = StringIO.new
|
24
|
+
Imdb::CLI.execute(@stdout_io, ["0117731"])
|
25
|
+
@stdout_io.rewind
|
26
|
+
@stdout = @stdout_io.read
|
27
|
+
end
|
28
|
+
|
29
|
+
it "report data" do
|
30
|
+
@stdout.should =~ /Star Trek\: First Contact \(1996\)/
|
31
|
+
@stdout.should =~ /Jonathan Frakes/
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: imdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ariejan de Vroom
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-06-
|
12
|
+
date: 2009-06-04 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -55,8 +55,8 @@ dependencies:
|
|
55
55
|
description: This packages allows you to easy access publicly available data from IMDB.
|
56
56
|
email:
|
57
57
|
- ariejan@ariejan.net
|
58
|
-
executables:
|
59
|
-
|
58
|
+
executables:
|
59
|
+
- imdb
|
60
60
|
extensions: []
|
61
61
|
|
62
62
|
extra_rdoc_files:
|
@@ -68,13 +68,16 @@ files:
|
|
68
68
|
- Manifest.txt
|
69
69
|
- README.rdoc
|
70
70
|
- Rakefile
|
71
|
+
- bin/imdb
|
71
72
|
- lib/imdb.rb
|
73
|
+
- lib/imdb/cli.rb
|
72
74
|
- lib/imdb/movie.rb
|
73
75
|
- lib/imdb/search.rb
|
74
76
|
- lib/imdb/string_extensions.rb
|
75
77
|
- script/console
|
76
78
|
- script/destroy
|
77
79
|
- script/generate
|
80
|
+
- spec/imdb_cli_spec.rb
|
78
81
|
- spec/imdb_movie_spec.rb
|
79
82
|
- spec/imdb_search_spec.rb
|
80
83
|
- spec/spec.opts
|