ruby-imdb 0.6.0 → 0.7.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/Rakefile +1 -0
- data/VERSION +1 -1
- data/lib/imdb.rb +1 -1
- data/lib/imdb/movie.rb +48 -11
- data/lib/imdb/person.rb +0 -4
- data/lib/imdb/skeleton.rb +2 -5
- data/ruby-imdb.gemspec +5 -2
- metadata +17 -3
data/Rakefile
CHANGED
@@ -14,6 +14,7 @@ begin
|
|
14
14
|
s.add_dependency "json", ">= 1.4.3"
|
15
15
|
s.add_dependency "mongo", ">= 1.0.1"
|
16
16
|
s.add_dependency "mongo_mapper", ">= 0.7.5"
|
17
|
+
s.add_dependency "chronic", ">= 0.2.3"
|
17
18
|
end
|
18
19
|
rescue LoadError
|
19
20
|
puts "Jeweler not available. Install it with: gem install jeweler"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.7.0
|
data/lib/imdb.rb
CHANGED
data/lib/imdb/movie.rb
CHANGED
@@ -8,11 +8,16 @@ module IMDB
|
|
8
8
|
|
9
9
|
|
10
10
|
def initialize(id_of)
|
11
|
+
# !!!DON'T FORGET DEFINE NEW METHODS IN SUPER!!!
|
11
12
|
super("Movie", {:imdb_id => String,
|
12
13
|
:poster => String,
|
13
14
|
:title => String,
|
14
15
|
:cast => Array,
|
15
|
-
:photos => Array
|
16
|
+
:photos => Array,
|
17
|
+
:release_date => String,
|
18
|
+
:director => String,
|
19
|
+
:genres => Array,
|
20
|
+
:writers => Array}, [:imdb_id])
|
16
21
|
|
17
22
|
@imdb_id = id_of
|
18
23
|
|
@@ -36,9 +41,9 @@ module IMDB
|
|
36
41
|
def cast
|
37
42
|
doc.search("table.cast tr").map do |link|
|
38
43
|
picture = link.children[0].search("img")[0]["src"] rescue nil
|
39
|
-
name = link.children[1].content rescue nil
|
40
|
-
profile_id = link.children[1].search('a[@href^="/name/nm"]').first["href"]
|
41
|
-
char = link.children[3].content rescue nil
|
44
|
+
name = link.children[1].content.strip rescue nil
|
45
|
+
profile_id = link.children[1].search('a[@href^="/name/nm"]').first["href"] rescue nil
|
46
|
+
char = link.children[3].content.strip rescue nil
|
42
47
|
IMDB::Person.new(@imdb_id, name, char, profile_id, picture) unless name.nil? and char.nil? and picture.nil? and profile_id.nil?
|
43
48
|
end
|
44
49
|
end
|
@@ -46,21 +51,53 @@ module IMDB
|
|
46
51
|
# Get movie photos
|
47
52
|
# @return [Array]
|
48
53
|
def photos
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
img["src"]
|
53
|
-
end
|
54
|
+
doc.search("img").map { |img|
|
55
|
+
unless img["src"][/_CR/].nil?
|
56
|
+
img["src"]
|
54
57
|
end
|
58
|
+
}.compact
|
59
|
+
rescue
|
60
|
+
nil
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
# Get release date
|
65
|
+
# @return [String]
|
66
|
+
def release_date
|
67
|
+
Date.parse(Chronic.parse(doc.xpath("//h5[contains(., 'Release Date')]/..").first.content[/^\d{1,2} \w+ \d{4}/]).strftime('%Y/%m/%d'))
|
68
|
+
rescue nil
|
69
|
+
end
|
70
|
+
|
71
|
+
# Get Director
|
72
|
+
# @return [String]
|
73
|
+
def director
|
74
|
+
doc.xpath("//h5[contains(., 'Director')]/..").at("a").content rescue nil
|
75
|
+
end
|
76
|
+
|
77
|
+
# Genre List
|
78
|
+
# @return [Array]
|
79
|
+
def genres
|
80
|
+
doc.xpath("//h5[contains(., 'Genre')]/..").search("a").map { |g|
|
81
|
+
g.content unless g.content =~ /See more/
|
82
|
+
}.compact
|
55
83
|
rescue
|
56
84
|
nil
|
57
|
-
|
85
|
+
end
|
86
|
+
|
87
|
+
# Writer List
|
88
|
+
# @return [Array]
|
89
|
+
def writers
|
90
|
+
doc.xpath("//a[@name='writers']/../../../..").search('a[@href^="/name/nm"]').map {|w|
|
91
|
+
name = w.content
|
92
|
+
profile = w['href']
|
93
|
+
IMDB::Person.new(@imdb_id, name, nil, profile, nil)
|
94
|
+
}
|
58
95
|
end
|
59
96
|
|
60
97
|
private
|
61
98
|
|
62
99
|
def doc
|
63
|
-
if caller[0] =~ /`([^']*)'/ and $1 == "cast"
|
100
|
+
if caller[0] =~ /`([^']*)'/ and ($1 == "cast" or $1 == "writers")
|
64
101
|
@doc = Nokogiri::HTML(open("#{@link}/fullcredits"))
|
65
102
|
else
|
66
103
|
@doc = Nokogiri::HTML(open("#{@link}"))
|
data/lib/imdb/person.rb
CHANGED
data/lib/imdb/skeleton.rb
CHANGED
@@ -3,10 +3,6 @@ module IMDB
|
|
3
3
|
class Skeleton
|
4
4
|
attr_accessor :model, :method_names
|
5
5
|
|
6
|
-
class << self
|
7
|
-
|
8
|
-
end
|
9
|
-
|
10
6
|
def initialize(model_name = "", method_names = {}, keys = [])
|
11
7
|
if IMDB::Configuration.caching
|
12
8
|
@model = Class.new do
|
@@ -23,6 +19,7 @@ module IMDB
|
|
23
19
|
alias_method old_meth, meth.to_sym
|
24
20
|
define_method meth do
|
25
21
|
k = keys.to_hash { |k| k; self.send(k) }
|
22
|
+
|
26
23
|
@db_query = self.model.first(k)
|
27
24
|
|
28
25
|
if @db_query.nil?
|
@@ -39,7 +36,7 @@ module IMDB
|
|
39
36
|
|c|
|
40
37
|
c.to_hash
|
41
38
|
}
|
42
|
-
@db_query[meth] = a
|
39
|
+
@db_query[meth] = a
|
43
40
|
else
|
44
41
|
@db_query[meth] = a
|
45
42
|
end
|
data/ruby-imdb.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ruby-imdb}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.7.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Yalcin Acikyildiz"]
|
12
|
-
s.date = %q{2010-05-
|
12
|
+
s.date = %q{2010-05-24}
|
13
13
|
s.description = %q{Ruby IMDB Parsing Library}
|
14
14
|
s.email = %q{yalcin@webliyacelebi.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -62,17 +62,20 @@ Gem::Specification.new do |s|
|
|
62
62
|
s.add_runtime_dependency(%q<json>, [">= 1.4.3"])
|
63
63
|
s.add_runtime_dependency(%q<mongo>, [">= 1.0.1"])
|
64
64
|
s.add_runtime_dependency(%q<mongo_mapper>, [">= 0.7.5"])
|
65
|
+
s.add_runtime_dependency(%q<chronic>, [">= 0.2.3"])
|
65
66
|
else
|
66
67
|
s.add_dependency(%q<nokogiri>, [">= 1.4.1"])
|
67
68
|
s.add_dependency(%q<json>, [">= 1.4.3"])
|
68
69
|
s.add_dependency(%q<mongo>, [">= 1.0.1"])
|
69
70
|
s.add_dependency(%q<mongo_mapper>, [">= 0.7.5"])
|
71
|
+
s.add_dependency(%q<chronic>, [">= 0.2.3"])
|
70
72
|
end
|
71
73
|
else
|
72
74
|
s.add_dependency(%q<nokogiri>, [">= 1.4.1"])
|
73
75
|
s.add_dependency(%q<json>, [">= 1.4.3"])
|
74
76
|
s.add_dependency(%q<mongo>, [">= 1.0.1"])
|
75
77
|
s.add_dependency(%q<mongo_mapper>, [">= 0.7.5"])
|
78
|
+
s.add_dependency(%q<chronic>, [">= 0.2.3"])
|
76
79
|
end
|
77
80
|
end
|
78
81
|
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 7
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.7.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Yalcin Acikyildiz
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-05-
|
17
|
+
date: 2010-05-24 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -73,6 +73,20 @@ dependencies:
|
|
73
73
|
version: 0.7.5
|
74
74
|
type: :runtime
|
75
75
|
version_requirements: *id004
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: chronic
|
78
|
+
prerelease: false
|
79
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
segments:
|
84
|
+
- 0
|
85
|
+
- 2
|
86
|
+
- 3
|
87
|
+
version: 0.2.3
|
88
|
+
type: :runtime
|
89
|
+
version_requirements: *id005
|
76
90
|
description: Ruby IMDB Parsing Library
|
77
91
|
email: yalcin@webliyacelebi.com
|
78
92
|
executables: []
|